~comcloudway/builds.sr.ht

3a89d0661361b3c20cd3ddbe8c10469c587608e9 — Drew DeVault 2 years ago 7e066ab
api: refactor loader generation
5 files changed, 1182 insertions(+), 231 deletions(-)

M api/go.mod
M api/go.sum
M api/graph/api/generated.go
A api/loaders/generate.go
M api/loaders/middleware.go
M api/go.mod => api/go.mod +7 -2
@@ 4,12 4,17 @@ go 1.16

require (
	git.sr.ht/~sircmpwn/core-go v0.0.0-20210825094745-ae61e2431576
	github.com/99designs/gqlgen v0.13.0
	github.com/99designs/gqlgen v0.17.2
	github.com/Masterminds/squirrel v1.4.0
	github.com/agnivade/levenshtein v1.1.1 // indirect
	github.com/gocelery/gocelery v0.0.0-20201111034804-825d89059344
	github.com/google/uuid v1.0.0
	github.com/lib/pq v1.8.0
	github.com/matryer/moq v0.2.6 // indirect
	github.com/prometheus/client_golang v1.11.0
	github.com/vektah/gqlparser/v2 v2.1.0
	github.com/urfave/cli/v2 v2.4.0 // indirect
	github.com/vektah/dataloaden v0.2.1-0.20190515034641-a19b9a6e7c9e
	github.com/vektah/gqlparser/v2 v2.4.1
	golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8 // indirect
	gopkg.in/yaml.v2 v2.4.0
)

M api/go.sum => api/go.sum +46 -16
@@ 39,8 39,9 @@ git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3 h1:4wDp4BKF7NQqoh7
git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3/go.mod h1:wMEGFFFNuPos7vHmWXfszqImLppbc0wEhh6JBfJIUgw=
git.sr.ht/~sircmpwn/go-bare v0.0.0-20210227202403-5dae5c48f917 h1:/pfEvB399XDXksu4vyjfNTytWn/nbbKiNhvjtpgc4pY=
git.sr.ht/~sircmpwn/go-bare v0.0.0-20210227202403-5dae5c48f917/go.mod h1:BVJwbDfVjCjoFiKrhkei6NdGcZYpkDkdyCdg1ukytRA=
github.com/99designs/gqlgen v0.13.0 h1:haLTcUp3Vwp80xMVEg5KRNwzfUrgFdRmtBY8fuB8scA=
github.com/99designs/gqlgen v0.13.0/go.mod h1:NV130r6f4tpRWuAI+zsrSdooO/eWUv+Gyyoi3rEfXIk=
github.com/99designs/gqlgen v0.17.2 h1:yczvlwMsfcVu/JtejqfrLwXuSP0yZFhmcss3caEvHw8=
github.com/99designs/gqlgen v0.17.2/go.mod h1:K5fzLKwtph+FFgh9j7nFbRUdBKvTcGnsta51fsMTn3o=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60=


@@ 53,8 54,10 @@ github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMx
github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g=
github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM=
github.com/agnivade/levenshtein v1.0.3 h1:M5ZnqLOoZR8ygVq0FfkXsNOKzMCk0xRiow0R5+5VkQ0=
github.com/agnivade/levenshtein v1.0.3/go.mod h1:4SFRZbbXWLF4MU1T9Qg0pGgH3Pjs+t6ie5efyrwRJXs=
github.com/agnivade/levenshtein v1.1.0/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo=
github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8=
github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=


@@ 94,8 97,9 @@ github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY=
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
github.com/cpuguy83/go-md2man/v2 v2.0.1 h1:r/myEWzV9lfsM1tFLgDyu0atFtJ1fXn261LKYj/3DxU=
github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=


@@ 104,8 108,9 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
github.com/dgryski/trifles v0.0.0-20190318185328-a8d75aae118c h1:TUuUh0Xgj97tLMNtWtNvI9mIV6isjEb9lBMNv+77IGM=
github.com/dgryski/trifles v0.0.0-20190318185328-a8d75aae118c/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA=
github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48 h1:fRzb/w+pyskVMQ+UbP35JkH8yB7MYb4q/qhBarqZE6g=
github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA=
github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=


@@ 273,6 278,7 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
github.com/kavu/go_reuseport v1.5.0 h1:UNuiY2OblcqAtVDE8Gsg1kZz8zbBWg907sP1ceBV+bk=
github.com/kavu/go_reuseport v1.5.0/go.mod h1:CG8Ee7ceMFSMnx/xr25Vm0qXaj2Z4i5PWoUx+JZ5/CU=
github.com/kevinmbeaulieu/eq-go v1.0.0/go.mod h1:G3S8ajA56gKBZm4UB9AOyoOS37JO3roToPzKNM8dtdM=
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=


@@ 292,12 298,15 @@ github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM=
github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4=
github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
github.com/logrusorgru/aurora/v3 v3.0.0/go.mod h1:vsR12bk5grlLvLXAYrBsb5Oc/N+LxAlxggSjiwMnCUc=
github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
github.com/martinlindhe/base36 v1.0.0/go.mod h1:+AtEs8xrBpCeYgSLoY/aJ6Wf37jtBuR0s35750M27+8=
github.com/martinlindhe/base36 v1.1.0 h1:cIwvvwYse/0+1CkUPYH5ZvVIYG3JrILmQEIbLuar02Y=
github.com/martinlindhe/base36 v1.1.0/go.mod h1:+AtEs8xrBpCeYgSLoY/aJ6Wf37jtBuR0s35750M27+8=
github.com/matryer/moq v0.0.0-20200106131100-75d0ddfc0007 h1:reVOUXwnhsYv/8UqjvhrMOu5CNT9UapHFLbQ2JcXsmg=
github.com/matryer/moq v0.0.0-20200106131100-75d0ddfc0007/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ=
github.com/matryer/moq v0.2.3/go.mod h1:9RtPYjTnH1bSBIkpvtHkFN7nbWAnO7oRpdJkEIn6UtE=
github.com/matryer/moq v0.2.6 h1:X4+LF09udTsi2P+Z+1UhSb4p3K8IyiF7KSNFDR9M3M0=
github.com/matryer/moq v0.2.6/go.mod h1:kITsx543GOENm48TUAQyJ9+SAvFSr7iGQXPoth/VUBk=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=


@@ 315,8 324,9 @@ github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS4
github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v0.0.0-20180203102830-a4e142e9c047/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE=
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.2.3 h1:f/MjBEBDLttYCGfRaKBbKSRVF5aV2O6fnBpzknuE3jU=
github.com/mitchellh/mapstructure v1.2.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=


@@ 403,8 413,9 @@ github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqn
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
github.com/satori/go.uuid v1.2.1-0.20181028125025-b2ce2384e17b h1:gQZ0qzfKHQIybLANtM3mBXNUtOfsCFXeTsnBqCsx1KM=


@@ 414,7 425,6 @@ github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAm
github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/shurcooL/vfsgen v0.0.0-20180121065927-ffb13db8def0/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=


@@ 442,20 452,25 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY=
github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
github.com/urfave/cli/v2 v2.1.1 h1:Qt8FeAtxE/vfdrLmR3rxR6JRE0RoVmbXu8+6kZtYU4k=
github.com/urfave/cli/v2 v2.1.1/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ=
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
github.com/urfave/cli/v2 v2.4.0 h1:m2pxjjDFgDxSPtO8WSdbndj17Wu2y8vOT86wE/tjr+I=
github.com/urfave/cli/v2 v2.4.0/go.mod h1:NX9W0zmTvedE5oDoOMs2RTC8RvdK98NTYZE5LbaEYPg=
github.com/vaughan0/go-ini v0.0.0-20130923145212-a98ad7ee00ec h1:DGmKwyZwEB8dI7tbLt/I/gQuP559o/0FrAkHKlQM/Ks=
github.com/vaughan0/go-ini v0.0.0-20130923145212-a98ad7ee00ec/go.mod h1:owBmyHYMLkxyrugmfwE/DLJyW8Ro9mkphwuVErQ0iUw=
github.com/vektah/dataloaden v0.2.1-0.20190515034641-a19b9a6e7c9e h1:+w0Zm/9gaWpEAyDlU1eKOuk5twTjAjuevXqcJJw8hrg=
github.com/vektah/dataloaden v0.2.1-0.20190515034641-a19b9a6e7c9e/go.mod h1:/HUdMve7rvxZma+2ZELQeNh88+003LL7Pf/CZ089j8U=
github.com/vektah/gqlparser v1.3.1 h1:8b0IcD3qZKWJQHSzynbDlrtP3IxVydZ2DZepCGofqfU=
github.com/vektah/gqlparser v1.3.1/go.mod h1:bkVf0FX+Stjg/MHnm8mEyubuaArhNEqfQhF+OTiAL74=
github.com/vektah/gqlparser/v2 v2.1.0 h1:uiKJ+T5HMGGQM2kRKQ8Pxw8+Zq9qhhZhz/lieYvCMns=
github.com/vektah/gqlparser/v2 v2.1.0/go.mod h1:SyUiHgLATUR8BiYURfTirrTcGpcE+4XkV2se04Px1Ms=
github.com/vektah/gqlparser/v2 v2.4.0/go.mod h1:flJWIR04IMQPGz+BXLrORkrARBxv/rtyIAFvd/MceW0=
github.com/vektah/gqlparser/v2 v2.4.1 h1:QOyEn8DAPMUMARGMeshKDkDgNmVoEaEGiDB0uWxcSlQ=
github.com/vektah/gqlparser/v2 v2.4.1/go.mod h1:flJWIR04IMQPGz+BXLrORkrARBxv/rtyIAFvd/MceW0=
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg=
go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=


@@ 483,8 498,9 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de h1:ikNHVSjEfnvz6sxdSPCaPt572qowuyMDMJLLm3Db3ig=
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=


@@ 514,8 530,10 @@ golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
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/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o=
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
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-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=


@@ 551,8 569,10 @@ golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20210525063256-abc453219eb5 h1:wjuX4b5yYQnEQHzd+CBcrcC6OVR2J1CN6mUy0oSxIPo=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f h1:OfiFi4JbukWwe3lzw+xunroH1mnC1e2Gy5cxNJApiSY=
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=


@@ 568,6 588,7 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ
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/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
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=


@@ 616,8 637,11 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210820121016-41cdb8703e55 h1:rw6UNGRMfarCepjI8qOepea/SXwIBVfTKjztZ5gBbq4=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210820121016-41cdb8703e55/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8 h1:OH54vjqzRWmbJ62fjuhxy7AxFFgoHN0/DPc/UrL8cAs=
golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=


@@ 625,8 649,9 @@ golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.4-0.20201021145329-22f1617af38e/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=


@@ 679,8 704,11 @@ golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roY
golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20200825202427-b303f430e36d h1:W07d4xkoAUSNOkOzdzXCdFGxT7o2rW4q8M34tB2i//k=
golang.org/x/tools v0.0.0-20200815165600-90abf76919f3/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=
golang.org/x/tools v0.1.10 h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20=
golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=


@@ 788,8 816,10 @@ gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRN
gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=

M api/graph/api/generated.go => api/graph/api/generated.go +1116 -208
@@ 5916,14 5916,14 @@ func (ec *executionContext) ___Directive_description(ctx context.Context, field 
		Object:     "__Directive",
		Field:      field,
		Args:       nil,
		IsMethod:   false,
		IsMethod:   true,
		IsResolver: false,
	}

	ctx = graphql.WithFieldContext(ctx, fc)
	resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
		ctx = rctx // use context from middleware stack in children
		return obj.Description, nil
		return obj.Description(), nil
	})
	if err != nil {
		ec.Error(ctx, err)


@@ 5932,9 5932,9 @@ func (ec *executionContext) ___Directive_description(ctx context.Context, field 
	if resTmp == nil {
		return graphql.Null
	}
	res := resTmp.(string)
	res := resTmp.(*string)
	fc.Result = res
	return ec.marshalOString2string(ctx, field.Selections, res)
	return ec.marshalOString2ᚖstring(ctx, field.Selections, res)
}

func (ec *executionContext) ___Directive_locations(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) {


@@ 6007,6 6007,41 @@ func (ec *executionContext) ___Directive_args(ctx context.Context, field graphql
	return ec.marshalN__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValueᚄ(ctx, field.Selections, res)
}

func (ec *executionContext) ___Directive_isRepeatable(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) {
	defer func() {
		if r := recover(); r != nil {
			ec.Error(ctx, ec.Recover(ctx, r))
			ret = graphql.Null
		}
	}()
	fc := &graphql.FieldContext{
		Object:     "__Directive",
		Field:      field,
		Args:       nil,
		IsMethod:   false,
		IsResolver: false,
	}

	ctx = graphql.WithFieldContext(ctx, fc)
	resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
		ctx = rctx // use context from middleware stack in children
		return obj.IsRepeatable, nil
	})
	if err != nil {
		ec.Error(ctx, err)
		return graphql.Null
	}
	if resTmp == nil {
		if !graphql.HasFieldError(ctx, fc) {
			ec.Errorf(ctx, "must not be null")
		}
		return graphql.Null
	}
	res := resTmp.(bool)
	fc.Result = res
	return ec.marshalNBoolean2bool(ctx, field.Selections, res)
}

func (ec *executionContext) ___EnumValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) {
	defer func() {
		if r := recover(); r != nil {


@@ 6053,14 6088,14 @@ func (ec *executionContext) ___EnumValue_description(ctx context.Context, field 
		Object:     "__EnumValue",
		Field:      field,
		Args:       nil,
		IsMethod:   false,
		IsMethod:   true,
		IsResolver: false,
	}

	ctx = graphql.WithFieldContext(ctx, fc)
	resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
		ctx = rctx // use context from middleware stack in children
		return obj.Description, nil
		return obj.Description(), nil
	})
	if err != nil {
		ec.Error(ctx, err)


@@ 6069,9 6104,9 @@ func (ec *executionContext) ___EnumValue_description(ctx context.Context, field 
	if resTmp == nil {
		return graphql.Null
	}
	res := resTmp.(string)
	res := resTmp.(*string)
	fc.Result = res
	return ec.marshalOString2string(ctx, field.Selections, res)
	return ec.marshalOString2ᚖstring(ctx, field.Selections, res)
}

func (ec *executionContext) ___EnumValue_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) {


@@ 6187,14 6222,14 @@ func (ec *executionContext) ___Field_description(ctx context.Context, field grap
		Object:     "__Field",
		Field:      field,
		Args:       nil,
		IsMethod:   false,
		IsMethod:   true,
		IsResolver: false,
	}

	ctx = graphql.WithFieldContext(ctx, fc)
	resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
		ctx = rctx // use context from middleware stack in children
		return obj.Description, nil
		return obj.Description(), nil
	})
	if err != nil {
		ec.Error(ctx, err)


@@ 6203,9 6238,9 @@ func (ec *executionContext) ___Field_description(ctx context.Context, field grap
	if resTmp == nil {
		return graphql.Null
	}
	res := resTmp.(string)
	res := resTmp.(*string)
	fc.Result = res
	return ec.marshalOString2string(ctx, field.Selections, res)
	return ec.marshalOString2ᚖstring(ctx, field.Selections, res)
}

func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) {


@@ 6391,14 6426,14 @@ func (ec *executionContext) ___InputValue_description(ctx context.Context, field
		Object:     "__InputValue",
		Field:      field,
		Args:       nil,
		IsMethod:   false,
		IsMethod:   true,
		IsResolver: false,
	}

	ctx = graphql.WithFieldContext(ctx, fc)
	resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
		ctx = rctx // use context from middleware stack in children
		return obj.Description, nil
		return obj.Description(), nil
	})
	if err != nil {
		ec.Error(ctx, err)


@@ 6407,9 6442,9 @@ func (ec *executionContext) ___InputValue_description(ctx context.Context, field
	if resTmp == nil {
		return graphql.Null
	}
	res := resTmp.(string)
	res := resTmp.(*string)
	fc.Result = res
	return ec.marshalOString2string(ctx, field.Selections, res)
	return ec.marshalOString2ᚖstring(ctx, field.Selections, res)
}

func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) {


@@ 6479,6 6514,38 @@ func (ec *executionContext) ___InputValue_defaultValue(ctx context.Context, fiel
	return ec.marshalOString2ᚖstring(ctx, field.Selections, res)
}

func (ec *executionContext) ___Schema_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) {
	defer func() {
		if r := recover(); r != nil {
			ec.Error(ctx, ec.Recover(ctx, r))
			ret = graphql.Null
		}
	}()
	fc := &graphql.FieldContext{
		Object:     "__Schema",
		Field:      field,
		Args:       nil,
		IsMethod:   true,
		IsResolver: false,
	}

	ctx = graphql.WithFieldContext(ctx, fc)
	resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
		ctx = rctx // use context from middleware stack in children
		return obj.Description(), nil
	})
	if err != nil {
		ec.Error(ctx, err)
		return graphql.Null
	}
	if resTmp == nil {
		return graphql.Null
	}
	res := resTmp.(*string)
	fc.Result = res
	return ec.marshalOString2ᚖstring(ctx, field.Selections, res)
}

func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) {
	defer func() {
		if r := recover(); r != nil {


@@ 6742,9 6809,9 @@ func (ec *executionContext) ___Type_description(ctx context.Context, field graph
	if resTmp == nil {
		return graphql.Null
	}
	res := resTmp.(string)
	res := resTmp.(*string)
	fc.Result = res
	return ec.marshalOString2string(ctx, field.Selections, res)
	return ec.marshalOString2ᚖstring(ctx, field.Selections, res)
}

func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) {


@@ 6953,13 7020,48 @@ func (ec *executionContext) ___Type_ofType(ctx context.Context, field graphql.Co
	return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res)
}

func (ec *executionContext) ___Type_specifiedByURL(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) {
	defer func() {
		if r := recover(); r != nil {
			ec.Error(ctx, ec.Recover(ctx, r))
			ret = graphql.Null
		}
	}()
	fc := &graphql.FieldContext{
		Object:     "__Type",
		Field:      field,
		Args:       nil,
		IsMethod:   true,
		IsResolver: false,
	}

	ctx = graphql.WithFieldContext(ctx, fc)
	resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
		ctx = rctx // use context from middleware stack in children
		return obj.SpecifiedByURL(), nil
	})
	if err != nil {
		ec.Error(ctx, err)
		return graphql.Null
	}
	if resTmp == nil {
		return graphql.Null
	}
	res := resTmp.(*string)
	fc.Result = res
	return ec.marshalOString2ᚖstring(ctx, field.Selections, res)
}

// endregion **************************** field.gotpl *****************************

// region    **************************** input.gotpl *****************************

func (ec *executionContext) unmarshalInputEmailTriggerInput(ctx context.Context, obj interface{}) (model.EmailTriggerInput, error) {
	var it model.EmailTriggerInput
	var asMap = obj.(map[string]interface{})
	asMap := map[string]interface{}{}
	for k, v := range obj.(map[string]interface{}) {
		asMap[k] = v
	}

	for k, v := range asMap {
		switch k {


@@ 6995,7 7097,10 @@ func (ec *executionContext) unmarshalInputEmailTriggerInput(ctx context.Context,

func (ec *executionContext) unmarshalInputTriggerInput(ctx context.Context, obj interface{}) (model.TriggerInput, error) {
	var it model.TriggerInput
	var asMap = obj.(map[string]interface{})
	asMap := map[string]interface{}{}
	for k, v := range obj.(map[string]interface{}) {
		asMap[k] = v
	}

	for k, v := range asMap {
		switch k {


@@ 7039,7 7144,10 @@ func (ec *executionContext) unmarshalInputTriggerInput(ctx context.Context, obj 

func (ec *executionContext) unmarshalInputWebhookTriggerInput(ctx context.Context, obj interface{}) (model.WebhookTriggerInput, error) {
	var it model.WebhookTriggerInput
	var asMap = obj.(map[string]interface{})
	asMap := map[string]interface{}{}
	for k, v := range obj.(map[string]interface{}) {
		asMap[k] = v
	}

	for k, v := range asMap {
		switch k {


@@ 7138,7 7246,6 @@ var artifactImplementors = []string{"Artifact"}

func (ec *executionContext) _Artifact(ctx context.Context, sel ast.SelectionSet, obj *model.Artifact) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, artifactImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {


@@ 7146,27 7253,52 @@ func (ec *executionContext) _Artifact(ctx context.Context, sel ast.SelectionSet,
		case "__typename":
			out.Values[i] = graphql.MarshalString("Artifact")
		case "id":
			out.Values[i] = ec._Artifact_id(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Artifact_id(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "created":
			out.Values[i] = ec._Artifact_created(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Artifact_created(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "path":
			out.Values[i] = ec._Artifact_path(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Artifact_path(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "size":
			out.Values[i] = ec._Artifact_size(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Artifact_size(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "url":
			out.Values[i] = ec._Artifact_url(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Artifact_url(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		default:
			panic("unknown field " + strconv.Quote(field.Name))
		}


@@ 7182,7 7314,6 @@ var emailTriggerImplementors = []string{"EmailTrigger", "Trigger"}

func (ec *executionContext) _EmailTrigger(ctx context.Context, sel ast.SelectionSet, obj *model.EmailTrigger) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, emailTriggerImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {


@@ 7190,19 7321,39 @@ func (ec *executionContext) _EmailTrigger(ctx context.Context, sel ast.Selection
		case "__typename":
			out.Values[i] = graphql.MarshalString("EmailTrigger")
		case "condition":
			out.Values[i] = ec._EmailTrigger_condition(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._EmailTrigger_condition(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "to":
			out.Values[i] = ec._EmailTrigger_to(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._EmailTrigger_to(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "cc":
			out.Values[i] = ec._EmailTrigger_cc(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._EmailTrigger_cc(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "inReplyTo":
			out.Values[i] = ec._EmailTrigger_inReplyTo(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._EmailTrigger_inReplyTo(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		default:
			panic("unknown field " + strconv.Quote(field.Name))
		}


@@ 7218,7 7369,6 @@ var jobImplementors = []string{"Job"}

func (ec *executionContext) _Job(ctx context.Context, sel ast.SelectionSet, obj *model.Job) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, jobImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {


@@ 7226,47 7376,93 @@ func (ec *executionContext) _Job(ctx context.Context, sel ast.SelectionSet, obj 
		case "__typename":
			out.Values[i] = graphql.MarshalString("Job")
		case "id":
			out.Values[i] = ec._Job_id(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Job_id(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "created":
			out.Values[i] = ec._Job_created(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Job_created(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "updated":
			out.Values[i] = ec._Job_updated(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Job_updated(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "status":
			out.Values[i] = ec._Job_status(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Job_status(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "manifest":
			out.Values[i] = ec._Job_manifest(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Job_manifest(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "note":
			out.Values[i] = ec._Job_note(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Job_note(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "tags":
			out.Values[i] = ec._Job_tags(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Job_tags(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "image":
			out.Values[i] = ec._Job_image(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Job_image(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "runner":
			out.Values[i] = ec._Job_runner(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Job_runner(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "owner":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 7277,10 7473,16 @@ func (ec *executionContext) _Job(ctx context.Context, sel ast.SelectionSet, obj 
					atomic.AddUint32(&invalids, 1)
				}
				return res
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return innerFunc(ctx)

			})
		case "group":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 7288,10 7490,16 @@ func (ec *executionContext) _Job(ctx context.Context, sel ast.SelectionSet, obj 
				}()
				res = ec._Job_group(ctx, field, obj)
				return res
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return innerFunc(ctx)

			})
		case "tasks":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 7302,10 7510,16 @@ func (ec *executionContext) _Job(ctx context.Context, sel ast.SelectionSet, obj 
					atomic.AddUint32(&invalids, 1)
				}
				return res
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return innerFunc(ctx)

			})
		case "artifacts":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 7316,10 7530,16 @@ func (ec *executionContext) _Job(ctx context.Context, sel ast.SelectionSet, obj 
					atomic.AddUint32(&invalids, 1)
				}
				return res
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return innerFunc(ctx)

			})
		case "log":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 7327,10 7547,16 @@ func (ec *executionContext) _Job(ctx context.Context, sel ast.SelectionSet, obj 
				}()
				res = ec._Job_log(ctx, field, obj)
				return res
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return innerFunc(ctx)

			})
		case "secrets":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 7338,6 7564,11 @@ func (ec *executionContext) _Job(ctx context.Context, sel ast.SelectionSet, obj 
				}()
				res = ec._Job_secrets(ctx, field, obj)
				return res
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return innerFunc(ctx)

			})
		default:
			panic("unknown field " + strconv.Quote(field.Name))


@@ 7354,7 7585,6 @@ var jobCursorImplementors = []string{"JobCursor"}

func (ec *executionContext) _JobCursor(ctx context.Context, sel ast.SelectionSet, obj *model.JobCursor) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, jobCursorImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {


@@ 7362,12 7592,22 @@ func (ec *executionContext) _JobCursor(ctx context.Context, sel ast.SelectionSet
		case "__typename":
			out.Values[i] = graphql.MarshalString("JobCursor")
		case "results":
			out.Values[i] = ec._JobCursor_results(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._JobCursor_results(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "cursor":
			out.Values[i] = ec._JobCursor_cursor(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._JobCursor_cursor(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		default:
			panic("unknown field " + strconv.Quote(field.Name))
		}


@@ 7383,7 7623,6 @@ var jobGroupImplementors = []string{"JobGroup"}

func (ec *executionContext) _JobGroup(ctx context.Context, sel ast.SelectionSet, obj *model.JobGroup) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, jobGroupImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {


@@ 7391,20 7630,36 @@ func (ec *executionContext) _JobGroup(ctx context.Context, sel ast.SelectionSet,
		case "__typename":
			out.Values[i] = graphql.MarshalString("JobGroup")
		case "id":
			out.Values[i] = ec._JobGroup_id(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._JobGroup_id(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "created":
			out.Values[i] = ec._JobGroup_created(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._JobGroup_created(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "note":
			out.Values[i] = ec._JobGroup_note(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._JobGroup_note(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "owner":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 7415,10 7670,16 @@ func (ec *executionContext) _JobGroup(ctx context.Context, sel ast.SelectionSet,
					atomic.AddUint32(&invalids, 1)
				}
				return res
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return innerFunc(ctx)

			})
		case "jobs":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 7429,10 7690,16 @@ func (ec *executionContext) _JobGroup(ctx context.Context, sel ast.SelectionSet,
					atomic.AddUint32(&invalids, 1)
				}
				return res
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return innerFunc(ctx)

			})
		case "triggers":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 7443,6 7710,11 @@ func (ec *executionContext) _JobGroup(ctx context.Context, sel ast.SelectionSet,
					atomic.AddUint32(&invalids, 1)
				}
				return res
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return innerFunc(ctx)

			})
		default:
			panic("unknown field " + strconv.Quote(field.Name))


@@ 7459,7 7731,6 @@ var logImplementors = []string{"Log"}

func (ec *executionContext) _Log(ctx context.Context, sel ast.SelectionSet, obj *model.Log) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, logImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {


@@ 7467,12 7738,22 @@ func (ec *executionContext) _Log(ctx context.Context, sel ast.SelectionSet, obj 
		case "__typename":
			out.Values[i] = graphql.MarshalString("Log")
		case "last128KiB":
			out.Values[i] = ec._Log_last128KiB(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Log_last128KiB(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "fullURL":
			out.Values[i] = ec._Log_fullURL(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Log_fullURL(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}


@@ 7491,7 7772,6 @@ var mutationImplementors = []string{"Mutation"}

func (ec *executionContext) _Mutation(ctx context.Context, sel ast.SelectionSet) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, mutationImplementors)

	ctx = graphql.WithFieldContext(ctx, &graphql.FieldContext{
		Object: "Mutation",
	})


@@ 7499,33 7779,83 @@ func (ec *executionContext) _Mutation(ctx context.Context, sel ast.SelectionSet)
	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {
		innerCtx := graphql.WithRootFieldContext(ctx, &graphql.RootFieldContext{
			Object: field.Name,
			Field:  field,
		})

		switch field.Name {
		case "__typename":
			out.Values[i] = graphql.MarshalString("Mutation")
		case "submit":
			out.Values[i] = ec._Mutation_submit(ctx, field)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Mutation_submit(ctx, field)
			}

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, innerFunc)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "start":
			out.Values[i] = ec._Mutation_start(ctx, field)
		case "cancel":
			out.Values[i] = ec._Mutation_cancel(ctx, field)
		case "createGroup":
			out.Values[i] = ec._Mutation_createGroup(ctx, field)
			if out.Values[i] == graphql.Null {
				invalids++
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Mutation_start(ctx, field)
			}
		case "startGroup":
			out.Values[i] = ec._Mutation_startGroup(ctx, field)

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, innerFunc)

		case "cancel":
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Mutation_cancel(ctx, field)
			}

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, innerFunc)

		case "createGroup":
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Mutation_createGroup(ctx, field)
			}

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, innerFunc)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "startGroup":
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Mutation_startGroup(ctx, field)
			}

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, innerFunc)

		case "claim":
			out.Values[i] = ec._Mutation_claim(ctx, field)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Mutation_claim(ctx, field)
			}

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, innerFunc)

		case "updateJob":
			out.Values[i] = ec._Mutation_updateJob(ctx, field)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Mutation_updateJob(ctx, field)
			}

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, innerFunc)

		case "updateTask":
			out.Values[i] = ec._Mutation_updateTask(ctx, field)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Mutation_updateTask(ctx, field)
			}

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, innerFunc)

		case "createArtifact":
			out.Values[i] = ec._Mutation_createArtifact(ctx, field)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Mutation_createArtifact(ctx, field)
			}

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, innerFunc)

		default:
			panic("unknown field " + strconv.Quote(field.Name))
		}


@@ 7541,7 7871,6 @@ var pGPKeyImplementors = []string{"PGPKey", "Secret"}

func (ec *executionContext) _PGPKey(ctx context.Context, sel ast.SelectionSet, obj *model.PGPKey) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, pGPKeyImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {


@@ 7549,25 7878,46 @@ func (ec *executionContext) _PGPKey(ctx context.Context, sel ast.SelectionSet, o
		case "__typename":
			out.Values[i] = graphql.MarshalString("PGPKey")
		case "id":
			out.Values[i] = ec._PGPKey_id(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._PGPKey_id(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "created":
			out.Values[i] = ec._PGPKey_created(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._PGPKey_created(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "uuid":
			out.Values[i] = ec._PGPKey_uuid(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._PGPKey_uuid(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "name":
			out.Values[i] = ec._PGPKey_name(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._PGPKey_name(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "privateKey":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 7578,6 7928,11 @@ func (ec *executionContext) _PGPKey(ctx context.Context, sel ast.SelectionSet, o
					atomic.AddUint32(&invalids, 1)
				}
				return res
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return innerFunc(ctx)

			})
		default:
			panic("unknown field " + strconv.Quote(field.Name))


@@ 7594,7 7949,6 @@ var queryImplementors = []string{"Query"}

func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, queryImplementors)

	ctx = graphql.WithFieldContext(ctx, &graphql.FieldContext{
		Object: "Query",
	})


@@ 7602,12 7956,18 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr
	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {
		innerCtx := graphql.WithRootFieldContext(ctx, &graphql.RootFieldContext{
			Object: field.Name,
			Field:  field,
		})

		switch field.Name {
		case "__typename":
			out.Values[i] = graphql.MarshalString("Query")
		case "version":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 7618,10 7978,19 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr
					atomic.AddUint32(&invalids, 1)
				}
				return res
			}

			rrm := func(ctx context.Context) graphql.Marshaler {
				return ec.OperationContext.RootResolverMiddleware(ctx, innerFunc)
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return rrm(innerCtx)
			})
		case "me":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 7632,10 8001,19 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr
					atomic.AddUint32(&invalids, 1)
				}
				return res
			}

			rrm := func(ctx context.Context) graphql.Marshaler {
				return ec.OperationContext.RootResolverMiddleware(ctx, innerFunc)
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return rrm(innerCtx)
			})
		case "userByID":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 7643,10 8021,19 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr
				}()
				res = ec._Query_userByID(ctx, field)
				return res
			}

			rrm := func(ctx context.Context) graphql.Marshaler {
				return ec.OperationContext.RootResolverMiddleware(ctx, innerFunc)
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return rrm(innerCtx)
			})
		case "userByName":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 7654,10 8041,19 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr
				}()
				res = ec._Query_userByName(ctx, field)
				return res
			}

			rrm := func(ctx context.Context) graphql.Marshaler {
				return ec.OperationContext.RootResolverMiddleware(ctx, innerFunc)
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return rrm(innerCtx)
			})
		case "jobs":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 7668,10 8064,19 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr
					atomic.AddUint32(&invalids, 1)
				}
				return res
			}

			rrm := func(ctx context.Context) graphql.Marshaler {
				return ec.OperationContext.RootResolverMiddleware(ctx, innerFunc)
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return rrm(innerCtx)
			})
		case "job":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 7679,10 8084,19 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr
				}()
				res = ec._Query_job(ctx, field)
				return res
			}

			rrm := func(ctx context.Context) graphql.Marshaler {
				return ec.OperationContext.RootResolverMiddleware(ctx, innerFunc)
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return rrm(innerCtx)
			})
		case "secrets":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 7693,11 8107,29 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr
					atomic.AddUint32(&invalids, 1)
				}
				return res
			}

			rrm := func(ctx context.Context) graphql.Marshaler {
				return ec.OperationContext.RootResolverMiddleware(ctx, innerFunc)
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return rrm(innerCtx)
			})
		case "__type":
			out.Values[i] = ec._Query___type(ctx, field)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Query___type(ctx, field)
			}

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, innerFunc)

		case "__schema":
			out.Values[i] = ec._Query___schema(ctx, field)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Query___schema(ctx, field)
			}

			out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, innerFunc)

		default:
			panic("unknown field " + strconv.Quote(field.Name))
		}


@@ 7713,7 8145,6 @@ var sSHKeyImplementors = []string{"SSHKey", "Secret"}

func (ec *executionContext) _SSHKey(ctx context.Context, sel ast.SelectionSet, obj *model.SSHKey) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, sSHKeyImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {


@@ 7721,25 8152,46 @@ func (ec *executionContext) _SSHKey(ctx context.Context, sel ast.SelectionSet, o
		case "__typename":
			out.Values[i] = graphql.MarshalString("SSHKey")
		case "id":
			out.Values[i] = ec._SSHKey_id(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._SSHKey_id(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "created":
			out.Values[i] = ec._SSHKey_created(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._SSHKey_created(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "uuid":
			out.Values[i] = ec._SSHKey_uuid(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._SSHKey_uuid(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "name":
			out.Values[i] = ec._SSHKey_name(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._SSHKey_name(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "privateKey":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 7750,6 8202,11 @@ func (ec *executionContext) _SSHKey(ctx context.Context, sel ast.SelectionSet, o
					atomic.AddUint32(&invalids, 1)
				}
				return res
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return innerFunc(ctx)

			})
		default:
			panic("unknown field " + strconv.Quote(field.Name))


@@ 7766,7 8223,6 @@ var secretCursorImplementors = []string{"SecretCursor"}

func (ec *executionContext) _SecretCursor(ctx context.Context, sel ast.SelectionSet, obj *model.SecretCursor) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, secretCursorImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {


@@ 7774,12 8230,22 @@ func (ec *executionContext) _SecretCursor(ctx context.Context, sel ast.Selection
		case "__typename":
			out.Values[i] = graphql.MarshalString("SecretCursor")
		case "results":
			out.Values[i] = ec._SecretCursor_results(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._SecretCursor_results(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "cursor":
			out.Values[i] = ec._SecretCursor_cursor(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._SecretCursor_cursor(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		default:
			panic("unknown field " + strconv.Quote(field.Name))
		}


@@ 7795,7 8261,6 @@ var secretFileImplementors = []string{"SecretFile", "Secret"}

func (ec *executionContext) _SecretFile(ctx context.Context, sel ast.SelectionSet, obj *model.SecretFile) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, secretFileImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {


@@ 7803,35 8268,66 @@ func (ec *executionContext) _SecretFile(ctx context.Context, sel ast.SelectionSe
		case "__typename":
			out.Values[i] = graphql.MarshalString("SecretFile")
		case "id":
			out.Values[i] = ec._SecretFile_id(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._SecretFile_id(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "created":
			out.Values[i] = ec._SecretFile_created(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._SecretFile_created(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "uuid":
			out.Values[i] = ec._SecretFile_uuid(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._SecretFile_uuid(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "name":
			out.Values[i] = ec._SecretFile_name(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._SecretFile_name(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "path":
			out.Values[i] = ec._SecretFile_path(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._SecretFile_path(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "mode":
			out.Values[i] = ec._SecretFile_mode(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._SecretFile_mode(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "data":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 7842,6 8338,11 @@ func (ec *executionContext) _SecretFile(ctx context.Context, sel ast.SelectionSe
					atomic.AddUint32(&invalids, 1)
				}
				return res
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return innerFunc(ctx)

			})
		default:
			panic("unknown field " + strconv.Quote(field.Name))


@@ 7858,7 8359,6 @@ var settingsImplementors = []string{"Settings"}

func (ec *executionContext) _Settings(ctx context.Context, sel ast.SelectionSet, obj *model.Settings) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, settingsImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {


@@ 7866,12 8366,22 @@ func (ec *executionContext) _Settings(ctx context.Context, sel ast.SelectionSet,
		case "__typename":
			out.Values[i] = graphql.MarshalString("Settings")
		case "sshUser":
			out.Values[i] = ec._Settings_sshUser(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Settings_sshUser(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "buildTimeout":
			out.Values[i] = ec._Settings_buildTimeout(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Settings_buildTimeout(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}


@@ 7890,7 8400,6 @@ var taskImplementors = []string{"Task"}

func (ec *executionContext) _Task(ctx context.Context, sel ast.SelectionSet, obj *model.Task) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, taskImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {


@@ 7898,33 8407,59 @@ func (ec *executionContext) _Task(ctx context.Context, sel ast.SelectionSet, obj
		case "__typename":
			out.Values[i] = graphql.MarshalString("Task")
		case "id":
			out.Values[i] = ec._Task_id(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Task_id(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "created":
			out.Values[i] = ec._Task_created(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Task_created(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "updated":
			out.Values[i] = ec._Task_updated(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Task_updated(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "name":
			out.Values[i] = ec._Task_name(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Task_name(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "status":
			out.Values[i] = ec._Task_status(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Task_status(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "log":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 7932,10 8467,16 @@ func (ec *executionContext) _Task(ctx context.Context, sel ast.SelectionSet, obj
				}()
				res = ec._Task_log(ctx, field, obj)
				return res
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return innerFunc(ctx)

			})
		case "job":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 7946,6 8487,11 @@ func (ec *executionContext) _Task(ctx context.Context, sel ast.SelectionSet, obj
					atomic.AddUint32(&invalids, 1)
				}
				return res
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return innerFunc(ctx)

			})
		default:
			panic("unknown field " + strconv.Quote(field.Name))


@@ 7962,7 8508,6 @@ var userImplementors = []string{"User", "Entity"}

func (ec *executionContext) _User(ctx context.Context, sel ast.SelectionSet, obj *model.User) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, userImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {


@@ 7970,44 8515,90 @@ func (ec *executionContext) _User(ctx context.Context, sel ast.SelectionSet, obj
		case "__typename":
			out.Values[i] = graphql.MarshalString("User")
		case "id":
			out.Values[i] = ec._User_id(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._User_id(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "created":
			out.Values[i] = ec._User_created(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._User_created(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "updated":
			out.Values[i] = ec._User_updated(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._User_updated(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "canonicalName":
			out.Values[i] = ec._User_canonicalName(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._User_canonicalName(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "username":
			out.Values[i] = ec._User_username(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._User_username(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "email":
			out.Values[i] = ec._User_email(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._User_email(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				atomic.AddUint32(&invalids, 1)
			}
		case "url":
			out.Values[i] = ec._User_url(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._User_url(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "location":
			out.Values[i] = ec._User_location(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._User_location(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "bio":
			out.Values[i] = ec._User_bio(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._User_bio(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "jobs":
			field := field
			out.Concurrently(i, func() (res graphql.Marshaler) {

			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				defer func() {
					if r := recover(); r != nil {
						ec.Error(ctx, ec.Recover(ctx, r))


@@ 8018,6 8609,11 @@ func (ec *executionContext) _User(ctx context.Context, sel ast.SelectionSet, obj
					atomic.AddUint32(&invalids, 1)
				}
				return res
			}

			out.Concurrently(i, func() graphql.Marshaler {
				return innerFunc(ctx)

			})
		default:
			panic("unknown field " + strconv.Quote(field.Name))


@@ 8034,7 8630,6 @@ var versionImplementors = []string{"Version"}

func (ec *executionContext) _Version(ctx context.Context, sel ast.SelectionSet, obj *model.Version) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, versionImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {


@@ 8042,24 8637,49 @@ func (ec *executionContext) _Version(ctx context.Context, sel ast.SelectionSet, 
		case "__typename":
			out.Values[i] = graphql.MarshalString("Version")
		case "major":
			out.Values[i] = ec._Version_major(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Version_major(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "minor":
			out.Values[i] = ec._Version_minor(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Version_minor(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "patch":
			out.Values[i] = ec._Version_patch(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Version_patch(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "deprecationDate":
			out.Values[i] = ec._Version_deprecationDate(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Version_deprecationDate(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "settings":
			out.Values[i] = ec._Version_settings(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._Version_settings(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}


@@ 8078,7 8698,6 @@ var webhookTriggerImplementors = []string{"WebhookTrigger", "Trigger"}

func (ec *executionContext) _WebhookTrigger(ctx context.Context, sel ast.SelectionSet, obj *model.WebhookTrigger) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, webhookTriggerImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {


@@ 8086,12 8705,22 @@ func (ec *executionContext) _WebhookTrigger(ctx context.Context, sel ast.Selecti
		case "__typename":
			out.Values[i] = graphql.MarshalString("WebhookTrigger")
		case "condition":
			out.Values[i] = ec._WebhookTrigger_condition(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._WebhookTrigger_condition(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "url":
			out.Values[i] = ec._WebhookTrigger_url(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec._WebhookTrigger_url(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}


@@ 8110,7 8739,6 @@ var __DirectiveImplementors = []string{"__Directive"}

func (ec *executionContext) ___Directive(ctx context.Context, sel ast.SelectionSet, obj *introspection.Directive) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, __DirectiveImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {


@@ 8118,19 8746,49 @@ func (ec *executionContext) ___Directive(ctx context.Context, sel ast.SelectionS
		case "__typename":
			out.Values[i] = graphql.MarshalString("__Directive")
		case "name":
			out.Values[i] = ec.___Directive_name(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Directive_name(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "description":
			out.Values[i] = ec.___Directive_description(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Directive_description(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "locations":
			out.Values[i] = ec.___Directive_locations(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Directive_locations(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "args":
			out.Values[i] = ec.___Directive_args(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Directive_args(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "isRepeatable":
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Directive_isRepeatable(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}


@@ 8149,7 8807,6 @@ var __EnumValueImplementors = []string{"__EnumValue"}

func (ec *executionContext) ___EnumValue(ctx context.Context, sel ast.SelectionSet, obj *introspection.EnumValue) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, __EnumValueImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {


@@ 8157,19 8814,39 @@ func (ec *executionContext) ___EnumValue(ctx context.Context, sel ast.SelectionS
		case "__typename":
			out.Values[i] = graphql.MarshalString("__EnumValue")
		case "name":
			out.Values[i] = ec.___EnumValue_name(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___EnumValue_name(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "description":
			out.Values[i] = ec.___EnumValue_description(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___EnumValue_description(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "isDeprecated":
			out.Values[i] = ec.___EnumValue_isDeprecated(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___EnumValue_isDeprecated(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "deprecationReason":
			out.Values[i] = ec.___EnumValue_deprecationReason(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___EnumValue_deprecationReason(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		default:
			panic("unknown field " + strconv.Quote(field.Name))
		}


@@ 8185,7 8862,6 @@ var __FieldImplementors = []string{"__Field"}

func (ec *executionContext) ___Field(ctx context.Context, sel ast.SelectionSet, obj *introspection.Field) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, __FieldImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {


@@ 8193,29 8869,59 @@ func (ec *executionContext) ___Field(ctx context.Context, sel ast.SelectionSet, 
		case "__typename":
			out.Values[i] = graphql.MarshalString("__Field")
		case "name":
			out.Values[i] = ec.___Field_name(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Field_name(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "description":
			out.Values[i] = ec.___Field_description(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Field_description(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "args":
			out.Values[i] = ec.___Field_args(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Field_args(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "type":
			out.Values[i] = ec.___Field_type(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Field_type(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "isDeprecated":
			out.Values[i] = ec.___Field_isDeprecated(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Field_isDeprecated(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "deprecationReason":
			out.Values[i] = ec.___Field_deprecationReason(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Field_deprecationReason(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		default:
			panic("unknown field " + strconv.Quote(field.Name))
		}


@@ 8231,7 8937,6 @@ var __InputValueImplementors = []string{"__InputValue"}

func (ec *executionContext) ___InputValue(ctx context.Context, sel ast.SelectionSet, obj *introspection.InputValue) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, __InputValueImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {


@@ 8239,19 8944,39 @@ func (ec *executionContext) ___InputValue(ctx context.Context, sel ast.Selection
		case "__typename":
			out.Values[i] = graphql.MarshalString("__InputValue")
		case "name":
			out.Values[i] = ec.___InputValue_name(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___InputValue_name(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "description":
			out.Values[i] = ec.___InputValue_description(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___InputValue_description(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "type":
			out.Values[i] = ec.___InputValue_type(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___InputValue_type(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "defaultValue":
			out.Values[i] = ec.___InputValue_defaultValue(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___InputValue_defaultValue(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		default:
			panic("unknown field " + strconv.Quote(field.Name))
		}


@@ 8267,29 8992,60 @@ var __SchemaImplementors = []string{"__Schema"}

func (ec *executionContext) ___Schema(ctx context.Context, sel ast.SelectionSet, obj *introspection.Schema) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, __SchemaImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {
		switch field.Name {
		case "__typename":
			out.Values[i] = graphql.MarshalString("__Schema")
		case "description":
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Schema_description(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "types":
			out.Values[i] = ec.___Schema_types(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Schema_types(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "queryType":
			out.Values[i] = ec.___Schema_queryType(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Schema_queryType(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "mutationType":
			out.Values[i] = ec.___Schema_mutationType(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Schema_mutationType(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "subscriptionType":
			out.Values[i] = ec.___Schema_subscriptionType(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Schema_subscriptionType(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "directives":
			out.Values[i] = ec.___Schema_directives(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Schema_directives(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}


@@ 8308,7 9064,6 @@ var __TypeImplementors = []string{"__Type"}

func (ec *executionContext) ___Type(ctx context.Context, sel ast.SelectionSet, obj *introspection.Type) graphql.Marshaler {
	fields := graphql.CollectFields(ec.OperationContext, sel, __TypeImplementors)

	out := graphql.NewFieldSet(fields)
	var invalids uint32
	for i, field := range fields {


@@ 8316,26 9071,78 @@ func (ec *executionContext) ___Type(ctx context.Context, sel ast.SelectionSet, o
		case "__typename":
			out.Values[i] = graphql.MarshalString("__Type")
		case "kind":
			out.Values[i] = ec.___Type_kind(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Type_kind(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

			if out.Values[i] == graphql.Null {
				invalids++
			}
		case "name":
			out.Values[i] = ec.___Type_name(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Type_name(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "description":
			out.Values[i] = ec.___Type_description(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Type_description(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "fields":
			out.Values[i] = ec.___Type_fields(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Type_fields(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "interfaces":
			out.Values[i] = ec.___Type_interfaces(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Type_interfaces(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "possibleTypes":
			out.Values[i] = ec.___Type_possibleTypes(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Type_possibleTypes(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "enumValues":
			out.Values[i] = ec.___Type_enumValues(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Type_enumValues(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "inputFields":
			out.Values[i] = ec.___Type_inputFields(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Type_inputFields(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "ofType":
			out.Values[i] = ec.___Type_ofType(ctx, field, obj)
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Type_ofType(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		case "specifiedByURL":
			innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
				return ec.___Type_specifiedByURL(ctx, field, obj)
			}

			out.Values[i] = innerFunc(ctx)

		default:
			panic("unknown field " + strconv.Quote(field.Name))
		}


@@ 8405,6 9212,13 @@ func (ec *executionContext) marshalNArtifact2ᚕᚖgitᚗsrᚗhtᚋאsircmpwnᚋ

	}
	wg.Wait()

	for _, e := range ret {
		if e == graphql.Null {
			return graphql.Null
		}
	}

	return ret
}



@@ 8491,11 9305,7 @@ func (ec *executionContext) marshalNInt2int(ctx context.Context, sel ast.Selecti
func (ec *executionContext) unmarshalNInt2ᚕintᚄ(ctx context.Context, v interface{}) ([]int, error) {
	var vSlice []interface{}
	if v != nil {
		if tmp1, ok := v.([]interface{}); ok {
			vSlice = tmp1
		} else {
			vSlice = []interface{}{v}
		}
		vSlice = graphql.CoerceList(v)
	}
	var err error
	res := make([]int, len(vSlice))


@@ 8515,6 9325,12 @@ func (ec *executionContext) marshalNInt2ᚕintᚄ(ctx context.Context, sel ast.S
		ret[i] = ec.marshalNInt2int(ctx, sel, v[i])
	}

	for _, e := range ret {
		if e == graphql.Null {
			return graphql.Null
		}
	}

	return ret
}



@@ 8556,6 9372,13 @@ func (ec *executionContext) marshalNJob2ᚕᚖgitᚗsrᚗhtᚋאsircmpwnᚋbuild

	}
	wg.Wait()

	for _, e := range ret {
		if e == graphql.Null {
			return graphql.Null
		}
	}

	return ret
}



@@ 8651,6 9474,13 @@ func (ec *executionContext) marshalNSecret2ᚕgitᚗsrᚗhtᚋאsircmpwnᚋbuild

	}
	wg.Wait()

	for _, e := range ret {
		if e == graphql.Null {
			return graphql.Null
		}
	}

	return ret
}



@@ 8696,11 9526,7 @@ func (ec *executionContext) marshalNString2string(ctx context.Context, sel ast.S
func (ec *executionContext) unmarshalNString2ᚕstringᚄ(ctx context.Context, v interface{}) ([]string, error) {
	var vSlice []interface{}
	if v != nil {
		if tmp1, ok := v.([]interface{}); ok {
			vSlice = tmp1
		} else {
			vSlice = []interface{}{v}
		}
		vSlice = graphql.CoerceList(v)
	}
	var err error
	res := make([]string, len(vSlice))


@@ 8720,6 9546,12 @@ func (ec *executionContext) marshalNString2ᚕstringᚄ(ctx context.Context, sel
		ret[i] = ec.marshalNString2string(ctx, sel, v[i])
	}

	for _, e := range ret {
		if e == graphql.Null {
			return graphql.Null
		}
	}

	return ret
}



@@ 8757,6 9589,13 @@ func (ec *executionContext) marshalNTask2ᚕᚖgitᚗsrᚗhtᚋאsircmpwnᚋbuil

	}
	wg.Wait()

	for _, e := range ret {
		if e == graphql.Null {
			return graphql.Null
		}
	}

	return ret
}



@@ 8839,6 9678,13 @@ func (ec *executionContext) marshalNTrigger2ᚕgitᚗsrᚗhtᚋאsircmpwnᚋbuil

	}
	wg.Wait()

	for _, e := range ret {
		if e == graphql.Null {
			return graphql.Null
		}
	}

	return ret
}



@@ 8933,6 9779,13 @@ func (ec *executionContext) marshalN__Directive2ᚕgithubᚗcomᚋ99designsᚋgq

	}
	wg.Wait()

	for _, e := range ret {
		if e == graphql.Null {
			return graphql.Null
		}
	}

	return ret
}



@@ 8954,11 9807,7 @@ func (ec *executionContext) marshalN__DirectiveLocation2string(ctx context.Conte
func (ec *executionContext) unmarshalN__DirectiveLocation2ᚕstringᚄ(ctx context.Context, v interface{}) ([]string, error) {
	var vSlice []interface{}
	if v != nil {
		if tmp1, ok := v.([]interface{}); ok {
			vSlice = tmp1
		} else {
			vSlice = []interface{}{v}
		}
		vSlice = graphql.CoerceList(v)
	}
	var err error
	res := make([]string, len(vSlice))


@@ 9006,6 9855,13 @@ func (ec *executionContext) marshalN__DirectiveLocation2ᚕstringᚄ(ctx context

	}
	wg.Wait()

	for _, e := range ret {
		if e == graphql.Null {
			return graphql.Null
		}
	}

	return ret
}



@@ 9055,6 9911,13 @@ func (ec *executionContext) marshalN__InputValue2ᚕgithubᚗcomᚋ99designsᚋg

	}
	wg.Wait()

	for _, e := range ret {
		if e == graphql.Null {
			return graphql.Null
		}
	}

	return ret
}



@@ 9096,6 9959,13 @@ func (ec *executionContext) marshalN__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgen

	}
	wg.Wait()

	for _, e := range ret {
		if e == graphql.Null {
			return graphql.Null
		}
	}

	return ret
}



@@ 9137,7 10007,8 @@ func (ec *executionContext) unmarshalOBoolean2bool(ctx context.Context, v interf
}

func (ec *executionContext) marshalOBoolean2bool(ctx context.Context, sel ast.SelectionSet, v bool) graphql.Marshaler {
	return graphql.MarshalBoolean(v)
	res := graphql.MarshalBoolean(v)
	return res
}

func (ec *executionContext) unmarshalOBoolean2ᚖbool(ctx context.Context, v interface{}) (*bool, error) {


@@ 9152,7 10023,8 @@ func (ec *executionContext) marshalOBoolean2ᚖbool(ctx context.Context, sel ast
	if v == nil {
		return graphql.Null
	}
	return graphql.MarshalBoolean(*v)
	res := graphql.MarshalBoolean(*v)
	return res
}

func (ec *executionContext) unmarshalOCursor2ᚖgitᚗsrᚗhtᚋאsircmpwnᚋcoreᚑgoᚋmodelᚐCursor(ctx context.Context, v interface{}) (*model1.Cursor, error) {


@@ 9237,6 10109,13 @@ func (ec *executionContext) marshalOSecret2ᚕgitᚗsrᚗhtᚋאsircmpwnᚋbuild

	}
	wg.Wait()

	for _, e := range ret {
		if e == graphql.Null {
			return graphql.Null
		}
	}

	return ret
}



@@ 9246,7 10125,8 @@ func (ec *executionContext) unmarshalOString2string(ctx context.Context, v inter
}

func (ec *executionContext) marshalOString2string(ctx context.Context, sel ast.SelectionSet, v string) graphql.Marshaler {
	return graphql.MarshalString(v)
	res := graphql.MarshalString(v)
	return res
}

func (ec *executionContext) unmarshalOString2ᚕstringᚄ(ctx context.Context, v interface{}) ([]string, error) {


@@ 9255,11 10135,7 @@ func (ec *executionContext) unmarshalOString2ᚕstringᚄ(ctx context.Context, v
	}
	var vSlice []interface{}
	if v != nil {
		if tmp1, ok := v.([]interface{}); ok {
			vSlice = tmp1
		} else {
			vSlice = []interface{}{v}
		}
		vSlice = graphql.CoerceList(v)
	}
	var err error
	res := make([]string, len(vSlice))


@@ 9282,6 10158,12 @@ func (ec *executionContext) marshalOString2ᚕstringᚄ(ctx context.Context, sel
		ret[i] = ec.marshalNString2string(ctx, sel, v[i])
	}

	for _, e := range ret {
		if e == graphql.Null {
			return graphql.Null
		}
	}

	return ret
}



@@ 9297,7 10179,8 @@ func (ec *executionContext) marshalOString2ᚖstring(ctx context.Context, sel as
	if v == nil {
		return graphql.Null
	}
	return graphql.MarshalString(*v)
	res := graphql.MarshalString(*v)
	return res
}

func (ec *executionContext) unmarshalOTime2ᚖtimeᚐTime(ctx context.Context, v interface{}) (*time.Time, error) {


@@ 9312,7 10195,8 @@ func (ec *executionContext) marshalOTime2ᚖtimeᚐTime(ctx context.Context, sel
	if v == nil {
		return graphql.Null
	}
	return graphql.MarshalTime(*v)
	res := graphql.MarshalTime(*v)
	return res
}

func (ec *executionContext) unmarshalOTriggerInput2ᚕᚖgitᚗsrᚗhtᚋאsircmpwnᚋbuildsᚗsrᚗhtᚋapiᚋgraphᚋmodelᚐTriggerInputᚄ(ctx context.Context, v interface{}) ([]*model.TriggerInput, error) {


@@ 9321,11 10205,7 @@ func (ec *executionContext) unmarshalOTriggerInput2ᚕᚖgitᚗsrᚗhtᚋאsircm
	}
	var vSlice []interface{}
	if v != nil {
		if tmp1, ok := v.([]interface{}); ok {
			vSlice = tmp1
		} else {
			vSlice = []interface{}{v}
		}
		vSlice = graphql.CoerceList(v)
	}
	var err error
	res := make([]*model.TriggerInput, len(vSlice))


@@ 9391,6 10271,13 @@ func (ec *executionContext) marshalO__EnumValue2ᚕgithubᚗcomᚋ99designsᚋgq

	}
	wg.Wait()

	for _, e := range ret {
		if e == graphql.Null {
			return graphql.Null
		}
	}

	return ret
}



@@ 9431,6 10318,13 @@ func (ec *executionContext) marshalO__Field2ᚕgithubᚗcomᚋ99designsᚋgqlgen

	}
	wg.Wait()

	for _, e := range ret {
		if e == graphql.Null {
			return graphql.Null
		}
	}

	return ret
}



@@ 9471,6 10365,13 @@ func (ec *executionContext) marshalO__InputValue2ᚕgithubᚗcomᚋ99designsᚋg

	}
	wg.Wait()

	for _, e := range ret {
		if e == graphql.Null {
			return graphql.Null
		}
	}

	return ret
}



@@ 9518,6 10419,13 @@ func (ec *executionContext) marshalO__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgen

	}
	wg.Wait()

	for _, e := range ret {
		if e == graphql.Null {
			return graphql.Null
		}
	}

	return ret
}


A api/loaders/generate.go => api/loaders/generate.go +13 -0
@@ 0,0 1,13 @@
//go:build generate
// +build generate

package loaders

import (
	_ "github.com/vektah/dataloaden"
)

//go:generate ./gen UsersByIDLoader int api/graph/model.User
//go:generate ./gen UsersByNameLoader string api/graph/model.User
//go:generate ./gen JobsByIDLoader int api/graph/model.Job
//go:generate ./gen JobGroupsByIDLoader int api/graph/model.JobGroup

M api/loaders/middleware.go => api/loaders/middleware.go +0 -5
@@ 1,10 1,5 @@
package loaders

//go:generate ./gen UsersByIDLoader int api/graph/model.User
//go:generate ./gen UsersByNameLoader string api/graph/model.User
//go:generate ./gen JobsByIDLoader int api/graph/model.Job
//go:generate ./gen JobGroupsByIDLoader int api/graph/model.JobGroup

import (
	"context"
	"database/sql"