chore: make gazelle run with go generate

This commit is contained in:
41666 2020-09-15 23:08:29 -04:00
parent 94eec4e10d
commit bb83575308
27 changed files with 370 additions and 482 deletions

View file

@ -2,6 +2,7 @@ load("@bazel_gazelle//:def.bzl", "gazelle")
load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary")
# gazelle:prefix github.com/roleypoly/roleypoly
# gazelle:exclude hack/**
gazelle(name = "gazelle")
exports_files(

View file

@ -19,12 +19,7 @@ def go_repositories():
sum = "h1:qet1QNfXsQxTZqLG4oE62mJzwPIB8+Tee4RNCL9ulrY=",
version = "v0.0.0-20151022065526-2efee857e7cf",
)
go_repository(
name = "com_github_andybalholm_cascadia",
importpath = "github.com/andybalholm/cascadia",
sum = "h1:BuuO6sSfQNFRu1LppgbD25Hr2vLYW25JvxHs5zzsLTo=",
version = "v1.1.0",
)
go_repository(
name = "com_github_armon_consul_api",
importpath = "github.com/armon/consul-api",
@ -157,12 +152,7 @@ def go_repositories():
sum = "h1:ds9HENceKzpGBgCRlkZNq6TqBIegwKcF3e5reuV9Z0M=",
version = "v0.4.3",
)
go_repository(
name = "com_github_facebookincubator_ent",
importpath = "github.com/facebookincubator/ent",
sum = "h1:Jht3vZio7eshMo7yaEZJ6LHk4oM8xUCxKNNDj/Kb4fE=",
version = "v0.3.0",
)
go_repository(
name = "com_github_fsnotify_fsnotify",
importpath = "github.com/fsnotify/fsnotify",
@ -523,24 +513,14 @@ def go_repositories():
sum = "h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA=",
version = "v0.7.1",
)
go_repository(
name = "com_github_puerkitobio_goquery",
importpath = "github.com/PuerkitoBio/goquery",
sum = "h1:PSPBGne8NIUWw+/7vFBV+kG2J/5MOjbzc7154OaKCSE=",
version = "v1.5.1",
)
go_repository(
name = "com_github_rogpeppe_fastuuid",
importpath = "github.com/rogpeppe/fastuuid",
sum = "h1:gu+uRPtBe88sKxUCEXRoeCvVG90TJmwhiqRpvdhQFng=",
version = "v0.0.0-20150106093220-6724a57986af",
)
go_repository(
name = "com_github_roleypoly_db",
importpath = "github.com/roleypoly/db",
sum = "h1:6As+Zl6a+YeIvpJXWOyDtxHTIP/kZdcYvSDrVkeJRLs=",
version = "v0.0.0-20200815123444-57c7f8a08f84",
)
go_repository(
name = "com_github_rs_cors",
importpath = "github.com/rs/cors",

3
go.mod
View file

@ -10,9 +10,8 @@ require (
github.com/improbable-eng/grpc-web v0.13.0
github.com/joho/godotenv v1.3.0
github.com/lampjaw/discordclient v0.0.0-20200914142129-e3b4f5747970
github.com/lib/pq v1.8.0
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect
github.com/roleypoly/db v0.0.0-20200815123444-57c7f8a08f84
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect
github.com/rs/cors v1.7.0 // indirect
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a // indirect
golang.org/x/net v0.0.0-20200904194848-62affa334b73 // indirect

21
go.sum
View file

@ -1,13 +1,10 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60=
github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
@ -37,8 +34,6 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/facebook/ent v0.4.3 h1:ds9HENceKzpGBgCRlkZNq6TqBIegwKcF3e5reuV9Z0M=
github.com/facebook/ent v0.4.3/go.mod h1:4e/LKv3FFjj/867jPJYCxycZg0aGeEIgkiQ8jv2j6iQ=
github.com/facebookincubator/ent v0.3.0 h1:Jht3vZio7eshMo7yaEZJ6LHk4oM8xUCxKNNDj/Kb4fE=
github.com/facebookincubator/ent v0.3.0/go.mod h1:0PIsj0mNbnwufO/bqBiQmA1WEdxcYkU+ONxf7PRM9q4=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/go-bindata/go-bindata v1.0.1-0.20190711162640-ee3c2418e368/go.mod h1:7xCgX1lzlrXPHkfvn3EhumqHkmSlzt8at9q7v0ax19c=
@ -78,8 +73,6 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q=
@ -116,7 +109,6 @@ github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czP
github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
github.com/mattn/go-sqlite3 v1.14.3/go.mod h1:WVKg1VTActs4Qso6iwGbiFih2UIHo0ENGwNd0Lj+XmI=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
@ -150,8 +142,6 @@ github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
github.com/roleypoly/db v0.0.0-20200815123444-57c7f8a08f84 h1:6As+Zl6a+YeIvpJXWOyDtxHTIP/kZdcYvSDrVkeJRLs=
github.com/roleypoly/db v0.0.0-20200815123444-57c7f8a08f84/go.mod h1:dq8nCSix491Pvgq84GcbSgrLNKU8AwTNz3wCSHvTvss=
github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik=
github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
@ -180,7 +170,6 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1
github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
@ -202,10 +191,8 @@ golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvx
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190409202823-959b441ac422 h1:QzoH/1pFpZguR8NrRHLcO6jKqfv2zpuSqZLgdm7ZmjI=
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@ -216,9 +203,6 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200904194848-62affa334b73 h1:MXfv8rhZWmFeqX3GNZRsd6vOLoaCHjYEX3qkRo3YBUA=
golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
@ -228,8 +212,6 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@ -256,8 +238,6 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200615222825-6aa8f57aacd9 h1:cwgUY+1ja2qxWb2dyaCoixaA66WGWmrijSlxaM+JM/g=
golang.org/x/tools v0.0.0-20200615222825-6aa8f57aacd9/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200904185747-39188db58858 h1:xLt+iB5ksWcZVxqc+g9K41ZHy+6MKWfXCDsjSThnsPA=
golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@ -299,7 +279,6 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLks
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U=
gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=

7
hack/generate.go Normal file
View file

@ -0,0 +1,7 @@
package hacknotused
//go:generate sh gazelle.sh
func noop() {
}

View file

@ -1,23 +0,0 @@
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
go_library(
name = "db-tool_lib",
srcs = [
"import.go",
"migrate.go",
],
importpath = "github.com/roleypoly/roleypoly/src/db/cmd/db-tool",
visibility = ["//visibility:private"],
deps = [
"@com_github_lib_pq//:pq",
"@com_github_roleypoly_db//ent",
"@com_github_roleypoly_db//ent/migrate",
"@com_github_roleypoly_db//ent/schema",
],
)
go_binary(
name = "db-tool",
embed = [":db-tool_lib"],
visibility = ["//visibility:public"],
)

View file

@ -1,59 +0,0 @@
# Accept the Go version for the image to be set as a build argument.
# Default to Go 1.12
ARG GO_VERSION=1.13
# First stage: build the executable.
FROM --platform=$BUILDPLATFORM golang:${GO_VERSION}-alpine AS builder
ARG GOPROXY
ARG BUILDPLATFORM
ARG TARGETARCH
ARG TARGETOS
ENV GOPROXY ${GOPROXY}
ENV GOOS ${TARGETOS}
ENV GOARCH ${TARGETARCH}
# Create the user and group files that will be used in the running container to
# run the process as an unprivileged user.
RUN mkdir /user && \
echo 'nobody:x:65534:65534:nobody:/:' > /user/passwd && \
echo 'nobody:x:65534:' > /user/group
# Install the Certificate-Authority certificates for the app to be able to make
# calls to HTTPS endpoints.
# Git is required for fetching the dependencies.
RUN apk add --no-cache ca-certificates git
# Set the working directory outside $GOPATH to enable the support for modules.
WORKDIR /src
# Fetch dependencies first; they are less susceptible to change on every build
# and will therefore be cached for speeding up the next build
COPY ./go.mod ./go.sum ./
RUN go mod download
# Import the code from the context.
COPY ./ ./
# Build the executable to `/app`. Mark the build as statically linked.
RUN CGO_ENABLED=0 go build \
-installsuffix 'static' \
-o /app ./cmd/db-tool
# Final stage: the running container.
FROM scratch AS final
# Import the user and group files from the first stage.
COPY --from=builder /user/group /user/passwd /etc/
# Import the Certificate-Authority certificates for enabling HTTPS.
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
# Import the compiled executable from the first stage.
COPY --from=builder /app /app
# Perform any further action as an unprivileged user.
USER nobody:nobody
# Run the compiled binary.
ENTRYPOINT ["/app"]

View file

@ -1,14 +0,0 @@
version: '2'
services:
pg:
image: postgres:11-alpine
ports:
- 5432
volumes:
- './.data/pg:/var/lib/postgresql/data'
environment:
POSTGRES_PASSWORD: 19216801
POSTGRES_DB: roleypoly
POSTGRES_USER: roleypoly
POSTGRES_INITDB_ARGS: -A trust

View file

@ -1,104 +0,0 @@
package main
import (
"context"
"database/sql"
"log"
"os"
"time"
ent "github.com/roleypoly/db/ent"
"github.com/roleypoly/db/ent/schema"
)
type v1Category struct {
ID string `json:"id"`
Name string `json:"name"`
Roles []string `json:"roles"`
Hidden bool `json:"hidden"`
Type string `json:"type"`
Position int `json:"position"`
}
type v1Server struct {
ID string `json:"id"`
Categories []v1Category `json:"categories"`
Message string `json:"message"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
func fromCategories(cats []v1Category) []schema.Category {
out := make([]schema.Category, len(cats))
for i, cat := range cats {
out[i] = schema.Category{
ID: cat.ID,
Name: cat.Name,
Hidden: cat.Hidden,
Type: cat.Type,
Position: cat.Position,
Roles: cat.Roles,
}
}
return out
}
func runImport(newDB *ent.Client, oldDB *sql.DB) {
ctx := ent.NewContext(context.Background(), newDB)
tx, err := newDB.Tx(ctx)
oldServers, err := oldDB.Query(`SELECT * FROM servers`)
if err != nil {
tx.Rollback()
log.Fatalln("query error", err)
}
defer oldServers.Close()
for oldServers.Next() == true {
var data v1Server
log.Printf("importing %s\n", data.ID)
err = oldServers.Scan(&data)
if err != nil {
tx.Rollback()
log.Fatalln("data scan error", err)
}
guild := tx.Guild.Create()
guild.SetMessage(data.Message).
SetSnowflake(data.ID).
SetCategories(fromCategories(data.Categories)).
SetCreateTime(data.CreatedAt)
ctx := ent.NewContext(context.Background(), newDB)
guild.SaveX(ctx)
}
err = tx.Commit()
if err != nil {
log.Fatalln("tx commit error", err)
}
}
func importFromV1() {
log.Println("Import from V1 starting.")
client, err := ent.Open("postgres", os.Getenv("DB_URL"))
if err != nil {
log.Fatalln(err)
}
defer client.Close()
oldClient, err := sql.Open("postgres", os.Getenv("OLD_DB_URL"))
if err != nil {
log.Fatalln(err)
}
defer oldClient.Close()
runImport(client, oldClient)
log.Println("Import from V1 finished.")
}

View file

@ -1,58 +0,0 @@
package main
import (
"context"
"log"
"os"
"time"
_ "github.com/lib/pq"
ent "github.com/roleypoly/db/ent"
"github.com/roleypoly/db/ent/migrate"
)
func retryMigrate(client *ent.Client) {
for i := 0; i < 10; i++ {
err := client.Schema.Create(context.Background(), migrate.WithGlobalUniqueID(true))
if err == nil {
return
}
log.Println("Migration failed --", err)
time.Sleep(2 * time.Second)
}
log.Fatalln("Migration failed after 20 seconds.")
return
}
func doMigrate() {
log.Println("Migrations starting.")
client, err := ent.Open("postgres", os.Getenv("DB_URL"))
if err != nil {
log.Fatalln(err)
}
defer client.Close()
retryMigrate(client)
log.Println("Migrations finished.")
}
func main() {
tool := os.Args[1]
if tool == "" {
tool = "migrate"
}
switch tool {
case "migrate":
doMigrate()
case "import":
importFromV1()
default:
log.Fatalln("supported tools: migrate, import")
}
}

View file

@ -42,6 +42,16 @@ var Columns = []string{
FieldExpiresAt,
}
// ValidColumn reports if the column name is valid (part of the table columns).
func ValidColumn(column string) bool {
for i := range Columns {
if column == Columns[i] {
return true
}
}
return false
}
var (
// DefaultCreateTime holds the default value on creation for the create_time field.
DefaultCreateTime func() time.Time

View file

@ -93,14 +93,15 @@ func (cc *ChallengeCreate) Mutation() *ChallengeMutation {
// Save creates the Challenge in the database.
func (cc *ChallengeCreate) Save(ctx context.Context) (*Challenge, error) {
if err := cc.preSave(); err != nil {
return nil, err
}
var (
err error
node *Challenge
)
cc.defaults()
if len(cc.hooks) == 0 {
if err = cc.check(); err != nil {
return nil, err
}
node, err = cc.sqlSave(ctx)
} else {
var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) {
@ -108,6 +109,9 @@ func (cc *ChallengeCreate) Save(ctx context.Context) (*Challenge, error) {
if !ok {
return nil, fmt.Errorf("unexpected mutation type %T", m)
}
if err = cc.check(); err != nil {
return nil, err
}
cc.mutation = mutation
node, err = cc.sqlSave(ctx)
mutation.done = true
@ -132,7 +136,8 @@ func (cc *ChallengeCreate) SaveX(ctx context.Context) *Challenge {
return v
}
func (cc *ChallengeCreate) preSave() error {
// defaults sets the default values of the builder before save.
func (cc *ChallengeCreate) defaults() {
if _, ok := cc.mutation.CreateTime(); !ok {
v := challenge.DefaultCreateTime()
cc.mutation.SetCreateTime(v)
@ -141,6 +146,20 @@ func (cc *ChallengeCreate) preSave() error {
v := challenge.DefaultUpdateTime()
cc.mutation.SetUpdateTime(v)
}
if _, ok := cc.mutation.ExpiresAt(); !ok {
v := challenge.DefaultExpiresAt()
cc.mutation.SetExpiresAt(v)
}
}
// check runs all checks and user-defined validators on the builder.
func (cc *ChallengeCreate) check() error {
if _, ok := cc.mutation.CreateTime(); !ok {
return &ValidationError{Name: "create_time", err: errors.New("ent: missing required field \"create_time\"")}
}
if _, ok := cc.mutation.UpdateTime(); !ok {
return &ValidationError{Name: "update_time", err: errors.New("ent: missing required field \"update_time\"")}
}
if _, ok := cc.mutation.ChallengeID(); !ok {
return &ValidationError{Name: "challenge_id", err: errors.New("ent: missing required field \"challenge_id\"")}
}
@ -154,14 +173,13 @@ func (cc *ChallengeCreate) preSave() error {
return &ValidationError{Name: "magic", err: errors.New("ent: missing required field \"magic\"")}
}
if _, ok := cc.mutation.ExpiresAt(); !ok {
v := challenge.DefaultExpiresAt()
cc.mutation.SetExpiresAt(v)
return &ValidationError{Name: "expires_at", err: errors.New("ent: missing required field \"expires_at\"")}
}
return nil
}
func (cc *ChallengeCreate) sqlSave(ctx context.Context) (*Challenge, error) {
c, _spec := cc.createSpec()
_node, _spec := cc.createSpec()
if err := sqlgraph.CreateNode(ctx, cc.driver, _spec); err != nil {
if cerr, ok := isSQLConstraintError(err); ok {
err = cerr
@ -169,13 +187,13 @@ func (cc *ChallengeCreate) sqlSave(ctx context.Context) (*Challenge, error) {
return nil, err
}
id := _spec.ID.Value.(int64)
c.ID = int(id)
return c, nil
_node.ID = int(id)
return _node, nil
}
func (cc *ChallengeCreate) createSpec() (*Challenge, *sqlgraph.CreateSpec) {
var (
c = &Challenge{config: cc.config}
_node = &Challenge{config: cc.config}
_spec = &sqlgraph.CreateSpec{
Table: challenge.Table,
ID: &sqlgraph.FieldSpec{
@ -190,7 +208,7 @@ func (cc *ChallengeCreate) createSpec() (*Challenge, *sqlgraph.CreateSpec) {
Value: value,
Column: challenge.FieldCreateTime,
})
c.CreateTime = value
_node.CreateTime = value
}
if value, ok := cc.mutation.UpdateTime(); ok {
_spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{
@ -198,7 +216,7 @@ func (cc *ChallengeCreate) createSpec() (*Challenge, *sqlgraph.CreateSpec) {
Value: value,
Column: challenge.FieldUpdateTime,
})
c.UpdateTime = value
_node.UpdateTime = value
}
if value, ok := cc.mutation.ChallengeID(); ok {
_spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{
@ -206,7 +224,7 @@ func (cc *ChallengeCreate) createSpec() (*Challenge, *sqlgraph.CreateSpec) {
Value: value,
Column: challenge.FieldChallengeID,
})
c.ChallengeID = value
_node.ChallengeID = value
}
if value, ok := cc.mutation.UserID(); ok {
_spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{
@ -214,7 +232,7 @@ func (cc *ChallengeCreate) createSpec() (*Challenge, *sqlgraph.CreateSpec) {
Value: value,
Column: challenge.FieldUserID,
})
c.UserID = value
_node.UserID = value
}
if value, ok := cc.mutation.Human(); ok {
_spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{
@ -222,7 +240,7 @@ func (cc *ChallengeCreate) createSpec() (*Challenge, *sqlgraph.CreateSpec) {
Value: value,
Column: challenge.FieldHuman,
})
c.Human = value
_node.Human = value
}
if value, ok := cc.mutation.Magic(); ok {
_spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{
@ -230,7 +248,7 @@ func (cc *ChallengeCreate) createSpec() (*Challenge, *sqlgraph.CreateSpec) {
Value: value,
Column: challenge.FieldMagic,
})
c.Magic = value
_node.Magic = value
}
if value, ok := cc.mutation.ExpiresAt(); ok {
_spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{
@ -238,9 +256,9 @@ func (cc *ChallengeCreate) createSpec() (*Challenge, *sqlgraph.CreateSpec) {
Value: value,
Column: challenge.FieldExpiresAt,
})
c.ExpiresAt = value
_node.ExpiresAt = value
}
return c, _spec
return _node, _spec
}
// ChallengeCreateBulk is the builder for creating a bulk of Challenge entities.
@ -257,14 +275,15 @@ func (ccb *ChallengeCreateBulk) Save(ctx context.Context) ([]*Challenge, error)
for i := range ccb.builders {
func(i int, root context.Context) {
builder := ccb.builders[i]
builder.defaults()
var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) {
if err := builder.preSave(); err != nil {
return nil, err
}
mutation, ok := m.(*ChallengeMutation)
if !ok {
return nil, fmt.Errorf("unexpected mutation type %T", m)
}
if err := builder.check(); err != nil {
return nil, err
}
builder.mutation = mutation
nodes[i], specs[i] = builder.createSpec()
var err error

View file

@ -54,23 +54,23 @@ func (cq *ChallengeQuery) Order(o ...OrderFunc) *ChallengeQuery {
// First returns the first Challenge entity in the query. Returns *NotFoundError when no challenge was found.
func (cq *ChallengeQuery) First(ctx context.Context) (*Challenge, error) {
cs, err := cq.Limit(1).All(ctx)
nodes, err := cq.Limit(1).All(ctx)
if err != nil {
return nil, err
}
if len(cs) == 0 {
if len(nodes) == 0 {
return nil, &NotFoundError{challenge.Label}
}
return cs[0], nil
return nodes[0], nil
}
// FirstX is like First, but panics if an error occurs.
func (cq *ChallengeQuery) FirstX(ctx context.Context) *Challenge {
c, err := cq.First(ctx)
node, err := cq.First(ctx)
if err != nil && !IsNotFound(err) {
panic(err)
}
return c
return node
}
// FirstID returns the first Challenge id in the query. Returns *NotFoundError when no id was found.
@ -97,13 +97,13 @@ func (cq *ChallengeQuery) FirstXID(ctx context.Context) int {
// Only returns the only Challenge entity in the query, returns an error if not exactly one entity was returned.
func (cq *ChallengeQuery) Only(ctx context.Context) (*Challenge, error) {
cs, err := cq.Limit(2).All(ctx)
nodes, err := cq.Limit(2).All(ctx)
if err != nil {
return nil, err
}
switch len(cs) {
switch len(nodes) {
case 1:
return cs[0], nil
return nodes[0], nil
case 0:
return nil, &NotFoundError{challenge.Label}
default:
@ -113,11 +113,11 @@ func (cq *ChallengeQuery) Only(ctx context.Context) (*Challenge, error) {
// OnlyX is like Only, but panics if an error occurs.
func (cq *ChallengeQuery) OnlyX(ctx context.Context) *Challenge {
c, err := cq.Only(ctx)
node, err := cq.Only(ctx)
if err != nil {
panic(err)
}
return c
return node
}
// OnlyID returns the only Challenge id in the query, returns an error if not exactly one id was returned.
@ -156,11 +156,11 @@ func (cq *ChallengeQuery) All(ctx context.Context) ([]*Challenge, error) {
// AllX is like All, but panics if an error occurs.
func (cq *ChallengeQuery) AllX(ctx context.Context) []*Challenge {
cs, err := cq.All(ctx)
nodes, err := cq.All(ctx)
if err != nil {
panic(err)
}
return cs
return nodes
}
// IDs executes the query and returns a list of Challenge ids.
@ -362,7 +362,7 @@ func (cq *ChallengeQuery) querySpec() *sqlgraph.QuerySpec {
if ps := cq.order; len(ps) > 0 {
_spec.Order = func(selector *sql.Selector) {
for i := range ps {
ps[i](selector)
ps[i](selector, challenge.ValidColumn)
}
}
}
@ -381,7 +381,7 @@ func (cq *ChallengeQuery) sqlQuery() *sql.Selector {
p(selector)
}
for _, p := range cq.order {
p(selector)
p(selector, challenge.ValidColumn)
}
if offset := cq.offset; offset != nil {
// limit is mandatory for offset clause. We start
@ -616,8 +616,17 @@ func (cgb *ChallengeGroupBy) BoolX(ctx context.Context) bool {
}
func (cgb *ChallengeGroupBy) sqlScan(ctx context.Context, v interface{}) error {
for _, f := range cgb.fields {
if !challenge.ValidColumn(f) {
return &ValidationError{Name: f, err: fmt.Errorf("invalid field %q for group-by", f)}
}
}
selector := cgb.sqlQuery()
if err := selector.Err(); err != nil {
return err
}
rows := &sql.Rows{}
query, args := cgb.sqlQuery().Query()
query, args := selector.Query()
if err := cgb.driver.Query(ctx, query, args, rows); err != nil {
return err
}
@ -630,7 +639,7 @@ func (cgb *ChallengeGroupBy) sqlQuery() *sql.Selector {
columns := make([]string, 0, len(cgb.fields)+len(cgb.fns))
columns = append(columns, cgb.fields...)
for _, fn := range cgb.fns {
columns = append(columns, fn(selector))
columns = append(columns, fn(selector, challenge.ValidColumn))
}
return selector.Select(columns...).GroupBy(cgb.fields...)
}
@ -850,6 +859,11 @@ func (cs *ChallengeSelect) BoolX(ctx context.Context) bool {
}
func (cs *ChallengeSelect) sqlScan(ctx context.Context, v interface{}) error {
for _, f := range cs.fields {
if !challenge.ValidColumn(f) {
return &ValidationError{Name: f, err: fmt.Errorf("invalid field %q for selection", f)}
}
}
rows := &sql.Rows{}
query, args := cs.sqlQuery().Query()
if err := cs.driver.Query(ctx, query, args, rows); err != nil {

View file

@ -34,14 +34,11 @@ func (cu *ChallengeUpdate) Mutation() *ChallengeMutation {
// Save executes the query and returns the number of rows/vertices matched by this operation.
func (cu *ChallengeUpdate) Save(ctx context.Context) (int, error) {
if _, ok := cu.mutation.UpdateTime(); !ok {
v := challenge.UpdateDefaultUpdateTime()
cu.mutation.SetUpdateTime(v)
}
var (
err error
affected int
)
cu.defaults()
if len(cu.hooks) == 0 {
affected, err = cu.sqlSave(ctx)
} else {
@ -87,6 +84,14 @@ func (cu *ChallengeUpdate) ExecX(ctx context.Context) {
}
}
// defaults sets the default values of the builder before save.
func (cu *ChallengeUpdate) defaults() {
if _, ok := cu.mutation.UpdateTime(); !ok {
v := challenge.UpdateDefaultUpdateTime()
cu.mutation.SetUpdateTime(v)
}
}
func (cu *ChallengeUpdate) sqlSave(ctx context.Context) (n int, err error) {
_spec := &sqlgraph.UpdateSpec{
Node: &sqlgraph.NodeSpec{
@ -137,14 +142,11 @@ func (cuo *ChallengeUpdateOne) Mutation() *ChallengeMutation {
// Save executes the query and returns the updated entity.
func (cuo *ChallengeUpdateOne) Save(ctx context.Context) (*Challenge, error) {
if _, ok := cuo.mutation.UpdateTime(); !ok {
v := challenge.UpdateDefaultUpdateTime()
cuo.mutation.SetUpdateTime(v)
}
var (
err error
node *Challenge
)
cuo.defaults()
if len(cuo.hooks) == 0 {
node, err = cuo.sqlSave(ctx)
} else {
@ -170,11 +172,11 @@ func (cuo *ChallengeUpdateOne) Save(ctx context.Context) (*Challenge, error) {
// SaveX is like Save, but panics if an error occurs.
func (cuo *ChallengeUpdateOne) SaveX(ctx context.Context) *Challenge {
c, err := cuo.Save(ctx)
node, err := cuo.Save(ctx)
if err != nil {
panic(err)
}
return c
return node
}
// Exec executes the query on the entity.
@ -190,7 +192,15 @@ func (cuo *ChallengeUpdateOne) ExecX(ctx context.Context) {
}
}
func (cuo *ChallengeUpdateOne) sqlSave(ctx context.Context) (c *Challenge, err error) {
// defaults sets the default values of the builder before save.
func (cuo *ChallengeUpdateOne) defaults() {
if _, ok := cuo.mutation.UpdateTime(); !ok {
v := challenge.UpdateDefaultUpdateTime()
cuo.mutation.SetUpdateTime(v)
}
}
func (cuo *ChallengeUpdateOne) sqlSave(ctx context.Context) (_node *Challenge, err error) {
_spec := &sqlgraph.UpdateSpec{
Node: &sqlgraph.NodeSpec{
Table: challenge.Table,
@ -213,9 +223,9 @@ func (cuo *ChallengeUpdateOne) sqlSave(ctx context.Context) (c *Challenge, err e
Column: challenge.FieldUpdateTime,
})
}
c = &Challenge{config: cuo.config}
_spec.Assign = c.assignValues
_spec.ScanValues = c.scanValues()
_node = &Challenge{config: cuo.config}
_spec.Assign = _node.assignValues
_spec.ScanValues = _node.scanValues()
if err = sqlgraph.UpdateNode(ctx, cuo.driver, _spec); err != nil {
if _, ok := err.(*sqlgraph.NotFoundError); ok {
err = &NotFoundError{challenge.Label}
@ -224,5 +234,5 @@ func (cuo *ChallengeUpdateOne) sqlSave(ctx context.Context) (c *Challenge, err e
}
return nil, err
}
return c, nil
return _node, nil
}

View file

@ -206,11 +206,11 @@ func (c *ChallengeClient) Get(ctx context.Context, id int) (*Challenge, error) {
// GetX is like Get, but panics if an error occurs.
func (c *ChallengeClient) GetX(ctx context.Context, id int) *Challenge {
ch, err := c.Get(ctx, id)
obj, err := c.Get(ctx, id)
if err != nil {
panic(err)
}
return ch
return obj
}
// Hooks returns the client hooks.
@ -294,11 +294,11 @@ func (c *GuildClient) Get(ctx context.Context, id int) (*Guild, error) {
// GetX is like Get, but panics if an error occurs.
func (c *GuildClient) GetX(ctx context.Context, id int) *Guild {
gu, err := c.Get(ctx, id)
obj, err := c.Get(ctx, id)
if err != nil {
panic(err)
}
return gu
return obj
}
// Hooks returns the client hooks.
@ -382,11 +382,11 @@ func (c *SessionClient) Get(ctx context.Context, id int) (*Session, error) {
// GetX is like Get, but panics if an error occurs.
func (c *SessionClient) GetX(ctx context.Context, id int) *Session {
s, err := c.Get(ctx, id)
obj, err := c.Get(ctx, id)
if err != nil {
panic(err)
}
return s
return obj
}
// Hooks returns the client hooks.

View file

@ -25,29 +25,37 @@ type (
MutateFunc = ent.MutateFunc
)
// OrderFunc applies an ordering on either graph traversal or sql selector.
type OrderFunc func(*sql.Selector)
// OrderFunc applies an ordering on the sql selector.
type OrderFunc func(*sql.Selector, func(string) bool)
// Asc applies the given fields in ASC order.
func Asc(fields ...string) OrderFunc {
return func(s *sql.Selector) {
return func(s *sql.Selector, check func(string) bool) {
for _, f := range fields {
s.OrderBy(sql.Asc(f))
if check(f) {
s.OrderBy(sql.Asc(f))
} else {
s.AddError(&ValidationError{Name: f, err: fmt.Errorf("invalid field %q for ordering", f)})
}
}
}
}
// Desc applies the given fields in DESC order.
func Desc(fields ...string) OrderFunc {
return func(s *sql.Selector) {
return func(s *sql.Selector, check func(string) bool) {
for _, f := range fields {
s.OrderBy(sql.Desc(f))
if check(f) {
s.OrderBy(sql.Desc(f))
} else {
s.AddError(&ValidationError{Name: f, err: fmt.Errorf("invalid field %q for ordering", f)})
}
}
}
}
// AggregateFunc applies an aggregation step on the group-by traversal/selector.
type AggregateFunc func(*sql.Selector) string
type AggregateFunc func(*sql.Selector, func(string) bool) string
// As is a pseudo aggregation function for renaming another other functions with custom names. For example:
//
@ -56,42 +64,58 @@ type AggregateFunc func(*sql.Selector) string
// Scan(ctx, &v)
//
func As(fn AggregateFunc, end string) AggregateFunc {
return func(s *sql.Selector) string {
return sql.As(fn(s), end)
return func(s *sql.Selector, check func(string) bool) string {
return sql.As(fn(s, check), end)
}
}
// Count applies the "count" aggregation function on each group.
func Count() AggregateFunc {
return func(s *sql.Selector) string {
return func(s *sql.Selector, _ func(string) bool) string {
return sql.Count("*")
}
}
// Max applies the "max" aggregation function on the given field of each group.
func Max(field string) AggregateFunc {
return func(s *sql.Selector) string {
return func(s *sql.Selector, check func(string) bool) string {
if !check(field) {
s.AddError(&ValidationError{Name: field, err: fmt.Errorf("invalid field %q for grouping", field)})
return ""
}
return sql.Max(s.C(field))
}
}
// Mean applies the "mean" aggregation function on the given field of each group.
func Mean(field string) AggregateFunc {
return func(s *sql.Selector) string {
return func(s *sql.Selector, check func(string) bool) string {
if !check(field) {
s.AddError(&ValidationError{Name: field, err: fmt.Errorf("invalid field %q for grouping", field)})
return ""
}
return sql.Avg(s.C(field))
}
}
// Min applies the "min" aggregation function on the given field of each group.
func Min(field string) AggregateFunc {
return func(s *sql.Selector) string {
return func(s *sql.Selector, check func(string) bool) string {
if !check(field) {
s.AddError(&ValidationError{Name: field, err: fmt.Errorf("invalid field %q for grouping", field)})
return ""
}
return sql.Min(s.C(field))
}
}
// Sum applies the "sum" aggregation function on the given field of each group.
func Sum(field string) AggregateFunc {
return func(s *sql.Selector) string {
return func(s *sql.Selector, check func(string) bool) string {
if !check(field) {
s.AddError(&ValidationError{Name: field, err: fmt.Errorf("invalid field %q for grouping", field)})
return ""
}
return sql.Sum(s.C(field))
}
}
@ -109,7 +133,7 @@ func (e *ValidationError) Error() string {
// Unwrap implements the errors.Wrapper interface.
func (e *ValidationError) Unwrap() error {
return errors.Unwrap(e.err)
return e.err
}
// IsValidationError returns a boolean indicating whether the error is a validaton error.

View file

@ -39,6 +39,16 @@ var Columns = []string{
FieldEntitlements,
}
// ValidColumn reports if the column name is valid (part of the table columns).
func ValidColumn(column string) bool {
for i := range Columns {
if column == Columns[i] {
return true
}
}
return false
}
var (
// DefaultCreateTime holds the default value on creation for the create_time field.
DefaultCreateTime func() time.Time

View file

@ -80,14 +80,15 @@ func (gc *GuildCreate) Mutation() *GuildMutation {
// Save creates the Guild in the database.
func (gc *GuildCreate) Save(ctx context.Context) (*Guild, error) {
if err := gc.preSave(); err != nil {
return nil, err
}
var (
err error
node *Guild
)
gc.defaults()
if len(gc.hooks) == 0 {
if err = gc.check(); err != nil {
return nil, err
}
node, err = gc.sqlSave(ctx)
} else {
var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) {
@ -95,6 +96,9 @@ func (gc *GuildCreate) Save(ctx context.Context) (*Guild, error) {
if !ok {
return nil, fmt.Errorf("unexpected mutation type %T", m)
}
if err = gc.check(); err != nil {
return nil, err
}
gc.mutation = mutation
node, err = gc.sqlSave(ctx)
mutation.done = true
@ -119,7 +123,8 @@ func (gc *GuildCreate) SaveX(ctx context.Context) *Guild {
return v
}
func (gc *GuildCreate) preSave() error {
// defaults sets the default values of the builder before save.
func (gc *GuildCreate) defaults() {
if _, ok := gc.mutation.CreateTime(); !ok {
v := guild.DefaultCreateTime()
gc.mutation.SetCreateTime(v)
@ -128,6 +133,16 @@ func (gc *GuildCreate) preSave() error {
v := guild.DefaultUpdateTime()
gc.mutation.SetUpdateTime(v)
}
}
// check runs all checks and user-defined validators on the builder.
func (gc *GuildCreate) check() error {
if _, ok := gc.mutation.CreateTime(); !ok {
return &ValidationError{Name: "create_time", err: errors.New("ent: missing required field \"create_time\"")}
}
if _, ok := gc.mutation.UpdateTime(); !ok {
return &ValidationError{Name: "update_time", err: errors.New("ent: missing required field \"update_time\"")}
}
if _, ok := gc.mutation.Snowflake(); !ok {
return &ValidationError{Name: "snowflake", err: errors.New("ent: missing required field \"snowflake\"")}
}
@ -144,7 +159,7 @@ func (gc *GuildCreate) preSave() error {
}
func (gc *GuildCreate) sqlSave(ctx context.Context) (*Guild, error) {
gu, _spec := gc.createSpec()
_node, _spec := gc.createSpec()
if err := sqlgraph.CreateNode(ctx, gc.driver, _spec); err != nil {
if cerr, ok := isSQLConstraintError(err); ok {
err = cerr
@ -152,13 +167,13 @@ func (gc *GuildCreate) sqlSave(ctx context.Context) (*Guild, error) {
return nil, err
}
id := _spec.ID.Value.(int64)
gu.ID = int(id)
return gu, nil
_node.ID = int(id)
return _node, nil
}
func (gc *GuildCreate) createSpec() (*Guild, *sqlgraph.CreateSpec) {
var (
gu = &Guild{config: gc.config}
_node = &Guild{config: gc.config}
_spec = &sqlgraph.CreateSpec{
Table: guild.Table,
ID: &sqlgraph.FieldSpec{
@ -173,7 +188,7 @@ func (gc *GuildCreate) createSpec() (*Guild, *sqlgraph.CreateSpec) {
Value: value,
Column: guild.FieldCreateTime,
})
gu.CreateTime = value
_node.CreateTime = value
}
if value, ok := gc.mutation.UpdateTime(); ok {
_spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{
@ -181,7 +196,7 @@ func (gc *GuildCreate) createSpec() (*Guild, *sqlgraph.CreateSpec) {
Value: value,
Column: guild.FieldUpdateTime,
})
gu.UpdateTime = value
_node.UpdateTime = value
}
if value, ok := gc.mutation.Snowflake(); ok {
_spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{
@ -189,7 +204,7 @@ func (gc *GuildCreate) createSpec() (*Guild, *sqlgraph.CreateSpec) {
Value: value,
Column: guild.FieldSnowflake,
})
gu.Snowflake = value
_node.Snowflake = value
}
if value, ok := gc.mutation.Message(); ok {
_spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{
@ -197,7 +212,7 @@ func (gc *GuildCreate) createSpec() (*Guild, *sqlgraph.CreateSpec) {
Value: value,
Column: guild.FieldMessage,
})
gu.Message = value
_node.Message = value
}
if value, ok := gc.mutation.Categories(); ok {
_spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{
@ -205,7 +220,7 @@ func (gc *GuildCreate) createSpec() (*Guild, *sqlgraph.CreateSpec) {
Value: value,
Column: guild.FieldCategories,
})
gu.Categories = value
_node.Categories = value
}
if value, ok := gc.mutation.Entitlements(); ok {
_spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{
@ -213,9 +228,9 @@ func (gc *GuildCreate) createSpec() (*Guild, *sqlgraph.CreateSpec) {
Value: value,
Column: guild.FieldEntitlements,
})
gu.Entitlements = value
_node.Entitlements = value
}
return gu, _spec
return _node, _spec
}
// GuildCreateBulk is the builder for creating a bulk of Guild entities.
@ -232,14 +247,15 @@ func (gcb *GuildCreateBulk) Save(ctx context.Context) ([]*Guild, error) {
for i := range gcb.builders {
func(i int, root context.Context) {
builder := gcb.builders[i]
builder.defaults()
var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) {
if err := builder.preSave(); err != nil {
return nil, err
}
mutation, ok := m.(*GuildMutation)
if !ok {
return nil, fmt.Errorf("unexpected mutation type %T", m)
}
if err := builder.check(); err != nil {
return nil, err
}
builder.mutation = mutation
nodes[i], specs[i] = builder.createSpec()
var err error

View file

@ -54,23 +54,23 @@ func (gq *GuildQuery) Order(o ...OrderFunc) *GuildQuery {
// First returns the first Guild entity in the query. Returns *NotFoundError when no guild was found.
func (gq *GuildQuery) First(ctx context.Context) (*Guild, error) {
gus, err := gq.Limit(1).All(ctx)
nodes, err := gq.Limit(1).All(ctx)
if err != nil {
return nil, err
}
if len(gus) == 0 {
if len(nodes) == 0 {
return nil, &NotFoundError{guild.Label}
}
return gus[0], nil
return nodes[0], nil
}
// FirstX is like First, but panics if an error occurs.
func (gq *GuildQuery) FirstX(ctx context.Context) *Guild {
gu, err := gq.First(ctx)
node, err := gq.First(ctx)
if err != nil && !IsNotFound(err) {
panic(err)
}
return gu
return node
}
// FirstID returns the first Guild id in the query. Returns *NotFoundError when no id was found.
@ -97,13 +97,13 @@ func (gq *GuildQuery) FirstXID(ctx context.Context) int {
// Only returns the only Guild entity in the query, returns an error if not exactly one entity was returned.
func (gq *GuildQuery) Only(ctx context.Context) (*Guild, error) {
gus, err := gq.Limit(2).All(ctx)
nodes, err := gq.Limit(2).All(ctx)
if err != nil {
return nil, err
}
switch len(gus) {
switch len(nodes) {
case 1:
return gus[0], nil
return nodes[0], nil
case 0:
return nil, &NotFoundError{guild.Label}
default:
@ -113,11 +113,11 @@ func (gq *GuildQuery) Only(ctx context.Context) (*Guild, error) {
// OnlyX is like Only, but panics if an error occurs.
func (gq *GuildQuery) OnlyX(ctx context.Context) *Guild {
gu, err := gq.Only(ctx)
node, err := gq.Only(ctx)
if err != nil {
panic(err)
}
return gu
return node
}
// OnlyID returns the only Guild id in the query, returns an error if not exactly one id was returned.
@ -156,11 +156,11 @@ func (gq *GuildQuery) All(ctx context.Context) ([]*Guild, error) {
// AllX is like All, but panics if an error occurs.
func (gq *GuildQuery) AllX(ctx context.Context) []*Guild {
gus, err := gq.All(ctx)
nodes, err := gq.All(ctx)
if err != nil {
panic(err)
}
return gus
return nodes
}
// IDs executes the query and returns a list of Guild ids.
@ -362,7 +362,7 @@ func (gq *GuildQuery) querySpec() *sqlgraph.QuerySpec {
if ps := gq.order; len(ps) > 0 {
_spec.Order = func(selector *sql.Selector) {
for i := range ps {
ps[i](selector)
ps[i](selector, guild.ValidColumn)
}
}
}
@ -381,7 +381,7 @@ func (gq *GuildQuery) sqlQuery() *sql.Selector {
p(selector)
}
for _, p := range gq.order {
p(selector)
p(selector, guild.ValidColumn)
}
if offset := gq.offset; offset != nil {
// limit is mandatory for offset clause. We start
@ -616,8 +616,17 @@ func (ggb *GuildGroupBy) BoolX(ctx context.Context) bool {
}
func (ggb *GuildGroupBy) sqlScan(ctx context.Context, v interface{}) error {
for _, f := range ggb.fields {
if !guild.ValidColumn(f) {
return &ValidationError{Name: f, err: fmt.Errorf("invalid field %q for group-by", f)}
}
}
selector := ggb.sqlQuery()
if err := selector.Err(); err != nil {
return err
}
rows := &sql.Rows{}
query, args := ggb.sqlQuery().Query()
query, args := selector.Query()
if err := ggb.driver.Query(ctx, query, args, rows); err != nil {
return err
}
@ -630,7 +639,7 @@ func (ggb *GuildGroupBy) sqlQuery() *sql.Selector {
columns := make([]string, 0, len(ggb.fields)+len(ggb.fns))
columns = append(columns, ggb.fields...)
for _, fn := range ggb.fns {
columns = append(columns, fn(selector))
columns = append(columns, fn(selector, guild.ValidColumn))
}
return selector.Select(columns...).GroupBy(ggb.fields...)
}
@ -850,6 +859,11 @@ func (gs *GuildSelect) BoolX(ctx context.Context) bool {
}
func (gs *GuildSelect) sqlScan(ctx context.Context, v interface{}) error {
for _, f := range gs.fields {
if !guild.ValidColumn(f) {
return &ValidationError{Name: f, err: fmt.Errorf("invalid field %q for selection", f)}
}
}
rows := &sql.Rows{}
query, args := gs.sqlQuery().Query()
if err := gs.driver.Query(ctx, query, args, rows); err != nil {

View file

@ -53,14 +53,11 @@ func (gu *GuildUpdate) Mutation() *GuildMutation {
// Save executes the query and returns the number of rows/vertices matched by this operation.
func (gu *GuildUpdate) Save(ctx context.Context) (int, error) {
if _, ok := gu.mutation.UpdateTime(); !ok {
v := guild.UpdateDefaultUpdateTime()
gu.mutation.SetUpdateTime(v)
}
var (
err error
affected int
)
gu.defaults()
if len(gu.hooks) == 0 {
affected, err = gu.sqlSave(ctx)
} else {
@ -106,6 +103,14 @@ func (gu *GuildUpdate) ExecX(ctx context.Context) {
}
}
// defaults sets the default values of the builder before save.
func (gu *GuildUpdate) defaults() {
if _, ok := gu.mutation.UpdateTime(); !ok {
v := guild.UpdateDefaultUpdateTime()
gu.mutation.SetUpdateTime(v)
}
}
func (gu *GuildUpdate) sqlSave(ctx context.Context) (n int, err error) {
_spec := &sqlgraph.UpdateSpec{
Node: &sqlgraph.NodeSpec{
@ -195,14 +200,11 @@ func (guo *GuildUpdateOne) Mutation() *GuildMutation {
// Save executes the query and returns the updated entity.
func (guo *GuildUpdateOne) Save(ctx context.Context) (*Guild, error) {
if _, ok := guo.mutation.UpdateTime(); !ok {
v := guild.UpdateDefaultUpdateTime()
guo.mutation.SetUpdateTime(v)
}
var (
err error
node *Guild
)
guo.defaults()
if len(guo.hooks) == 0 {
node, err = guo.sqlSave(ctx)
} else {
@ -228,11 +230,11 @@ func (guo *GuildUpdateOne) Save(ctx context.Context) (*Guild, error) {
// SaveX is like Save, but panics if an error occurs.
func (guo *GuildUpdateOne) SaveX(ctx context.Context) *Guild {
gu, err := guo.Save(ctx)
node, err := guo.Save(ctx)
if err != nil {
panic(err)
}
return gu
return node
}
// Exec executes the query on the entity.
@ -248,7 +250,15 @@ func (guo *GuildUpdateOne) ExecX(ctx context.Context) {
}
}
func (guo *GuildUpdateOne) sqlSave(ctx context.Context) (gu *Guild, err error) {
// defaults sets the default values of the builder before save.
func (guo *GuildUpdateOne) defaults() {
if _, ok := guo.mutation.UpdateTime(); !ok {
v := guild.UpdateDefaultUpdateTime()
guo.mutation.SetUpdateTime(v)
}
}
func (guo *GuildUpdateOne) sqlSave(ctx context.Context) (_node *Guild, err error) {
_spec := &sqlgraph.UpdateSpec{
Node: &sqlgraph.NodeSpec{
Table: guild.Table,
@ -292,9 +302,9 @@ func (guo *GuildUpdateOne) sqlSave(ctx context.Context) (gu *Guild, err error) {
Column: guild.FieldEntitlements,
})
}
gu = &Guild{config: guo.config}
_spec.Assign = gu.assignValues
_spec.ScanValues = gu.scanValues()
_node = &Guild{config: guo.config}
_spec.Assign = _node.assignValues
_spec.ScanValues = _node.scanValues()
if err = sqlgraph.UpdateNode(ctx, guo.driver, _spec); err != nil {
if _, ok := err.(*sqlgraph.NotFoundError); ok {
err = &NotFoundError{guild.Label}
@ -303,5 +313,5 @@ func (guo *GuildUpdateOne) sqlSave(ctx context.Context) (gu *Guild, err error) {
}
return nil, err
}
return gu, nil
return _node, nil
}

View file

@ -142,7 +142,7 @@ func HasFields(field string, fields ...string) Condition {
// If executes the given hook under condition.
//
// Hook.If(ComputeAverage, And(HasFields(...), HasAddedFields(...)))
// hook.If(ComputeAverage, And(HasFields(...), HasAddedFields(...)))
//
func If(hk ent.Hook, cond Condition) ent.Hook {
return func(next ent.Mutator) ent.Mutator {

View file

@ -29,7 +29,7 @@ var (
// flexibility in the schema changes.
WithDropIndex = schema.WithDropIndex
// WithFixture sets the foreign-key renaming option to the migration when upgrading
// ent from v0.1.0 (issue-#285). Defaults to true.
// ent from v0.1.0 (issue-#285). Defaults to false.
WithFixture = schema.WithFixture
)

View file

@ -5,6 +5,6 @@ package runtime
// The schema-stitching logic is generated in github.com/roleypoly/roleypoly/src/db/ent/runtime.go
const (
Version = "v0.4.2" // Version of ent codegen.
Sum = "h1:JzU5dYJH9XdjfIKgOiPPK3szkqLqcdPWgVder4Ogows=" // Sum of ent codegen.
Version = "v0.4.3" // Version of ent codegen.
Sum = "h1:ds9HENceKzpGBgCRlkZNq6TqBIegwKcF3e5reuV9Z0M=" // Sum of ent codegen.
)

View file

@ -40,6 +40,16 @@ var Columns = []string{
FieldExpiresAt,
}
// ValidColumn reports if the column name is valid (part of the table columns).
func ValidColumn(column string) bool {
for i := range Columns {
if column == Columns[i] {
return true
}
}
return false
}
var (
// DefaultCreateTime holds the default value on creation for the create_time field.
DefaultCreateTime func() time.Time

View file

@ -87,14 +87,15 @@ func (sc *SessionCreate) Mutation() *SessionMutation {
// Save creates the Session in the database.
func (sc *SessionCreate) Save(ctx context.Context) (*Session, error) {
if err := sc.preSave(); err != nil {
return nil, err
}
var (
err error
node *Session
)
sc.defaults()
if len(sc.hooks) == 0 {
if err = sc.check(); err != nil {
return nil, err
}
node, err = sc.sqlSave(ctx)
} else {
var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) {
@ -102,6 +103,9 @@ func (sc *SessionCreate) Save(ctx context.Context) (*Session, error) {
if !ok {
return nil, fmt.Errorf("unexpected mutation type %T", m)
}
if err = sc.check(); err != nil {
return nil, err
}
sc.mutation = mutation
node, err = sc.sqlSave(ctx)
mutation.done = true
@ -126,7 +130,8 @@ func (sc *SessionCreate) SaveX(ctx context.Context) *Session {
return v
}
func (sc *SessionCreate) preSave() error {
// defaults sets the default values of the builder before save.
func (sc *SessionCreate) defaults() {
if _, ok := sc.mutation.CreateTime(); !ok {
v := session.DefaultCreateTime()
sc.mutation.SetCreateTime(v)
@ -135,6 +140,20 @@ func (sc *SessionCreate) preSave() error {
v := session.DefaultUpdateTime()
sc.mutation.SetUpdateTime(v)
}
if _, ok := sc.mutation.ExpiresAt(); !ok {
v := session.DefaultExpiresAt()
sc.mutation.SetExpiresAt(v)
}
}
// check runs all checks and user-defined validators on the builder.
func (sc *SessionCreate) check() error {
if _, ok := sc.mutation.CreateTime(); !ok {
return &ValidationError{Name: "create_time", err: errors.New("ent: missing required field \"create_time\"")}
}
if _, ok := sc.mutation.UpdateTime(); !ok {
return &ValidationError{Name: "update_time", err: errors.New("ent: missing required field \"update_time\"")}
}
if _, ok := sc.mutation.SessionID(); !ok {
return &ValidationError{Name: "session_id", err: errors.New("ent: missing required field \"session_id\"")}
}
@ -150,14 +169,13 @@ func (sc *SessionCreate) preSave() error {
}
}
if _, ok := sc.mutation.ExpiresAt(); !ok {
v := session.DefaultExpiresAt()
sc.mutation.SetExpiresAt(v)
return &ValidationError{Name: "expires_at", err: errors.New("ent: missing required field \"expires_at\"")}
}
return nil
}
func (sc *SessionCreate) sqlSave(ctx context.Context) (*Session, error) {
s, _spec := sc.createSpec()
_node, _spec := sc.createSpec()
if err := sqlgraph.CreateNode(ctx, sc.driver, _spec); err != nil {
if cerr, ok := isSQLConstraintError(err); ok {
err = cerr
@ -165,13 +183,13 @@ func (sc *SessionCreate) sqlSave(ctx context.Context) (*Session, error) {
return nil, err
}
id := _spec.ID.Value.(int64)
s.ID = int(id)
return s, nil
_node.ID = int(id)
return _node, nil
}
func (sc *SessionCreate) createSpec() (*Session, *sqlgraph.CreateSpec) {
var (
s = &Session{config: sc.config}
_node = &Session{config: sc.config}
_spec = &sqlgraph.CreateSpec{
Table: session.Table,
ID: &sqlgraph.FieldSpec{
@ -186,7 +204,7 @@ func (sc *SessionCreate) createSpec() (*Session, *sqlgraph.CreateSpec) {
Value: value,
Column: session.FieldCreateTime,
})
s.CreateTime = value
_node.CreateTime = value
}
if value, ok := sc.mutation.UpdateTime(); ok {
_spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{
@ -194,7 +212,7 @@ func (sc *SessionCreate) createSpec() (*Session, *sqlgraph.CreateSpec) {
Value: value,
Column: session.FieldUpdateTime,
})
s.UpdateTime = value
_node.UpdateTime = value
}
if value, ok := sc.mutation.SessionID(); ok {
_spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{
@ -202,7 +220,7 @@ func (sc *SessionCreate) createSpec() (*Session, *sqlgraph.CreateSpec) {
Value: value,
Column: session.FieldSessionID,
})
s.SessionID = value
_node.SessionID = value
}
if value, ok := sc.mutation.UserID(); ok {
_spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{
@ -210,7 +228,7 @@ func (sc *SessionCreate) createSpec() (*Session, *sqlgraph.CreateSpec) {
Value: value,
Column: session.FieldUserID,
})
s.UserID = value
_node.UserID = value
}
if value, ok := sc.mutation.Source(); ok {
_spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{
@ -218,7 +236,7 @@ func (sc *SessionCreate) createSpec() (*Session, *sqlgraph.CreateSpec) {
Value: value,
Column: session.FieldSource,
})
s.Source = value
_node.Source = value
}
if value, ok := sc.mutation.ExpiresAt(); ok {
_spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{
@ -226,9 +244,9 @@ func (sc *SessionCreate) createSpec() (*Session, *sqlgraph.CreateSpec) {
Value: value,
Column: session.FieldExpiresAt,
})
s.ExpiresAt = value
_node.ExpiresAt = value
}
return s, _spec
return _node, _spec
}
// SessionCreateBulk is the builder for creating a bulk of Session entities.
@ -245,14 +263,15 @@ func (scb *SessionCreateBulk) Save(ctx context.Context) ([]*Session, error) {
for i := range scb.builders {
func(i int, root context.Context) {
builder := scb.builders[i]
builder.defaults()
var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) {
if err := builder.preSave(); err != nil {
return nil, err
}
mutation, ok := m.(*SessionMutation)
if !ok {
return nil, fmt.Errorf("unexpected mutation type %T", m)
}
if err := builder.check(); err != nil {
return nil, err
}
builder.mutation = mutation
nodes[i], specs[i] = builder.createSpec()
var err error

View file

@ -54,23 +54,23 @@ func (sq *SessionQuery) Order(o ...OrderFunc) *SessionQuery {
// First returns the first Session entity in the query. Returns *NotFoundError when no session was found.
func (sq *SessionQuery) First(ctx context.Context) (*Session, error) {
sSlice, err := sq.Limit(1).All(ctx)
nodes, err := sq.Limit(1).All(ctx)
if err != nil {
return nil, err
}
if len(sSlice) == 0 {
if len(nodes) == 0 {
return nil, &NotFoundError{session.Label}
}
return sSlice[0], nil
return nodes[0], nil
}
// FirstX is like First, but panics if an error occurs.
func (sq *SessionQuery) FirstX(ctx context.Context) *Session {
s, err := sq.First(ctx)
node, err := sq.First(ctx)
if err != nil && !IsNotFound(err) {
panic(err)
}
return s
return node
}
// FirstID returns the first Session id in the query. Returns *NotFoundError when no id was found.
@ -97,13 +97,13 @@ func (sq *SessionQuery) FirstXID(ctx context.Context) int {
// Only returns the only Session entity in the query, returns an error if not exactly one entity was returned.
func (sq *SessionQuery) Only(ctx context.Context) (*Session, error) {
sSlice, err := sq.Limit(2).All(ctx)
nodes, err := sq.Limit(2).All(ctx)
if err != nil {
return nil, err
}
switch len(sSlice) {
switch len(nodes) {
case 1:
return sSlice[0], nil
return nodes[0], nil
case 0:
return nil, &NotFoundError{session.Label}
default:
@ -113,11 +113,11 @@ func (sq *SessionQuery) Only(ctx context.Context) (*Session, error) {
// OnlyX is like Only, but panics if an error occurs.
func (sq *SessionQuery) OnlyX(ctx context.Context) *Session {
s, err := sq.Only(ctx)
node, err := sq.Only(ctx)
if err != nil {
panic(err)
}
return s
return node
}
// OnlyID returns the only Session id in the query, returns an error if not exactly one id was returned.
@ -156,11 +156,11 @@ func (sq *SessionQuery) All(ctx context.Context) ([]*Session, error) {
// AllX is like All, but panics if an error occurs.
func (sq *SessionQuery) AllX(ctx context.Context) []*Session {
sSlice, err := sq.All(ctx)
nodes, err := sq.All(ctx)
if err != nil {
panic(err)
}
return sSlice
return nodes
}
// IDs executes the query and returns a list of Session ids.
@ -362,7 +362,7 @@ func (sq *SessionQuery) querySpec() *sqlgraph.QuerySpec {
if ps := sq.order; len(ps) > 0 {
_spec.Order = func(selector *sql.Selector) {
for i := range ps {
ps[i](selector)
ps[i](selector, session.ValidColumn)
}
}
}
@ -381,7 +381,7 @@ func (sq *SessionQuery) sqlQuery() *sql.Selector {
p(selector)
}
for _, p := range sq.order {
p(selector)
p(selector, session.ValidColumn)
}
if offset := sq.offset; offset != nil {
// limit is mandatory for offset clause. We start
@ -616,8 +616,17 @@ func (sgb *SessionGroupBy) BoolX(ctx context.Context) bool {
}
func (sgb *SessionGroupBy) sqlScan(ctx context.Context, v interface{}) error {
for _, f := range sgb.fields {
if !session.ValidColumn(f) {
return &ValidationError{Name: f, err: fmt.Errorf("invalid field %q for group-by", f)}
}
}
selector := sgb.sqlQuery()
if err := selector.Err(); err != nil {
return err
}
rows := &sql.Rows{}
query, args := sgb.sqlQuery().Query()
query, args := selector.Query()
if err := sgb.driver.Query(ctx, query, args, rows); err != nil {
return err
}
@ -630,7 +639,7 @@ func (sgb *SessionGroupBy) sqlQuery() *sql.Selector {
columns := make([]string, 0, len(sgb.fields)+len(sgb.fns))
columns = append(columns, sgb.fields...)
for _, fn := range sgb.fns {
columns = append(columns, fn(selector))
columns = append(columns, fn(selector, session.ValidColumn))
}
return selector.Select(columns...).GroupBy(sgb.fields...)
}
@ -850,6 +859,11 @@ func (ss *SessionSelect) BoolX(ctx context.Context) bool {
}
func (ss *SessionSelect) sqlScan(ctx context.Context, v interface{}) error {
for _, f := range ss.fields {
if !session.ValidColumn(f) {
return &ValidationError{Name: f, err: fmt.Errorf("invalid field %q for selection", f)}
}
}
rows := &sql.Rows{}
query, args := ss.sqlQuery().Query()
if err := ss.driver.Query(ctx, query, args, rows); err != nil {

View file

@ -34,14 +34,11 @@ func (su *SessionUpdate) Mutation() *SessionMutation {
// Save executes the query and returns the number of rows/vertices matched by this operation.
func (su *SessionUpdate) Save(ctx context.Context) (int, error) {
if _, ok := su.mutation.UpdateTime(); !ok {
v := session.UpdateDefaultUpdateTime()
su.mutation.SetUpdateTime(v)
}
var (
err error
affected int
)
su.defaults()
if len(su.hooks) == 0 {
affected, err = su.sqlSave(ctx)
} else {
@ -87,6 +84,14 @@ func (su *SessionUpdate) ExecX(ctx context.Context) {
}
}
// defaults sets the default values of the builder before save.
func (su *SessionUpdate) defaults() {
if _, ok := su.mutation.UpdateTime(); !ok {
v := session.UpdateDefaultUpdateTime()
su.mutation.SetUpdateTime(v)
}
}
func (su *SessionUpdate) sqlSave(ctx context.Context) (n int, err error) {
_spec := &sqlgraph.UpdateSpec{
Node: &sqlgraph.NodeSpec{
@ -137,14 +142,11 @@ func (suo *SessionUpdateOne) Mutation() *SessionMutation {
// Save executes the query and returns the updated entity.
func (suo *SessionUpdateOne) Save(ctx context.Context) (*Session, error) {
if _, ok := suo.mutation.UpdateTime(); !ok {
v := session.UpdateDefaultUpdateTime()
suo.mutation.SetUpdateTime(v)
}
var (
err error
node *Session
)
suo.defaults()
if len(suo.hooks) == 0 {
node, err = suo.sqlSave(ctx)
} else {
@ -170,11 +172,11 @@ func (suo *SessionUpdateOne) Save(ctx context.Context) (*Session, error) {
// SaveX is like Save, but panics if an error occurs.
func (suo *SessionUpdateOne) SaveX(ctx context.Context) *Session {
s, err := suo.Save(ctx)
node, err := suo.Save(ctx)
if err != nil {
panic(err)
}
return s
return node
}
// Exec executes the query on the entity.
@ -190,7 +192,15 @@ func (suo *SessionUpdateOne) ExecX(ctx context.Context) {
}
}
func (suo *SessionUpdateOne) sqlSave(ctx context.Context) (s *Session, err error) {
// defaults sets the default values of the builder before save.
func (suo *SessionUpdateOne) defaults() {
if _, ok := suo.mutation.UpdateTime(); !ok {
v := session.UpdateDefaultUpdateTime()
suo.mutation.SetUpdateTime(v)
}
}
func (suo *SessionUpdateOne) sqlSave(ctx context.Context) (_node *Session, err error) {
_spec := &sqlgraph.UpdateSpec{
Node: &sqlgraph.NodeSpec{
Table: session.Table,
@ -213,9 +223,9 @@ func (suo *SessionUpdateOne) sqlSave(ctx context.Context) (s *Session, err error
Column: session.FieldUpdateTime,
})
}
s = &Session{config: suo.config}
_spec.Assign = s.assignValues
_spec.ScanValues = s.scanValues()
_node = &Session{config: suo.config}
_spec.Assign = _node.assignValues
_spec.ScanValues = _node.scanValues()
if err = sqlgraph.UpdateNode(ctx, suo.driver, _spec); err != nil {
if _, ok := err.(*sqlgraph.NotFoundError); ok {
err = &NotFoundError{session.Label}
@ -224,5 +234,5 @@ func (suo *SessionUpdateOne) sqlSave(ctx context.Context) (s *Session, err error
}
return nil, err
}
return s, nil
return _node, nil
}