Compare commits

..

269 Commits

Author SHA1 Message Date
Unbound Release 26614c9270 chore(release): prepare for v0.0.7 2024-10-22 18:48:43 +00:00
argoyle 75307f53ca ci: add release notes for goreleaser command in .gitlab-ci.yml 2024-10-22 19:44:02 +02:00
Renovate bf2248c53c chore(deps): update pre-commit hook gitleaks/gitleaks to v8.21.1 2024-10-18 13:52:58 +00:00
Renovate 1f071316d1 fix(deps): update module github.com/vektah/gqlparser/v2 to v2.5.18 2024-10-16 22:54:16 +00:00
Renovate 694434219c chore(deps): update pre-commit hook gitleaks/gitleaks to v8.21.0 2024-10-15 04:53:48 +00:00
Renovate 456c749db7 fix(deps): update module github.com/getsentry/sentry-go to v0.29.1 2024-10-14 13:54:31 +00:00
Renovate c28dbd5a61 chore(deps): update pre-commit hook gitleaks/gitleaks to v8.20.1 2024-10-07 19:53:46 +00:00
Renovate 4274303441 fix(deps): update module gitlab.com/unboundsoftware/eventsourced/amqp to v1.6.6 2024-10-06 16:54:01 +00:00
Renovate b51ad6526f fix(deps): update module gitlab.com/unboundsoftware/eventsourced/pg to v1.14.4 2024-10-06 13:54:13 +00:00
Renovate bd41057595 fix(deps): update module gitlab.com/unboundsoftware/eventsourced/eventsourced to v1.15.0 2024-10-06 10:55:29 +00:00
Renovate b091326684 chore(deps): update pre-commit hook pre-commit/pre-commit-hooks to v5 2024-10-06 09:02:04 +00:00
Renovate 114ce7f43d fix(deps): update module gitlab.com/unboundsoftware/eventsourced/amqp to v1.6.5 2024-10-05 19:54:57 +00:00
Renovate 0eb67f6144 fix(deps): update module github.com/99designs/gqlgen to v0.17.55 2024-10-04 09:44:05 +00:00
Renovate 42d13ff3c0 chore(deps): update pre-commit hook gitleaks/gitleaks to v8.20.0 2024-10-03 16:53:05 +00:00
Renovate 9203cc3396 chore(deps): update golang docker tag to v1.23.2 2024-10-02 04:32:46 +00:00
Renovate 93ea2f1627 chore(deps): update dependency go to v1.23.2 2024-10-01 19:55:31 +00:00
Renovate 6bf3ee8348 fix(deps): update module github.com/vektah/gqlparser/v2 to v2.5.17 2024-09-27 07:21:39 +00:00
Renovate e5ad0ba9cf chore(deps): update pre-commit hook gitleaks/gitleaks to v8.19.3 2024-09-26 16:53:04 +00:00
Renovate 84ef5b1750 fix(deps): update module github.com/99designs/gqlgen to v0.17.54 2024-09-20 17:01:52 +00:00
Renovate 7ea24199c0 chore(deps): update goreleaser/goreleaser docker tag to v2.3.2 2024-09-17 19:54:54 +00:00
Renovate 5cc4ed6f9d fix(deps): update module github.com/99designs/gqlgen to v0.17.53 2024-09-17 13:56:27 +00:00
Renovate ab7e4ed2cf fix(deps): update module github.com/pressly/goose/v3 to v3.22.1 2024-09-17 13:56:30 +00:00
Renovate 1ae6af6163 fix(deps): update module github.com/99designs/gqlgen to v0.17.52 2024-09-16 22:54:19 +00:00
argoyle c6748fc1ad ci: add generate check 2024-09-17 11:22:48 +02:00
Renovate 903738da9f chore(deps): update pre-commit hook gitleaks/gitleaks to v8.19.2 2024-09-16 16:54:24 +00:00
Renovate e0c775cba1 fix(deps): update module github.com/99designs/gqlgen to v0.17.51 2024-09-14 22:53:06 +00:00
Renovate e55acc3c6f fix(deps): update module github.com/99designs/gqlgen to v0.17.50 2024-09-14 12:56:44 +00:00
Renovate 09066e17d2 chore(deps): update pre-commit hook gitleaks/gitleaks to v8.19.1 2024-09-14 10:53:53 +00:00
argoyle 1d1041c6bf ci: update goreleaser image to v2.3.1 2024-09-14 10:57:11 +02:00
Renovate 0fd1a1ec2b fix(deps): update module github.com/alecthomas/kong to v1.2.1 2024-09-12 04:56:23 +00:00
Renovate 03ab5a77c7 chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.18.0 2024-09-11 10:53:13 +00:00
Renovate a268493733 fix(deps): update module github.com/alecthomas/kong to v1 2024-09-11 01:54:35 +00:00
Renovate 9f043af220 fix(deps): update module github.com/getsentry/sentry-go to v0.29.0 2024-09-10 12:23:16 +00:00
Renovate 35f3d16da8 chore(deps): update pre-commit hook golangci/golangci-lint to v1.61.0 2024-09-09 19:54:19 +00:00
Renovate ac87dcaf95 chore(deps): update golang docker tag to v1.23.1 2024-09-06 05:25:41 +00:00
Renovate 31b7497bc3 chore(deps): update dependency go to v1.23.1 2024-09-05 16:53:08 +00:00
Renovate aa7f44233b fix(deps): update module github.com/pressly/goose/v3 to v3.22.0 2024-09-03 13:53:31 +00:00
Renovate f52983b305 fix(deps): update module github.com/rs/cors to v1.11.1 2024-08-29 13:54:29 +00:00
Renovate dd94ae193d chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.17.0 2024-08-28 16:53:53 +00:00
Renovate e7e09b70aa fix(deps): update module github.com/auth0/go-jwt-middleware/v2 to v2.2.2 2024-08-23 19:53:12 +00:00
Renovate 9393a199fa fix(deps): update module github.com/sparetimecoders/goamqp to v0.3.1 2024-08-23 10:53:53 +00:00
Renovate c4e30881d6 chore(deps): update pre-commit hook golangci/golangci-lint to v1.60.3 2024-08-22 22:54:03 +00:00
Renovate 07ca26768e chore(deps): update pre-commit hook golangci/golangci-lint to v1.60.2 2024-08-20 22:53:31 +00:00
argoyle a7491261a0 chore: update golangci-lint hook identifier in pre-commit config 2024-08-19 21:35:36 +02:00
Renovate f36d5df9ad chore(deps): update golang docker tag to v1.23.0 2024-08-14 07:18:27 +00:00
Renovate 6152399901 chore(deps): update pre-commit hook golangci/golangci-lint to v1.60.1 2024-08-14 01:54:12 +00:00
Renovate bb4972abf9 chore(deps): update dependency go to v1.23.0 2024-08-13 16:53:46 +00:00
Renovate a7fc4d9189 chore(deps): update golang docker tag to v1.22.6 2024-08-07 01:54:18 +00:00
Renovate d941c83bce chore(deps): update dependency go to v1.22.6 2024-08-06 19:54:43 +00:00
Renovate 4fef4d9130 fix(deps): update module github.com/wundergraph/graphql-go-tools to v1.67.4 2024-07-10 10:53:00 +00:00
Renovate 69df8b4f77 chore(deps): update golang docker tag to v1.22.5 2024-07-03 01:53:11 +00:00
Renovate f41e2307cd chore(deps): update dependency go to v1.22.5 2024-07-02 19:54:11 +00:00
Renovate 5eb524e2eb fix(deps): update module github.com/pressly/goose/v3 to v3.21.1 2024-06-19 16:54:00 +00:00
Renovate 6b8332293c fix(deps): update module github.com/pressly/goose/v3 to v3.21.0 2024-06-19 13:54:07 +00:00
Renovate e897686b12 fix(deps): update module github.com/99designs/gqlgen to v0.17.49 2024-06-15 10:52:44 +00:00
Renovate 144d01bec5 chore(deps): update pre-commit hook gitleaks/gitleaks to v8.18.4 2024-06-15 08:10:59 +00:00
Renovate e90226aa77 fix(deps): update module github.com/wundergraph/graphql-go-tools to v1.67.3 2024-06-13 10:52:53 +00:00
Renovate a0af1955ca fix(deps): update module github.com/getsentry/sentry-go to v0.28.1 2024-06-13 08:16:52 +00:00
Renovate 6190438540 fix(deps): update module github.com/vektah/gqlparser/v2 to v2.5.16 2024-06-13 01:54:26 +00:00
Renovate 14489eed7f chore(deps): update pre-commit hook golangci/golangci-lint to v1.59.1 2024-06-09 19:52:44 +00:00
Renovate 49e4486cac fix(deps): update module github.com/99designs/gqlgen to v0.17.48 2024-06-07 04:53:42 +00:00
Renovate 190e70723b chore(deps): update golang docker tag to v1.22.4 2024-06-05 07:49:42 +00:00
Renovate c887dc969f chore(deps): update dependency go to v1.22.4 2024-06-04 19:53:41 +00:00
Renovate d0c553dd9c chore(deps): update pre-commit hook gitleaks/gitleaks to v8.18.3 2024-06-01 16:53:15 +00:00
Renovate eed427e50b fix(deps): update module github.com/getsentry/sentry-go to v0.28.0 2024-05-27 13:53:01 +00:00
Renovate bb90aec4c4 chore(deps): update pre-commit hook golangci/golangci-lint to v1.59.0 2024-05-26 19:52:43 +00:00
Renovate 44d966cc0d chore(deps): update pre-commit hook golangci/golangci-lint to v1.58.2 2024-05-20 04:36:13 +00:00
Renovate 9b52ac4d6b fix(deps): update module github.com/99designs/gqlgen to v0.17.47 2024-05-18 16:53:40 +00:00
Renovate ae74889f56 fix(deps): update module github.com/vektah/gqlparser/v2 to v2.5.12 2024-05-17 00:05:43 +00:00
Renovate 83886cf762 chore(deps): update pre-commit hook golangci/golangci-lint to v1.58.1 2024-05-08 19:53:22 +00:00
Renovate 4b9d7f7b1f fix(deps): update module github.com/99designs/gqlgen to v0.17.46 2024-05-08 08:54:25 +02:00
Renovate 9c64a7adce chore(deps): update golang docker tag to v1.22.3 2024-05-07 19:52:53 +00:00
Renovate 14cab92b11 chore(deps): update dependency go to v1.22.3 2024-05-07 16:53:15 +00:00
Renovate 28a069a8bb chore(deps): update pre-commit hook golangci/golangci-lint to v1.58.0 2024-05-03 19:53:14 +00:00
Renovate a07c304a6d fix(deps): update module github.com/rs/cors to v1.11.0 2024-04-24 13:53:28 +00:00
Renovate f6dee4b4af chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.16.0 2024-04-24 13:24:26 +00:00
Renovate 21fc644d39 fix(deps): update module github.com/jmoiron/sqlx to v1.4.0 2024-04-23 13:52:27 +00:00
Renovate b4d4ce9031 fix(deps): update module github.com/pressly/goose/v3 to v3.20.0 2024-04-22 13:53:54 +00:00
Renovate 038adeeddb chore(deps): update dependency go to v1.22.2 2024-04-17 19:52:42 +00:00
Renovate c5ec82b20a chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.15.0 2024-04-16 22:53:11 +00:00
Renovate 622fa3fca6 chore(deps): update pre-commit hook pre-commit/pre-commit-hooks to v4.6.0 2024-04-06 19:53:17 +00:00
argoyle 087ddaa7c1 fix: don't set fixed global_sequence_no 2024-04-04 15:25:51 +02:00
Renovate 4b21d4366c chore(deps): update golang docker tag to v1.22.2 2024-04-04 11:38:35 +00:00
argoyle 27da6e122d ci: add step for checking release 2024-04-03 19:57:35 +02:00
argoyle 4a8dc7d944 ci: remove deprecated replacements 2024-04-03 19:43:18 +02:00
argoyle df13983b09 ci: back to small and upgrade goreleaser 2024-04-03 19:15:04 +02:00
argoyle 9ce480e745 ci: run release on medium instance 2024-04-03 19:04:07 +02:00
Renovate 82d843f5ce chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.14.0 2024-04-03 13:52:04 +00:00
Renovate 9f11184d14 chore(deps): update pre-commit hook golangci/golangci-lint to v1.57.2 2024-03-28 20:52:10 +00:00
argoyle 6cd3b935e4 feat: add full SDL to SupGraph response 2024-03-25 21:46:15 +01:00
argoyle be878a3f2a chore: update resources 2024-03-24 09:20:48 +01:00
argoyle 8f9cf64e87 chore: add gitleaks to pre-commit setup 2024-03-22 23:29:08 +01:00
Renovate bfcd75c5eb fix(deps): update module github.com/wundergraph/graphql-go-tools to v1.67.2 2024-03-21 07:48:14 +00:00
Renovate 72704d8da4 chore(deps): update pre-commit hook golangci/golangci-lint to v1.57.1 2024-03-20 17:52:13 +00:00
Renovate 4ae55c588d fix(deps): update module gitlab.com/unboundsoftware/eventsourced/pg to v1.14.3 2024-03-20 11:53:16 +00:00
Renovate b8c940c49a chore(deps): update pre-commit hook golangci/golangci-lint to v1.57.0 2024-03-19 23:53:09 +00:00
Renovate 914f446924 fix(deps): update module gitlab.com/unboundsoftware/eventsourced/pg to v1.14.0 2024-03-18 08:52:24 +00:00
Renovate 9aa02a4de5 fix(deps): update module github.com/pressly/goose/v3 to v3.19.2 2024-03-13 14:52:40 +00:00
Renovate f31c91468a fix(deps): update module github.com/99designs/gqlgen to v0.17.45 2024-03-11 23:52:36 +00:00
Renovate dc2e1e72f4 fix(deps): update module github.com/pressly/goose/v3 to v3.19.1 2024-03-11 14:52:51 +00:00
Renovate 5eb0a261b7 fix(deps): update module github.com/alecthomas/kong to v0.9.0 2024-03-08 06:53:21 +00:00
Renovate f841e383f4 chore(deps): update golang docker tag to v1.22.1 2024-03-05 19:52:59 +00:00
Renovate 542c44e02d fix(deps): update module github.com/khan/genqlient to v0.7.0 2024-03-05 16:41:04 +00:00
Renovate 5b6910386c fix(deps): update module github.com/golang-jwt/jwt/v5 to v5.2.1 2024-03-05 02:53:11 +00:00
argoyle 17ae6953f8 fix: update default migrations 2024-03-01 21:51:24 +00:00
argoyle 9f388bddf4 chore: use OrbStack for local dev 2024-03-01 21:50:56 +00:00
Renovate 86bc1801b8 fix(deps): update module github.com/golang-jwt/jwt/v4 to v5 2024-03-01 22:40:58 +01:00
Renovate 04750fca3c chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.13.0 2024-03-01 17:52:02 +00:00
Renovate 35b5550061 fix(deps): update module github.com/stretchr/testify to v1.9.0 2024-03-01 12:53:36 +00:00
Renovate 7e84fe35eb chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.12.0 2024-02-26 21:52:59 +00:00
Renovate 2fd263332a chore(deps): update pre-commit hook pre-commit/pre-commit-hooks to v4.5.0 2024-02-26 09:08:43 +00:00
Renovate 25e4a8f253 chore(deps): update pre-commit hook lietu/go-pre-commit to v0.1.0 2024-02-26 08:52:18 +00:00
Renovate ace54c334a chore(deps): update pre-commit hook golangci/golangci-lint to v1.56.2 2024-02-26 07:52:21 +00:00
Renovate 2c6f9937cd chore(deps): update pre-commit hook alessandrojcm/commitlint-pre-commit-hook to v9.11.0 2024-02-26 07:02:33 +00:00
Renovate 831f5b974e chore(deps): update pre-commit hook devopshq/gitlab-ci-linter to v1.0.6 2024-02-26 06:52:16 +00:00
Renovate 9ef81d8b49 Add renovate.json 2024-02-23 23:29:30 +01:00
argoyle 8bd6310837 chore(deps): bump github.com/99designs/gqlgen from 0.17.43 to 0.17.44
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.43 to 0.17.44.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.43...v0.17.44)
2024-02-16 06:24:44 +00:00
argoyle 660f5d06c4 chore(deps): bump github.com/getsentry/sentry-go from 0.26.0 to 0.27.0
Bumps [github.com/getsentry/sentry-go](https://github.com/getsentry/sentry-go) from 0.26.0 to 0.27.0.
- [Release notes](https://github.com/getsentry/sentry-go/releases)
- [Changelog](https://github.com/getsentry/sentry-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-go/compare/v0.26.0...v0.27.0)
2024-02-08 06:24:56 +00:00
argoyle 6387c29c10 chore(deps): bump golang from 1.21.6 to 1.22.0
Bumps golang from 1.21.6 to 1.22.0.
2024-02-07 15:56:26 +01:00
argoyle 9b351731d6 chore(deps): bump gitlab.com/unboundsoftware/eventsourced/eventsourced
Bumps [gitlab.com/unboundsoftware/eventsourced/eventsourced](https://gitlab.com/unboundsoftware/eventsourced/eventsourced) from 1.14.0 to 1.14.2.
- [Commits](https://gitlab.com/unboundsoftware/eventsourced/eventsourced/compare/v1.14.0...v1.14.2)
2024-02-02 06:26:51 +00:00
argoyle d7bab5ca17 chore(deps): bump github.com/pressly/goose/v3 from 3.17.0 to 3.18.0
Bumps [github.com/pressly/goose/v3](https://github.com/pressly/goose) from 3.17.0 to 3.18.0.
- [Release notes](https://github.com/pressly/goose/releases)
- [Changelog](https://github.com/pressly/goose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pressly/goose/compare/v3.17.0...v3.18.0)
2024-02-01 06:25:05 +00:00
argoyle 8e3670e4ce chore(deps): bump github.com/wundergraph/graphql-go-tools
Bumps [github.com/wundergraph/graphql-go-tools](https://github.com/wundergraph/graphql-go-tools) from 1.67.0 to 1.67.1.
- [Release notes](https://github.com/wundergraph/graphql-go-tools/releases)
- [Commits](https://github.com/wundergraph/graphql-go-tools/compare/v1.67.0...v1.67.1)
2024-01-30 06:25:08 +00:00
argoyle 37cfb1568b chore(deps): bump github.com/auth0/go-jwt-middleware/v2
Bumps [github.com/auth0/go-jwt-middleware/v2](https://github.com/auth0/go-jwt-middleware) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/auth0/go-jwt-middleware/releases)
- [Changelog](https://github.com/auth0/go-jwt-middleware/blob/master/CHANGELOG.md)
- [Commits](https://github.com/auth0/go-jwt-middleware/compare/v2.2.0...v2.2.1)
2024-01-23 06:24:48 +00:00
argoyle 7c9b7ee0ad chore(deps): bump github.com/99designs/gqlgen from 0.17.42 to 0.17.43
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.42 to 0.17.43.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.42...v0.17.43)
2024-01-19 07:06:56 +00:00
argoyle 70bb3eb24a chore(deps): bump github.com/vektah/gqlparser/v2 from 2.5.10 to 2.5.11
Bumps [github.com/vektah/gqlparser/v2](https://github.com/vektah/gqlparser) from 2.5.10 to 2.5.11.
- [Release notes](https://github.com/vektah/gqlparser/releases)
- [Commits](https://github.com/vektah/gqlparser/compare/v2.5.10...v2.5.11)
2024-01-19 06:25:22 +00:00
argoyle 25abefe04f chore(deps): bump github.com/sparetimecoders/goamqp from 0.2.1 to 0.3.0
Bumps [github.com/sparetimecoders/goamqp](https://github.com/sparetimecoders/goamqp) from 0.2.1 to 0.3.0.
- [Release notes](https://github.com/sparetimecoders/goamqp/releases)
- [Commits](https://github.com/sparetimecoders/goamqp/compare/v0.2.1...v0.3.0)
2024-01-17 11:47:06 +01:00
argoyle 627d88cb38 chore(deps): bump github.com/getsentry/sentry-go from 0.25.0 to 0.26.0
Bumps [github.com/getsentry/sentry-go](https://github.com/getsentry/sentry-go) from 0.25.0 to 0.26.0.
- [Release notes](https://github.com/getsentry/sentry-go/releases)
- [Changelog](https://github.com/getsentry/sentry-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-go/compare/v0.25.0...v0.26.0)
2024-01-11 06:24:50 +00:00
argoyle fa2626ba28 chore(deps): bump golang from 1.21.5 to 1.21.6
Bumps golang from 1.21.5 to 1.21.6.
2024-01-10 13:13:54 +01:00
argoyle 92d33b078c chore(deps): bump github.com/99designs/gqlgen from 0.17.41 to 0.17.42
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.41 to 0.17.42.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.41...v0.17.42)
2024-01-02 09:36:00 +01:00
argoyle bed52ea25c chore(deps): bump github.com/sparetimecoders/goamqp from 0.2.0 to 0.2.1
Bumps [github.com/sparetimecoders/goamqp](https://github.com/sparetimecoders/goamqp) from 0.2.0 to 0.2.1.
- [Release notes](https://github.com/sparetimecoders/goamqp/releases)
- [Commits](https://github.com/sparetimecoders/goamqp/compare/v0.2.0...v0.2.1)
2023-12-19 06:25:11 +00:00
argoyle 1b1f7c7e03 chore(deps): bump gitlab.com/unboundsoftware/eventsourced/pg
Bumps [gitlab.com/unboundsoftware/eventsourced/pg](https://gitlab.com/unboundsoftware/eventsourced/pg) from 1.13.6 to 1.13.7.
- [Commits](https://gitlab.com/unboundsoftware/eventsourced/pg/compare/v1.13.6...v1.13.7)
2023-12-18 06:24:57 +00:00
argoyle 5474d7ebfa chore(deps): bump github.com/pressly/goose/v3 from 3.16.0 to 3.17.0
Bumps [github.com/pressly/goose/v3](https://github.com/pressly/goose) from 3.16.0 to 3.17.0.
- [Release notes](https://github.com/pressly/goose/releases)
- [Changelog](https://github.com/pressly/goose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pressly/goose/compare/v3.16.0...v3.17.0)
2023-12-16 06:25:09 +00:00
argoyle 16347b17b3 chore(deps): bump gitlab.com/unboundsoftware/eventsourced/pg
Bumps [gitlab.com/unboundsoftware/eventsourced/pg](https://gitlab.com/unboundsoftware/eventsourced/pg) from 1.13.5 to 1.13.6.
- [Commits](https://gitlab.com/unboundsoftware/eventsourced/pg/compare/v1.13.5...v1.13.6)
2023-12-15 06:25:04 +00:00
argoyle 99fd174228 chore(deps): bump golang from 1.21.4 to 1.21.5
Bumps golang from 1.21.4 to 1.21.5.
2023-12-06 16:23:01 +01:00
argoyle ad87e668a9 chore(deps): bump github.com/auth0/go-jwt-middleware/v2
Bumps [github.com/auth0/go-jwt-middleware/v2](https://github.com/auth0/go-jwt-middleware) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/auth0/go-jwt-middleware/releases)
- [Changelog](https://github.com/auth0/go-jwt-middleware/blob/master/CHANGELOG.md)
- [Commits](https://github.com/auth0/go-jwt-middleware/compare/v2.1.0...v2.2.0)
2023-12-05 06:25:24 +00:00
argoyle e2ab56ce1e chore(deps): bump github.com/99designs/gqlgen from 0.17.40 to 0.17.41
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.40 to 0.17.41.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.40...v0.17.41)
2023-12-04 08:42:54 +01:00
argoyle e6f9aedae7 chore(deps): bump gitlab.com/unboundsoftware/eventsourced/pg
Bumps [gitlab.com/unboundsoftware/eventsourced/pg](https://gitlab.com/unboundsoftware/eventsourced/pg) from 1.13.3 to 1.13.5.
- [Commits](https://gitlab.com/unboundsoftware/eventsourced/pg/compare/v1.13.3...v1.13.5)
2023-11-24 06:25:20 +00:00
argoyle 8d62f987d9 chore(deps): bump gitlab.com/unboundsoftware/eventsourced/pg
Bumps [gitlab.com/unboundsoftware/eventsourced/pg](https://gitlab.com/unboundsoftware/eventsourced/pg) from 1.13.2 to 1.13.3.
- [Commits](https://gitlab.com/unboundsoftware/eventsourced/pg/compare/v1.13.2...v1.13.3)
2023-11-18 06:24:51 +00:00
argoyle d34fb6472a chore(deps): bump github.com/pressly/goose/v3 from 3.15.1 to 3.16.0
Bumps [github.com/pressly/goose/v3](https://github.com/pressly/goose) from 3.15.1 to 3.16.0.
- [Release notes](https://github.com/pressly/goose/releases)
- [Changelog](https://github.com/pressly/goose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pressly/goose/compare/v3.15.1...v3.16.0)
2023-11-13 06:25:14 +00:00
argoyle 9c4c28404e chore(deps): bump gitlab.com/unboundsoftware/eventsourced/pg
Bumps [gitlab.com/unboundsoftware/eventsourced/pg](https://gitlab.com/unboundsoftware/eventsourced/pg) from 1.13.1 to 1.13.2.
- [Commits](https://gitlab.com/unboundsoftware/eventsourced/pg/compare/v1.13.1...v1.13.2)
2023-11-10 06:24:52 +00:00
argoyle 692cdb1328 chore(deps): bump golang from 1.21.3 to 1.21.4
Bumps golang from 1.21.3 to 1.21.4.
2023-11-08 19:13:08 +01:00
argoyle 4b0319d164 chore(deps): bump gitlab.com/unboundsoftware/eventsourced/pg
Bumps [gitlab.com/unboundsoftware/eventsourced/pg](https://gitlab.com/unboundsoftware/eventsourced/pg) from 1.12.0 to 1.13.1.
- [Commits](https://gitlab.com/unboundsoftware/eventsourced/pg/compare/v1.12.0...v1.13.1)
2023-10-27 16:04:50 +02:00
argoyle 3cefbd2095 chore(deps): bump gitlab.com/unboundsoftware/eventsourced/eventsourced
Bumps [gitlab.com/unboundsoftware/eventsourced/eventsourced](https://gitlab.com/unboundsoftware/eventsourced/eventsourced) from 1.13.0 to 1.14.0.
- [Commits](https://gitlab.com/unboundsoftware/eventsourced/eventsourced/compare/v1.13.0...v1.14.0)
2023-10-26 06:25:17 +00:00
argoyle 5d39cf3a40 chore(deps): bump github.com/99designs/gqlgen from 0.17.39 to 0.17.40
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.39 to 0.17.40.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.39...v0.17.40)
2023-10-25 06:25:13 +00:00
argoyle a18e53b6ea chore(deps): bump github.com/wundergraph/graphql-go-tools
Bumps [github.com/wundergraph/graphql-go-tools](https://github.com/wundergraph/graphql-go-tools) from 1.66.4 to 1.67.0.
- [Release notes](https://github.com/wundergraph/graphql-go-tools/releases)
- [Commits](https://github.com/wundergraph/graphql-go-tools/compare/v1.66.4...v1.67.0)
2023-10-13 06:24:47 +00:00
argoyle 766b4de009 chore(deps): bump github.com/alecthomas/kong from 0.8.0 to 0.8.1
Bumps [github.com/alecthomas/kong](https://github.com/alecthomas/kong) from 0.8.0 to 0.8.1.
- [Commits](https://github.com/alecthomas/kong/compare/v0.8.0...v0.8.1)
2023-10-12 06:24:44 +00:00
argoyle 6c24d11ac2 chore(deps): bump golang from 1.21.2 to 1.21.3
Bumps golang from 1.21.2 to 1.21.3.
2023-10-11 15:26:16 +02:00
argoyle 916b9ed121 chore(deps): bump github.com/pressly/goose/v3 from 3.15.0 to 3.15.1
Bumps [github.com/pressly/goose/v3](https://github.com/pressly/goose) from 3.15.0 to 3.15.1.
- [Release notes](https://github.com/pressly/goose/releases)
- [Changelog](https://github.com/pressly/goose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pressly/goose/compare/v3.15.0...v3.15.1)
2023-10-11 06:25:00 +00:00
argoyle 55f49c7500 chore(deps): bump golang from 1.21.1 to 1.21.2
Bumps golang from 1.21.1 to 1.21.2.
2023-10-06 13:34:05 +02:00
argoyle 873aaec785 chore(deps): bump github.com/99designs/gqlgen from 0.17.38 to 0.17.39
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.38 to 0.17.39.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.38...v0.17.39)
2023-10-06 11:37:21 +02:00
argoyle 3fd15e414e chore(deps): bump github.com/sparetimecoders/goamqp from 0.1.5 to 0.2.0
Bumps [github.com/sparetimecoders/goamqp](https://github.com/sparetimecoders/goamqp) from 0.1.5 to 0.2.0.
- [Release notes](https://github.com/sparetimecoders/goamqp/releases)
- [Commits](https://github.com/sparetimecoders/goamqp/compare/v0.1.5...v0.2.0)
2023-10-05 09:10:37 +00:00
argoyle ef5beccd4b chore(deps): bump github.com/getsentry/sentry-go from 0.24.1 to 0.25.0
Bumps [github.com/getsentry/sentry-go](https://github.com/getsentry/sentry-go) from 0.24.1 to 0.25.0.
- [Release notes](https://github.com/getsentry/sentry-go/releases)
- [Changelog](https://github.com/getsentry/sentry-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-go/compare/v0.24.1...v0.25.0)
2023-10-05 06:25:20 +00:00
argoyle 25941a82f2 chore(deps): bump github.com/rs/cors from 1.10.0 to 1.10.1
Bumps [github.com/rs/cors](https://github.com/rs/cors) from 1.10.0 to 1.10.1.
- [Release notes](https://github.com/rs/cors/releases)
- [Commits](https://github.com/rs/cors/compare/v1.10.0...v1.10.1)
2023-10-02 13:03:55 +00:00
argoyle 70ecb12234 chore(deps): bump github.com/wundergraph/graphql-go-tools
Bumps [github.com/wundergraph/graphql-go-tools](https://github.com/wundergraph/graphql-go-tools) from 1.66.3 to 1.66.4.
- [Release notes](https://github.com/wundergraph/graphql-go-tools/releases)
- [Commits](https://github.com/wundergraph/graphql-go-tools/compare/v1.66.3...v1.66.4)
2023-09-29 06:24:59 +00:00
argoyle 06e71fac68 chore(deps): bump github.com/99designs/gqlgen from 0.17.37 to 0.17.38
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.37 to 0.17.38.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.37...v0.17.38)
2023-09-20 10:24:35 +00:00
argoyle 8685fcbfdc chore(deps): bump github.com/vektah/gqlparser/v2 from 2.5.9 to 2.5.10
Bumps [github.com/vektah/gqlparser/v2](https://github.com/vektah/gqlparser) from 2.5.9 to 2.5.10.
- [Release notes](https://github.com/vektah/gqlparser/releases)
- [Commits](https://github.com/vektah/gqlparser/compare/v2.5.9...v2.5.10)
2023-09-20 06:25:12 +00:00
argoyle 1728a363dd chore(deps): bump github.com/getsentry/sentry-go from 0.24.0 to 0.24.1
Bumps [github.com/getsentry/sentry-go](https://github.com/getsentry/sentry-go) from 0.24.0 to 0.24.1.
- [Release notes](https://github.com/getsentry/sentry-go/releases)
- [Changelog](https://github.com/getsentry/sentry-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-go/compare/v0.24.0...v0.24.1)
2023-09-14 06:24:50 +00:00
argoyle bb8cecb3ce chore(deps): bump github.com/99designs/gqlgen from 0.17.36 to 0.17.37
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.36 to 0.17.37.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.36...v0.17.37)
2023-09-11 09:42:33 +00:00
argoyle 4063d2cb06 chore(deps): bump github.com/vektah/gqlparser/v2 from 2.5.8 to 2.5.9
Bumps [github.com/vektah/gqlparser/v2](https://github.com/vektah/gqlparser) from 2.5.8 to 2.5.9.
- [Release notes](https://github.com/vektah/gqlparser/releases)
- [Commits](https://github.com/vektah/gqlparser/compare/v2.5.8...v2.5.9)
2023-09-09 06:25:37 +00:00
argoyle b6de9ceb45 ci: update to Go 1.21.1 for vulnerabilities 2023-09-08 07:10:35 +02:00
argoyle 476ebab80a chore(deps): bump golang from 1.21.0 to 1.21.1
Bumps golang from 1.21.0 to 1.21.1.
2023-09-07 11:27:37 +00:00
argoyle c8bc2e2e9e chore(deps): bump github.com/rs/cors from 1.9.0 to 1.10.0
Bumps [github.com/rs/cors](https://github.com/rs/cors) from 1.9.0 to 1.10.0.
- [Release notes](https://github.com/rs/cors/releases)
- [Commits](https://github.com/rs/cors/compare/v1.9.0...v1.10.0)
2023-09-06 15:25:56 +00:00
argoyle c82ebc9501 chore(deps): bump github.com/getsentry/sentry-go from 0.23.0 to 0.24.0
Bumps [github.com/getsentry/sentry-go](https://github.com/getsentry/sentry-go) from 0.23.0 to 0.24.0.
- [Release notes](https://github.com/getsentry/sentry-go/releases)
- [Changelog](https://github.com/getsentry/sentry-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-go/compare/v0.23.0...v0.24.0)
2023-09-06 06:24:56 +00:00
argoyle 9475e9f686 ci: update pre-commit versions 2023-08-30 20:22:43 +02:00
argoyle 8e6593da55 ci: update to Golang 1.21.0 for vulnerabilities 2023-08-30 20:21:28 +02:00
argoyle 54289fc5bf chore(deps): bump github.com/wundergraph/graphql-go-tools
Bumps [github.com/wundergraph/graphql-go-tools](https://github.com/wundergraph/graphql-go-tools) from 1.66.2 to 1.66.3.
- [Release notes](https://github.com/wundergraph/graphql-go-tools/releases)
- [Commits](https://github.com/wundergraph/graphql-go-tools/compare/v1.66.2...v1.66.3)
2023-08-19 06:24:48 +00:00
argoyle d52469c5bc chore(deps): bump github.com/pressly/goose/v3 from 3.14.0 to 3.15.0
Bumps [github.com/pressly/goose/v3](https://github.com/pressly/goose) from 3.14.0 to 3.15.0.
- [Release notes](https://github.com/pressly/goose/releases)
- [Changelog](https://github.com/pressly/goose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pressly/goose/compare/v3.14.0...v3.15.0)
2023-08-13 06:25:13 +00:00
argoyle cb2b4ce867 chore(deps): bump golang from 1.20.7 to 1.21.0
Bumps golang from 1.20.7 to 1.21.0.
2023-08-09 11:27:18 +00:00
argoyle 0d97bce67e chore(deps): bump github.com/wundergraph/graphql-go-tools
Bumps [github.com/wundergraph/graphql-go-tools](https://github.com/wundergraph/graphql-go-tools) from 1.66.1 to 1.66.2.
- [Release notes](https://github.com/wundergraph/graphql-go-tools/releases)
- [Commits](https://github.com/wundergraph/graphql-go-tools/compare/v1.66.1...v1.66.2)
2023-08-09 06:25:02 +00:00
argoyle a59083fc9b chore(deps): bump github.com/wundergraph/graphql-go-tools
Bumps [github.com/wundergraph/graphql-go-tools](https://github.com/wundergraph/graphql-go-tools) from 1.66.0 to 1.66.1.
- [Release notes](https://github.com/wundergraph/graphql-go-tools/releases)
- [Commits](https://github.com/wundergraph/graphql-go-tools/compare/v1.66.0...v1.66.1)
2023-08-07 06:09:35 +00:00
argoyle c3bf827cac ci: update to Go 1.20.7 2023-08-07 08:08:54 +02:00
argoyle d6c7ccb429 chore(deps): bump golang from 1.20.6 to 1.20.7
Bumps golang from 1.20.6 to 1.20.7.
2023-08-02 11:27:24 +00:00
argoyle 1ed6a2ad8f chore(deps): bump github.com/getsentry/sentry-go from 0.22.0 to 0.23.0
Bumps [github.com/getsentry/sentry-go](https://github.com/getsentry/sentry-go) from 0.22.0 to 0.23.0.
- [Release notes](https://github.com/getsentry/sentry-go/releases)
- [Changelog](https://github.com/getsentry/sentry-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-go/compare/v0.22.0...v0.23.0)
2023-08-02 06:25:08 +00:00
argoyle 9bee6ab605 chore(deps): bump github.com/wundergraph/graphql-go-tools
Bumps [github.com/wundergraph/graphql-go-tools](https://github.com/wundergraph/graphql-go-tools) from 1.65.0 to 1.66.0.
- [Release notes](https://github.com/wundergraph/graphql-go-tools/releases)
- [Commits](https://github.com/wundergraph/graphql-go-tools/compare/v1.65.0...v1.66.0)
2023-08-01 06:24:47 +00:00
argoyle e8837aa51c chore(deps): bump github.com/99designs/gqlgen from 0.17.35 to 0.17.36
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.35 to 0.17.36.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.35...v0.17.36)
2023-07-28 14:47:14 +00:00
argoyle 6ec0771741 chore(deps): bump github.com/wundergraph/graphql-go-tools
Bumps [github.com/wundergraph/graphql-go-tools](https://github.com/wundergraph/graphql-go-tools) from 1.64.1 to 1.65.0.
- [Release notes](https://github.com/wundergraph/graphql-go-tools/releases)
- [Commits](https://github.com/wundergraph/graphql-go-tools/compare/v1.64.1...v1.65.0)
2023-07-28 06:25:39 +00:00
argoyle 82a768e989 chore(deps): bump github.com/pressly/goose/v3 from 3.13.4 to 3.14.0
Bumps [github.com/pressly/goose/v3](https://github.com/pressly/goose) from 3.13.4 to 3.14.0.
- [Release notes](https://github.com/pressly/goose/releases)
- [Changelog](https://github.com/pressly/goose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pressly/goose/compare/v3.13.4...v3.14.0)
2023-07-27 06:24:40 +00:00
argoyle 4f29428d6f chore(deps): bump github.com/wundergraph/graphql-go-tools
Bumps [github.com/wundergraph/graphql-go-tools](https://github.com/wundergraph/graphql-go-tools) from 1.64.0 to 1.64.1.
- [Release notes](https://github.com/wundergraph/graphql-go-tools/releases)
- [Commits](https://github.com/wundergraph/graphql-go-tools/compare/v1.64.0...v1.64.1)
2023-07-22 06:24:43 +00:00
argoyle 20ce86c7b7 chore(deps): bump github.com/vektah/gqlparser/v2 from 2.5.7 to 2.5.8
Bumps [github.com/vektah/gqlparser/v2](https://github.com/vektah/gqlparser) from 2.5.7 to 2.5.8.
- [Release notes](https://github.com/vektah/gqlparser/releases)
- [Commits](https://github.com/vektah/gqlparser/compare/v2.5.7...v2.5.8)
2023-07-18 06:24:51 +00:00
argoyle 283e45f34d chore(deps): bump github.com/99designs/gqlgen from 0.17.34 to 0.17.35
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.34 to 0.17.35.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.34...v0.17.35)
2023-07-16 08:53:35 +00:00
argoyle 5a108a6bbf chore(deps): bump github.com/vektah/gqlparser/v2 from 2.5.6 to 2.5.7
Bumps [github.com/vektah/gqlparser/v2](https://github.com/vektah/gqlparser) from 2.5.6 to 2.5.7.
- [Release notes](https://github.com/vektah/gqlparser/releases)
- [Commits](https://github.com/vektah/gqlparser/compare/v2.5.6...v2.5.7)
2023-07-16 06:25:05 +00:00
argoyle 9cc7d466ba chore(deps): bump golang from 1.20.5 to 1.20.6
Bumps golang from 1.20.5 to 1.20.6.
2023-07-12 14:33:30 +02:00
argoyle 640a98b4ca chore(deps): bump github.com/wundergraph/graphql-go-tools
Bumps [github.com/wundergraph/graphql-go-tools](https://github.com/wundergraph/graphql-go-tools) from 1.63.2 to 1.64.0.
- [Release notes](https://github.com/wundergraph/graphql-go-tools/releases)
- [Commits](https://github.com/wundergraph/graphql-go-tools/compare/v1.63.2...v1.64.0)
2023-07-11 06:24:46 +00:00
argoyle 22855cec52 chore(deps): bump gitlab.com/unboundsoftware/eventsourced/pg
Bumps [gitlab.com/unboundsoftware/eventsourced/pg](https://gitlab.com/unboundsoftware/eventsourced/pg) from 1.11.2 to 1.12.0.
- [Commits](https://gitlab.com/unboundsoftware/eventsourced/pg/compare/v1.11.2...v1.12.0)
2023-07-08 15:49:40 +00:00
argoyle 006e10b39f chore(deps): bump github.com/pressly/goose/v3 from 3.13.1 to 3.13.4
Bumps [github.com/pressly/goose/v3](https://github.com/pressly/goose) from 3.13.1 to 3.13.4.
- [Release notes](https://github.com/pressly/goose/releases)
- [Changelog](https://github.com/pressly/goose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pressly/goose/compare/v3.13.1...v3.13.4)
2023-07-08 06:25:04 +00:00
argoyle 6b6a799696 chore(deps): bump github.com/pressly/goose/v3 from 3.13.0 to 3.13.1
Bumps [github.com/pressly/goose/v3](https://github.com/pressly/goose) from 3.13.0 to 3.13.1.
- [Release notes](https://github.com/pressly/goose/releases)
- [Changelog](https://github.com/pressly/goose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pressly/goose/compare/v3.13.0...v3.13.1)
2023-07-04 06:31:25 +00:00
argoyle 129784cb47 chore(deps): bump github.com/sparetimecoders/goamqp from 0.1.4 to 0.1.5
Bumps [github.com/sparetimecoders/goamqp](https://github.com/sparetimecoders/goamqp) from 0.1.4 to 0.1.5.
- [Release notes](https://github.com/sparetimecoders/goamqp/releases)
- [Commits](https://github.com/sparetimecoders/goamqp/compare/v0.1.4...v0.1.5)
2023-07-04 06:25:14 +00:00
argoyle b976114489 chore(deps): bump github.com/pressly/goose/v3 from 3.11.2 to 3.13.0
Bumps [github.com/pressly/goose/v3](https://github.com/pressly/goose) from 3.11.2 to 3.13.0.
- [Release notes](https://github.com/pressly/goose/releases)
- [Changelog](https://github.com/pressly/goose/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pressly/goose/compare/v3.11.2...v3.13.0)
2023-06-30 06:25:06 +00:00
argoyle 28eb8fa9e1 chore(deps): bump github.com/vektah/gqlparser/v2 from 2.5.5 to 2.5.6
Bumps [github.com/vektah/gqlparser/v2](https://github.com/vektah/gqlparser) from 2.5.5 to 2.5.6.
- [Release notes](https://github.com/vektah/gqlparser/releases)
- [Commits](https://github.com/vektah/gqlparser/compare/v2.5.5...v2.5.6)
2023-06-28 06:24:52 +00:00
argoyle d4453319ee chore(deps): bump github.com/vektah/gqlparser/v2 from 2.5.3 to 2.5.5
Bumps [github.com/vektah/gqlparser/v2](https://github.com/vektah/gqlparser) from 2.5.3 to 2.5.5.
- [Release notes](https://github.com/vektah/gqlparser/releases)
- [Commits](https://github.com/vektah/gqlparser/compare/v2.5.3...v2.5.5)
2023-06-26 08:21:08 +00:00
argoyle 4646a8e3ab chore(deps): bump github.com/99designs/gqlgen from 0.17.33 to 0.17.34
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.33 to 0.17.34.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.33...v0.17.34)
2023-06-24 06:24:43 +00:00
argoyle ab3e0a3891 chore(deps): bump github.com/alecthomas/kong from 0.7.1 to 0.8.0
Bumps [github.com/alecthomas/kong](https://github.com/alecthomas/kong) from 0.7.1 to 0.8.0.
- [Commits](https://github.com/alecthomas/kong/compare/v0.7.1...v0.8.0)
2023-06-22 06:24:32 +00:00
argoyle 52beaf9cc6 chore(deps): bump github.com/getsentry/sentry-go from 0.21.0 to 0.22.0
Bumps [github.com/getsentry/sentry-go](https://github.com/getsentry/sentry-go) from 0.21.0 to 0.22.0.
- [Release notes](https://github.com/getsentry/sentry-go/releases)
- [Changelog](https://github.com/getsentry/sentry-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-go/compare/v0.21.0...v0.22.0)
2023-06-17 06:25:07 +00:00
argoyle 24b5693f22 chore(deps): bump github.com/99designs/gqlgen from 0.17.32 to 0.17.33
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.32 to 0.17.33.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.32...v0.17.33)
2023-06-14 15:13:54 +02:00
argoyle 8db459e636 chore(deps): bump github.com/vektah/gqlparser/v2
Bumps [github.com/vektah/gqlparser/v2](https://github.com/vektah/gqlparser) from 2.5.2-0.20230422221642-25e09f9d292d to 2.5.3.
- [Release notes](https://github.com/vektah/gqlparser/releases)
- [Commits](https://github.com/vektah/gqlparser/commits/v2.5.3)
2023-06-11 06:24:52 +00:00
argoyle 162c155002 chore(deps): bump github.com/wundergraph/graphql-go-tools
Bumps [github.com/wundergraph/graphql-go-tools](https://github.com/wundergraph/graphql-go-tools) from 1.63.1 to 1.63.2.
- [Release notes](https://github.com/wundergraph/graphql-go-tools/releases)
- [Commits](https://github.com/wundergraph/graphql-go-tools/compare/v1.63.1...v1.63.2)
2023-06-09 06:25:27 +00:00
argoyle 56317eb04b chore(deps): bump github.com/99designs/gqlgen from 0.17.31 to 0.17.32
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.31 to 0.17.32.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.31...v0.17.32)
2023-06-08 13:19:05 +02:00
argoyle f611d9ffb8 ci: update Go version for vulnerabilities 2023-06-08 13:11:57 +02:00
argoyle f44b62bf08 chore(deps): bump golang from 1.20.4 to 1.20.5
Bumps golang from 1.20.4 to 1.20.5.
2023-06-07 11:27:37 +00:00
argoyle 35a8907d81 ci: update golangci-lint 2023-06-04 16:46:38 +02:00
argoyle a5c3ac78de chore(deps): bump github.com/stretchr/testify from 1.8.3 to 1.8.4
Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.8.3 to 1.8.4.
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.8.3...v1.8.4)
2023-05-31 06:25:01 +00:00
argoyle a46895081e chore: actually validate API key privileges and refs 2023-05-29 22:13:25 +02:00
argoyle edf1485cd2 chore(deps): bump github.com/stretchr/testify from 1.8.2 to 1.8.3
Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.8.2 to 1.8.3.
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.8.2...v1.8.3)
2023-05-19 09:56:45 +00:00
argoyle 78e2f210cf chore: update pre-commit and fix golangci-lint 2023-05-19 09:23:13 +00:00
argoyle d913742236 chore(deps): bump github.com/wundergraph/graphql-go-tools
Bumps [github.com/wundergraph/graphql-go-tools](https://github.com/wundergraph/graphql-go-tools) from 1.63.0 to 1.63.1.
- [Release notes](https://github.com/wundergraph/graphql-go-tools/releases)
- [Commits](https://github.com/wundergraph/graphql-go-tools/compare/v1.63.0...v1.63.1)
2023-05-17 06:24:54 +00:00
argoyle 8646e2a408 chore(deps): bump github.com/sparetimecoders/goamqp from 0.1.3 to 0.1.4
Bumps [github.com/sparetimecoders/goamqp](https://github.com/sparetimecoders/goamqp) from 0.1.3 to 0.1.4.
- [Release notes](https://github.com/sparetimecoders/goamqp/releases)
- [Commits](https://github.com/sparetimecoders/goamqp/compare/v0.1.3...v0.1.4)
2023-05-11 06:24:44 +00:00
argoyle 018c370316 chore(deps): bump github.com/wundergraph/graphql-go-tools
Bumps [github.com/wundergraph/graphql-go-tools](https://github.com/wundergraph/graphql-go-tools) from 1.57.2-0.20221005155749-a4fdba38990b to 1.63.0.
- [Release notes](https://github.com/wundergraph/graphql-go-tools/releases)
- [Commits](https://github.com/wundergraph/graphql-go-tools/commits/v1.63.0)
2023-05-08 19:24:03 +00:00
argoyle eeaa1523a9 chore(deps): bump github.com/pressly/goose/v3 from 3.11.0 to 3.11.2
Bumps [github.com/pressly/goose/v3](https://github.com/pressly/goose) from 3.11.0 to 3.11.2.
- [Release notes](https://github.com/pressly/goose/releases)
- [Changelog](https://github.com/pressly/goose/blob/master/.goreleaser.yml)
- [Commits](https://github.com/pressly/goose/compare/v3.11.0...v3.11.2)
2023-05-08 19:22:04 +00:00
argoyle ea4db19cab chore(deps): bump github.com/getsentry/sentry-go from 0.20.0 to 0.21.0
Bumps [github.com/getsentry/sentry-go](https://github.com/getsentry/sentry-go) from 0.20.0 to 0.21.0.
- [Release notes](https://github.com/getsentry/sentry-go/releases)
- [Changelog](https://github.com/getsentry/sentry-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-go/compare/v0.20.0...v0.21.0)
2023-05-08 18:55:53 +00:00
argoyle 502051e963 chore(deps): bump github.com/Khan/genqlient from 0.5.0 to 0.6.0
Bumps [github.com/Khan/genqlient](https://github.com/Khan/genqlient) from 0.5.0 to 0.6.0.
- [Release notes](https://github.com/Khan/genqlient/releases)
- [Changelog](https://github.com/Khan/genqlient/blob/main/docs/CHANGELOG.md)
- [Commits](https://github.com/Khan/genqlient/compare/v0.5.0...v0.6.0)
2023-05-07 06:24:15 +00:00
argoyle bd70eac12d chore(deps): bump github.com/99designs/gqlgen from 0.17.30 to 0.17.31
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.30 to 0.17.31.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.30...v0.17.31)
2023-05-06 10:15:35 +02:00
argoyle 64be912d5a ci: update Go version for vulnerabilities 2023-05-06 10:14:40 +02:00
argoyle 2e45c2b8c1 fix: explicitly set dialect to make goose use correct version table 2023-05-05 10:46:16 +02:00
argoyle 58a20b3ab0 chore(deps): bump github.com/pressly/goose/v3 from 3.10.0 to 3.11.0
Bumps [github.com/pressly/goose/v3](https://github.com/pressly/goose) from 3.10.0 to 3.11.0.
- [Release notes](https://github.com/pressly/goose/releases)
- [Changelog](https://github.com/pressly/goose/blob/master/.goreleaser.yml)
- [Commits](https://github.com/pressly/goose/compare/v3.10.0...v3.11.0)
2023-05-05 06:24:26 +00:00
argoyle 2d0efcd622 chore(deps): bump golang from 1.20.3 to 1.20.4
Bumps golang from 1.20.3 to 1.20.4.
2023-05-03 11:27:51 +00:00
argoyle 554a6c252f feat: organizations and API keys 2023-04-27 07:46:52 +02:00
argoyle 504f40902e ci: fix Gitlab CI lint 2023-04-27 07:17:37 +02:00
argoyle e943f08746 chore(deps): bump github.com/99designs/gqlgen from 0.17.29 to 0.17.30
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.29 to 0.17.30.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.29...v0.17.30)
2023-04-21 09:57:09 +02:00
argoyle 264b818f92 chore(deps): bump gitlab.com/unboundsoftware/eventsourced/pg
Bumps [gitlab.com/unboundsoftware/eventsourced/pg](https://gitlab.com/unboundsoftware/eventsourced/pg) from 1.11.1 to 1.11.2.
- [Release notes](https://gitlab.com/unboundsoftware/eventsourced/pg/tags)
- [Commits](https://gitlab.com/unboundsoftware/eventsourced/pg/compare/v1.11.1...v1.11.2)
2023-04-21 06:24:51 +00:00
argoyle f2a0fb42f9 chore(deps): bump github.com/rs/cors from 1.8.3 to 1.9.0
Bumps [github.com/rs/cors](https://github.com/rs/cors) from 1.8.3 to 1.9.0.
- [Release notes](https://github.com/rs/cors/releases)
- [Commits](https://github.com/rs/cors/compare/v1.8.3...v1.9.0)
2023-04-14 06:24:35 +00:00
argoyle 90a1894c16 chore(deps): bump github.com/99designs/gqlgen from 0.17.28 to 0.17.29
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.28 to 0.17.29.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.28...v0.17.29)
2023-04-12 06:24:43 +00:00
argoyle ee2107b525 ci: update to Go 1.20.3 2023-04-06 10:27:44 +02:00
argoyle 6e661f7bd1 chore(deps): bump golang from 1.20.2 to 1.20.3
Bumps golang from 1.20.2 to 1.20.3.
2023-04-05 11:27:45 +00:00
argoyle 6714ced6de chore(deps): bump github.com/99designs/gqlgen from 0.17.27 to 0.17.28
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.27 to 0.17.28.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.27...v0.17.28)
2023-04-04 06:24:56 +00:00
argoyle fcbf357617 chore(deps): bump github.com/getsentry/sentry-go from 0.19.0 to 0.20.0
Bumps [github.com/getsentry/sentry-go](https://github.com/getsentry/sentry-go) from 0.19.0 to 0.20.0.
- [Release notes](https://github.com/getsentry/sentry-go/releases)
- [Changelog](https://github.com/getsentry/sentry-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-go/compare/v0.19.0...v0.20.0)
2023-04-01 06:25:06 +00:00
argoyle 38dd3fe879 chore: reduce sample rate 2023-03-30 14:32:59 +02:00
argoyle 01fb97e5b1 chore(deps): bump github.com/99designs/gqlgen from 0.17.26 to 0.17.27
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.26 to 0.17.27.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.26...v0.17.27)
2023-03-21 17:58:13 +01:00
argoyle f05b808980 ci: update Go verion for vulnerabilities scan 2023-03-21 17:56:40 +01:00
argoyle 02c0b909da chore(deps): bump github.com/99designs/gqlgen from 0.17.25 to 0.17.26
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.25 to 0.17.26.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.25...v0.17.26)
2023-03-08 14:32:44 +01:00
argoyle 6f5c3d68c4 chore(deps): bump golang from 1.20.1 to 1.20.2
Bumps golang from 1.20.1 to 1.20.2.
2023-03-08 12:36:28 +00:00
argoyle ff3197c4e3 chore(deps): bump github.com/getsentry/sentry-go from 0.18.0 to 0.19.0
Bumps [github.com/getsentry/sentry-go](https://github.com/getsentry/sentry-go) from 0.18.0 to 0.19.0.
- [Release notes](https://github.com/getsentry/sentry-go/releases)
- [Changelog](https://github.com/getsentry/sentry-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-go/compare/v0.18.0...v0.19.0)
2023-03-07 06:24:45 +00:00
argoyle 10552d5486 chore(deps): bump github.com/99designs/gqlgen from 0.17.24 to 0.17.25
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.24 to 0.17.25.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.24...v0.17.25)
2023-03-02 09:41:26 +01:00
argoyle c60e23a5a0 chore(deps): bump github.com/stretchr/testify from 1.8.1 to 1.8.2
Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.8.1 to 1.8.2.
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.8.1...v1.8.2)
2023-02-26 10:18:52 +00:00
argoyle d187d50a4c ci: update to golang 1.20.1 2023-02-26 11:10:22 +01:00
argoyle 3511c79acd chore(deps): bump golang from 1.20.0 to 1.20.1
Bumps golang from 1.20.0 to 1.20.1.
2023-02-15 11:27:23 +00:00
argoyle e4a300a0da ci: switch to manual rebases for Dependabot 2023-02-10 11:27:46 +01:00
argoyle 5a83e2bf39 chore(deps): bump github.com/getsentry/sentry-go from 0.17.0 to 0.18.0
Bumps [github.com/getsentry/sentry-go](https://github.com/getsentry/sentry-go) from 0.17.0 to 0.18.0.
- [Release notes](https://github.com/getsentry/sentry-go/releases)
- [Changelog](https://github.com/getsentry/sentry-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-go/compare/v0.17.0...v0.18.0)
2023-02-09 10:01:57 +00:00
argoyle 3407383f1f ci: use Docker DinD version from variable 2023-02-09 09:59:46 +01:00
argoyle fda1e2d2fd chore(deps): bump golang from 1.19.5 to 1.20.0
Bumps golang from 1.19.5 to 1.20.0.
2023-02-02 11:27:26 +00:00
argoyle 2dbfc81000 chore(deps): bump gitlab.com/unboundsoftware/eventsourced/eventsourced
Bumps [gitlab.com/unboundsoftware/eventsourced/eventsourced](https://gitlab.com/unboundsoftware/eventsourced/eventsourced) from 1.12.0 to 1.13.0.
- [Release notes](https://gitlab.com/unboundsoftware/eventsourced/eventsourced/tags)
- [Commits](https://gitlab.com/unboundsoftware/eventsourced/eventsourced/compare/v1.12.0...v1.13.0)
2023-01-27 07:45:31 +00:00
argoyle d72a2f5024 chore(deps): bump gitlab.com/unboundsoftware/eventsourced/pg
Bumps [gitlab.com/unboundsoftware/eventsourced/pg](https://gitlab.com/unboundsoftware/eventsourced/pg) from 1.11.0 to 1.11.1.
- [Release notes](https://gitlab.com/unboundsoftware/eventsourced/pg/tags)
- [Commits](https://gitlab.com/unboundsoftware/eventsourced/pg/compare/v1.11.0...v1.11.1)
2023-01-27 06:24:35 +00:00
argoyle 3bce4ac85f chore(deps): bump gitlab.com/unboundsoftware/eventsourced/pg
Bumps [gitlab.com/unboundsoftware/eventsourced/pg](https://gitlab.com/unboundsoftware/eventsourced/pg) from 1.10.3 to 1.11.0.
- [Release notes](https://gitlab.com/unboundsoftware/eventsourced/pg/tags)
- [Commits](https://gitlab.com/unboundsoftware/eventsourced/pg/compare/v1.10.3...v1.11.0)
2023-01-24 14:57:06 +01:00
argoyle 74ed79c342 chore(deps): bump gitlab.com/unboundsoftware/eventsourced/eventsourced
Bumps [gitlab.com/unboundsoftware/eventsourced/eventsourced](https://gitlab.com/unboundsoftware/eventsourced/eventsourced) from 1.11.5 to 1.12.0.
- [Release notes](https://gitlab.com/unboundsoftware/eventsourced/eventsourced/tags)
- [Commits](https://gitlab.com/unboundsoftware/eventsourced/eventsourced/compare/v1.11.5...v1.12.0)
2023-01-24 11:48:54 +00:00
argoyle e26e158e68 chore(deps): bump github.com/99designs/gqlgen from 0.17.22 to 0.17.24
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.22 to 0.17.24.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.22...v0.17.24)
2023-01-24 12:12:13 +01:00
argoyle 74d73ce78f chore(deps): bump gitlab.com/unboundsoftware/eventsourced/eventsourced
Bumps [gitlab.com/unboundsoftware/eventsourced/eventsourced](https://gitlab.com/unboundsoftware/eventsourced/eventsourced) from 1.11.4 to 1.11.5.
- [Release notes](https://gitlab.com/unboundsoftware/eventsourced/eventsourced/tags)
- [Commits](https://gitlab.com/unboundsoftware/eventsourced/eventsourced/compare/v1.11.4...v1.11.5)
2023-01-23 06:24:17 +00:00
argoyle 43992ff3b6 chore(deps): bump gitlab.com/unboundsoftware/eventsourced/eventsourced
Bumps [gitlab.com/unboundsoftware/eventsourced/eventsourced](https://gitlab.com/unboundsoftware/eventsourced/eventsourced) from 1.11.3 to 1.11.4.
- [Release notes](https://gitlab.com/unboundsoftware/eventsourced/eventsourced/tags)
- [Commits](https://gitlab.com/unboundsoftware/eventsourced/eventsourced/compare/v1.11.3...v1.11.4)
2023-01-20 06:24:24 +00:00
argoyle e11102baf7 ci: default ingress group 2023-01-19 21:07:11 +01:00
argoyle 64a39df110 ci: only ignore generated files with do not edit 2023-01-14 18:31:08 +00:00
argoyle 28a5fdf48e ci: add local module to pre-commit config 2023-01-13 13:51:24 +01:00
argoyle 19a9ffabb1 chore(deps): bump github.com/getsentry/sentry-go from 0.16.0 to 0.17.0
Bumps [github.com/getsentry/sentry-go](https://github.com/getsentry/sentry-go) from 0.16.0 to 0.17.0.
- [Release notes](https://github.com/getsentry/sentry-go/releases)
- [Changelog](https://github.com/getsentry/sentry-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-go/compare/v0.16.0...v0.17.0)
2023-01-13 06:24:20 +00:00
argoyle ed63264241 chore(deps): bump golang from 1.19.4 to 1.19.5
Bumps golang from 1.19.4 to 1.19.5.
2023-01-11 11:27:22 +00:00
argoyle 47ae698135 ci: improve docker caching 2023-01-09 17:55:42 +01:00
argoyle 9909aa726e chore: decrease trace sample rate 2023-01-09 07:28:22 +01:00
argoyle d3ec947991 fix: use correct healthcheck path 2023-01-08 20:40:53 +01:00
argoyle bd34c505ab chore: move to default ingress group 2023-01-04 13:06:38 +01:00
argoyle 7bcef10b38 chore(deps): bump github.com/rs/cors from 1.8.2 to 1.8.3
Bumps [github.com/rs/cors](https://github.com/rs/cors) from 1.8.2 to 1.8.3.
- [Release notes](https://github.com/rs/cors/releases)
- [Commits](https://github.com/rs/cors/compare/v1.8.2...v1.8.3)
2022-12-28 06:24:31 +00:00
argoyle 98a679d2d3 chore: add context and error handling 2022-12-17 14:36:42 +01:00
argoyle 80d3c44cb0 chore(deps): bump gitlab.com/unboundsoftware/eventsourced/pg
Bumps [gitlab.com/unboundsoftware/eventsourced/pg](https://gitlab.com/unboundsoftware/eventsourced/pg) from 1.9.0 to 1.10.3.
- [Release notes](https://gitlab.com/unboundsoftware/eventsourced/pg/tags)
- [Commits](https://gitlab.com/unboundsoftware/eventsourced/pg/compare/v1.9.0...v1.10.3)
2022-12-17 14:31:29 +01:00
argoyle 6541016676 chore(deps): bump gitlab.com/unboundsoftware/eventsourced/amqp
Bumps [gitlab.com/unboundsoftware/eventsourced/amqp](https://gitlab.com/unboundsoftware/eventsourced/amqp) from 1.5.0 to 1.6.4.
- [Release notes](https://gitlab.com/unboundsoftware/eventsourced/amqp/tags)
- [Commits](https://gitlab.com/unboundsoftware/eventsourced/amqp/compare/v1.5.0...v1.6.4)
2022-12-17 14:30:25 +01:00
argoyle d524305bb5 chore(deps): bump gitlab.com/unboundsoftware/eventsourced/eventsourced
Bumps [gitlab.com/unboundsoftware/eventsourced/eventsourced](https://gitlab.com/unboundsoftware/eventsourced/eventsourced) from 1.9.3 to 1.11.3.
- [Release notes](https://gitlab.com/unboundsoftware/eventsourced/eventsourced/tags)
- [Commits](https://gitlab.com/unboundsoftware/eventsourced/eventsourced/compare/v1.9.3...v1.11.3)
2022-12-17 06:24:28 +00:00
argoyle b8a8783838 feat: add Sentry setup 2022-12-16 15:41:47 +00:00
argoyle 577ad601ca feat: add Sentry setup 2022-12-16 16:02:16 +01:00
argoyle c5e43bd0a9 chore(deps): bump github.com/getsentry/sentry-go from 0.14.0 to 0.16.0
Bumps [github.com/getsentry/sentry-go](https://github.com/getsentry/sentry-go) from 0.14.0 to 0.16.0.
- [Release notes](https://github.com/getsentry/sentry-go/releases)
- [Changelog](https://github.com/getsentry/sentry-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-go/compare/v0.14.0...v0.16.0)
2022-12-16 14:29:03 +00:00
argoyle 27c78d8070 chore(deps): bump github.com/99designs/gqlgen from 0.17.20 to 0.17.22
Bumps [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) from 0.17.20 to 0.17.22.
- [Release notes](https://github.com/99designs/gqlgen/releases)
- [Changelog](https://github.com/99designs/gqlgen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/99designs/gqlgen/compare/v0.17.20...v0.17.22)
2022-12-16 15:21:45 +01:00
argoyle 658305e60a chore(deps): bump github.com/stretchr/testify from 1.8.0 to 1.8.1
Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.8.0 to 1.8.1.
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.8.0...v1.8.1)
2022-12-16 13:40:47 +00:00
argoyle 93162e03d7 chore(deps): bump github.com/alecthomas/kong from 0.6.1 to 0.7.1
Bumps [github.com/alecthomas/kong](https://github.com/alecthomas/kong) from 0.6.1 to 0.7.1.
- [Release notes](https://github.com/alecthomas/kong/releases)
- [Commits](https://github.com/alecthomas/kong/compare/v0.6.1...v0.7.1)
2022-12-16 13:33:19 +00:00
argoyle 66a29713cf ci: add pre-commit and remove those checks from Dockerfile 2022-12-16 10:13:54 +01:00
argoyle d23423c8dc Merge branch 'handle-updated-urls' into 'main'
chore: update schema if URLs have changed

See merge request unboundsoftware/schemas!2
2022-10-17 12:36:45 +00:00
argoyle 6b454ca8bf chore: update schema if URLs have changed 2022-10-17 14:30:48 +02:00
36 changed files with 3667 additions and 809 deletions
+2
View File
@@ -5,3 +5,5 @@ coverage.html
/exported
/release
/schemactl
CHANGES.md
VERSION
+45 -19
View File
@@ -1,12 +1,16 @@
include:
- template: 'Workflows/MergeRequest-Pipelines.gitlab-ci.yml'
- project: unboundsoftware/ci-templates
file: Release.gitlab-ci.yml
stages:
- build
- test
- deploy-prod
- release
variables:
UNBOUND_RELEASE_TAG_ONLY: true
DOCKER_HOST: tcp://docker:2376
DOCKER_TLS_CERTDIR: "/certs"
DOCKER_TLS_VERIFY: 1
@@ -16,7 +20,30 @@ variables:
.buildtools:
image: buildtool/build-tools:${BUILDTOOLS_VERSION}
services:
- docker:dind
- docker:${DOCKER_DIND_VERSION}
run-pre-commit:
stage: .pre
image: unbound/pre-commit
variables:
PRE_COMMIT_HOME: ${CI_PROJECT_DIR}/.cache/pre-commit
cache:
- key:
files:
- .pre-commit-config.yaml
paths:
- ${PRE_COMMIT_HOME}
script:
- pre-commit run --all-files
check:
stage: .pre
image: golang:1.23.2
script:
- go install mvdan.cc/gofumpt@latest
- go install golang.org/x/tools/cmd/goimports@latest
- go generate ./...
- git diff --stat --exit-code
build:
extends: .buildtools
@@ -30,7 +57,7 @@ build:
vulnerabilities:
stage: build
image: golang:1.19.2
image: golang:1.23.2
script:
- go install golang.org/x/vuln/cmd/govulncheck@latest
- govulncheck ./...
@@ -47,30 +74,29 @@ deploy-prod:
environment:
name: prod
check_release:
stage: test
image:
name: goreleaser/goreleaser:v2.3.2
entrypoint: [ '' ]
script: |
goreleaser check
goreleaser release --snapshot --clean
release:
stage: release
image: docker:stable
services:
- docker:dind
needs:
- unbound_release_prepare_release
image:
name: goreleaser/goreleaser:v2.3.2
entrypoint: [ '' ]
variables:
GORELEASER_IMAGE: goreleaser/goreleaser:v1.11.5-amd64
# Disable shallow cloning so that goreleaser can diff between tags to
# generate a changelog.
GIT_DEPTH: 0
GITLAB_TOKEN: $GITLAB_CI_TOKEN
# Only run this release job for tags, not every commit (for example).
rules:
- if: $CI_COMMIT_TAG
script: |
docker pull $GORELEASER_IMAGE
# GITLAB_TOKEN is needed to create GitLab releases.
# DOCKER_* are needed to push Docker images.
docker run --rm --privileged \
-v $PWD:/src \
-w /src \
-v /var/run/docker.sock:/var/run/docker.sock \
-e GITLAB_TOKEN \
$GORELEASER_IMAGE release --rm-dist
goreleaser release --clean --release-notes=CHANGES.md
+2
View File
@@ -0,0 +1,2 @@
run:
allow-parallel-runners: true
+4 -9
View File
@@ -1,4 +1,5 @@
project_name: unbound-schemas
version: 2
env:
- CGO_ENABLED=0
@@ -17,10 +18,10 @@ builds:
brews:
- name: unbound-schemas
tap:
repository:
owner: unboundsoftware
name: homebrew-taps
folder: Formula
directory: Formula
install: |
bin.install "schemactl"
commit_author:
@@ -30,18 +31,12 @@ brews:
archives:
- id: unbound-schemas
replacements:
darwin: Darwin
linux: Linux
windows: Windows
386: i386
amd64: x86_64
checksum:
name_template: 'checksums.txt'
snapshot:
name_template: "{{ .Tag }}-next"
version_template: "{{ .Tag }}-next"
changelog:
sort: asc
+25 -14
View File
@@ -2,7 +2,7 @@
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.3.0
rev: v5.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
@@ -10,27 +10,38 @@ repos:
args:
- --allow-multiple-documents
- id: check-added-large-files
- repo: https://github.com/jumanjihouse/pre-commit-hooks
rev: 3.0.0
hooks:
- id: markdownlint
- repo: https://gitlab.com/devopshq/gitlab-ci-linter
rev: v1.0.3
rev: v1.0.6
hooks:
- id: gitlab-ci-linter
args:
- --project
- unboundsoftware/schemas
- repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook
rev: v9.1.0
rev: v9.18.0
hooks:
- id: commitlint
stages: [ commit-msg ]
additional_dependencies: [ '@commitlint/config-conventional' ]
- repo: https://github.com/lietu/go-pre-commit
rev: v0.0.1
- repo: https://github.com/dnephin/pre-commit-golang
rev: v0.5.1
hooks:
- id: go-mod-tidy
- id: go-imports
args:
- -local
- gitlab.com/unboundsoftware/schemas
- repo: https://github.com/lietu/go-pre-commit
rev: v0.1.0
hooks:
- id: errcheck
- id: go-fmt-goimports
- id: go-test
- id: go-vet
- id: golangci-lint
- id: gofumpt
- id: staticcheck
- repo: https://github.com/golangci/golangci-lint
rev: v1.61.0
hooks:
- id: golangci-lint-full
- repo: https://github.com/gitleaks/gitleaks
rev: v8.21.1
hooks:
- id: gitleaks
exclude: '^ctl/generated.go|graph/generated/.*$|^graph/model/models_gen.go|^tools/.*$$'
+159
View File
@@ -0,0 +1,159 @@
# Changelog
All notable changes to this project will be documented in this file.
## [0.0.7] - 2024-10-22
### 🐛 Bug Fixes
- *(deps)* Update module github.com/pressly/goose/v3 to v3.20.0
- *(deps)* Update module github.com/jmoiron/sqlx to v1.4.0
- *(deps)* Update module github.com/rs/cors to v1.11.0
- *(deps)* Update module github.com/99designs/gqlgen to v0.17.46
- *(deps)* Update module github.com/vektah/gqlparser/v2 to v2.5.12
- *(deps)* Update module github.com/99designs/gqlgen to v0.17.47
- *(deps)* Update module github.com/getsentry/sentry-go to v0.28.0
- *(deps)* Update module github.com/99designs/gqlgen to v0.17.48
- *(deps)* Update module github.com/vektah/gqlparser/v2 to v2.5.16
- *(deps)* Update module github.com/getsentry/sentry-go to v0.28.1
- *(deps)* Update module github.com/wundergraph/graphql-go-tools to v1.67.3
- *(deps)* Update module github.com/99designs/gqlgen to v0.17.49
- *(deps)* Update module github.com/pressly/goose/v3 to v3.21.0
- *(deps)* Update module github.com/pressly/goose/v3 to v3.21.1
- *(deps)* Update module github.com/wundergraph/graphql-go-tools to v1.67.4
- *(deps)* Update module github.com/sparetimecoders/goamqp to v0.3.1
- *(deps)* Update module github.com/auth0/go-jwt-middleware/v2 to v2.2.2
- *(deps)* Update module github.com/rs/cors to v1.11.1
- *(deps)* Update module github.com/pressly/goose/v3 to v3.22.0
- *(deps)* Update module github.com/getsentry/sentry-go to v0.29.0
- *(deps)* Update module github.com/alecthomas/kong to v1
- *(deps)* Update module github.com/alecthomas/kong to v1.2.1
- *(deps)* Update module github.com/99designs/gqlgen to v0.17.50
- *(deps)* Update module github.com/99designs/gqlgen to v0.17.51
- *(deps)* Update module github.com/99designs/gqlgen to v0.17.52
- *(deps)* Update module github.com/pressly/goose/v3 to v3.22.1
- *(deps)* Update module github.com/99designs/gqlgen to v0.17.53
- *(deps)* Update module github.com/99designs/gqlgen to v0.17.54
- *(deps)* Update module github.com/vektah/gqlparser/v2 to v2.5.17
- *(deps)* Update module github.com/99designs/gqlgen to v0.17.55
- *(deps)* Update module gitlab.com/unboundsoftware/eventsourced/amqp to v1.6.5
- *(deps)* Update module gitlab.com/unboundsoftware/eventsourced/eventsourced to v1.15.0
- *(deps)* Update module gitlab.com/unboundsoftware/eventsourced/pg to v1.14.4
- *(deps)* Update module gitlab.com/unboundsoftware/eventsourced/amqp to v1.6.6
- *(deps)* Update module github.com/getsentry/sentry-go to v0.29.1
- *(deps)* Update module github.com/vektah/gqlparser/v2 to v2.5.18
### ⚙️ Miscellaneous Tasks
- Update golangci-lint hook identifier in pre-commit config
- Update goreleaser image to v2.3.1
- Add generate check
- Add release notes for goreleaser command in .gitlab-ci.yml
## [0.0.6] - 2024-04-04
### 🐛 Bug Fixes
- Don't set fixed global_sequence_no
### ⚙️ Miscellaneous Tasks
- Add step for checking release
## [0.0.5] - 2024-04-03
### 🚀 Features
- Add full SDL to SupGraph response
### 🐛 Bug Fixes
- *(deps)* Update module github.com/stretchr/testify to v1.9.0
- *(deps)* Update module github.com/golang-jwt/jwt/v4 to v5
- Update default migrations
- *(deps)* Update module github.com/golang-jwt/jwt/v5 to v5.2.1
- *(deps)* Update module github.com/khan/genqlient to v0.7.0
- *(deps)* Update module github.com/alecthomas/kong to v0.9.0
- *(deps)* Update module github.com/pressly/goose/v3 to v3.19.1
- *(deps)* Update module github.com/99designs/gqlgen to v0.17.45
- *(deps)* Update module github.com/pressly/goose/v3 to v3.19.2
- *(deps)* Update module gitlab.com/unboundsoftware/eventsourced/pg to v1.14.0
- *(deps)* Update module gitlab.com/unboundsoftware/eventsourced/pg to v1.14.3
- *(deps)* Update module github.com/wundergraph/graphql-go-tools to v1.67.2
### ⚙️ Miscellaneous Tasks
- Update golangci-lint
- Update Go version for vulnerabilities
- Update to Go 1.20.7
- Update to Golang 1.21.0 for vulnerabilities
- Update pre-commit versions
- Update to Go 1.21.1 for vulnerabilities
- Use OrbStack for local dev
- Add gitleaks to pre-commit setup
- Update resources
- Run release on medium instance
- Back to small and upgrade goreleaser
- Remove deprecated replacements
## [0.0.4] - 2023-05-29
### 🐛 Bug Fixes
- Explicitly set dialect to make goose use correct version table
### ⚙️ Miscellaneous Tasks
- Update Go version for vulnerabilities
- Update pre-commit and fix golangci-lint
- Actually validate API key privileges and refs
## [0.0.3] - 2023-04-27
### 🚀 Features
- Add Sentry setup
- Add Sentry setup
- Organizations and API keys
### 🐛 Bug Fixes
- Use correct healthcheck path
### ⚙️ Miscellaneous Tasks
- Update schema if URLs have changed
- Add pre-commit and remove those checks from Dockerfile
- Add context and error handling
- Move to default ingress group
- Decrease trace sample rate
- Improve docker caching
- Add local module to pre-commit config
- Only ignore generated files with do not edit
- Default ingress group
- Use Docker DinD version from variable
- Switch to manual rebases for Dependabot
- Update to golang 1.20.1
- Update Go verion for vulnerabilities scan
- Reduce sample rate
- Update to Go 1.20.3
- Fix Gitlab CI lint
## [0.0.2] - 2022-10-14
### ⚙️ Miscellaneous Tasks
- Add docker ignore
- Handle push of unchanged schema
## [0.0.1] - 2022-10-09
### 🚀 Features
- Initial commit
### 🐛 Bug Fixes
- Remove GITLAB_TOKEN
<!-- generated by git-cliff -->
+7 -5
View File
@@ -1,12 +1,14 @@
FROM golang:1.19.2 as build
FROM golang:1.23.2 as modules
WORKDIR /build
ADD go.* /build
RUN go mod download
FROM modules as build
WORKDIR /build
ENV CGO_ENABLED=0
ADD . /build
RUN if [ $(go mod tidy -v 2>&1 | grep -c unused) != 0 ]; then echo "Unused modules, please run 'go mod tidy'"; exit 1; fi
RUN go fmt ./...
RUN go vet ./...
RUN CGO_ENABLED=1 go test -mod=readonly -race -coverprofile=coverage.txt.tmp -covermode=atomic -coverpkg=$(go list ./... | tr '\n' , | sed 's/,$//') ./...
RUN ["/bin/bash", "-c", "cat coverage.txt.tmp | grep -v testing.go | grep -v -f <(find . -type f | xargs grep -l 'Code generated') > coverage.txt"]
RUN ["/bin/bash", "-c", "cat coverage.txt.tmp | grep -v testing.go | grep -v -f <(find . -type f | xargs grep -l 'Code generated by github.com/99designs/gqlgen, DO NOT EDIT') > coverage.txt"]
RUN go tool cover -html=coverage.txt -o coverage.html
RUN go tool cover -func=coverage.txt
RUN rm coverage.txt.tmp
+109 -29
View File
@@ -8,58 +8,138 @@ import (
"github.com/sparetimecoders/goamqp"
"gitlab.com/unboundsoftware/schemas/domain"
"gitlab.com/unboundsoftware/schemas/hash"
)
const subGraphKey = "%s<->%s"
type Cache struct {
services map[string]map[string]struct{}
subGraphs map[string]string
lastUpdate map[string]string
logger log.Interface
organizations map[string]domain.Organization
users map[string][]string
apiKeys map[string]domain.APIKey
services map[string]map[string]map[string]struct{}
subGraphs map[string]string
lastUpdate map[string]string
logger log.Interface
}
func (c *Cache) Services(ref, lastUpdate string) ([]string, string) {
func (c *Cache) OrganizationByAPIKey(apiKey string) *domain.Organization {
key, exists := c.apiKeys[apiKey]
if !exists {
return nil
}
org, exists := c.organizations[key.OrganizationId]
if !exists {
return nil
}
return &org
}
func (c *Cache) OrganizationsByUser(sub string) []domain.Organization {
orgIds := c.users[sub]
orgs := make([]domain.Organization, len(orgIds))
for i, id := range orgIds {
orgs[i] = c.organizations[id]
}
return orgs
}
func (c *Cache) ApiKeyByKey(key string) *domain.APIKey {
k, exists := c.apiKeys[hash.String(key)]
if !exists {
return nil
}
return &k
}
func (c *Cache) Services(orgId, ref, lastUpdate string) ([]string, string) {
key := refKey(orgId, ref)
var services []string
if lastUpdate == "" || c.lastUpdate[ref] > lastUpdate {
for k := range c.services[ref] {
if lastUpdate == "" || c.lastUpdate[key] > lastUpdate {
for k := range c.services[orgId][ref] {
services = append(services, k)
}
}
return services, c.lastUpdate[ref]
return services, c.lastUpdate[key]
}
func (c *Cache) SubGraphId(ref, service string) string {
return c.subGraphs[fmt.Sprintf(subGraphKey, ref, service)]
func (c *Cache) SubGraphId(orgId, ref, service string) string {
return c.subGraphs[subGraphKey(orgId, ref, service)]
}
func (c *Cache) Update(msg any, _ goamqp.Headers) (any, error) {
switch m := msg.(type) {
case *domain.OrganizationAdded:
o := domain.Organization{}
m.UpdateOrganization(&o)
c.organizations[m.ID.String()] = o
c.addUser(m.Initiator, o)
case *domain.APIKeyAdded:
key := domain.APIKey{
Name: m.Name,
OrganizationId: m.OrganizationId,
Key: m.Key,
Refs: m.Refs,
Read: m.Read,
Publish: m.Publish,
CreatedBy: m.Initiator,
CreatedAt: m.When(),
}
c.apiKeys[m.Key] = key
org := c.organizations[m.OrganizationId]
org.APIKeys = append(org.APIKeys, key)
c.organizations[m.OrganizationId] = org
case *domain.SubGraphUpdated:
if _, exists := c.services[m.Ref]; !exists {
c.services[m.Ref] = make(map[string]struct{})
c.updateSubGraph(m.OrganizationId, m.Ref, m.ID.String(), m.Service, m.Time)
case *domain.Organization:
c.organizations[m.ID.String()] = *m
c.addUser(m.CreatedBy, *m)
for _, k := range m.APIKeys {
c.apiKeys[k.Key] = k
}
c.services[m.Ref][m.ID.String()] = struct{}{}
c.subGraphs[fmt.Sprintf(subGraphKey, m.Ref, m.Service)] = m.ID.String()
c.lastUpdate[m.Ref] = m.Time.Format(time.RFC3339Nano)
case *domain.SubGraph:
if _, exists := c.services[m.Ref]; !exists {
c.services[m.Ref] = make(map[string]struct{})
}
c.services[m.Ref][m.ID.String()] = struct{}{}
c.subGraphs[fmt.Sprintf(subGraphKey, m.Ref, m.Service)] = m.ID.String()
c.lastUpdate[m.Ref] = m.ChangedAt.Format(time.RFC3339Nano)
c.updateSubGraph(m.OrganizationId, m.Ref, m.ID.String(), m.Service, m.ChangedAt)
default:
c.logger.Warnf("unexpected message received: %+v", msg)
}
return nil, nil
}
func New(logger log.Interface) *Cache {
return &Cache{
subGraphs: make(map[string]string),
services: make(map[string]map[string]struct{}),
lastUpdate: make(map[string]string),
logger: logger,
func (c *Cache) updateSubGraph(orgId string, ref string, subGraphId string, service string, updated time.Time) {
if _, exists := c.services[orgId]; !exists {
c.services[orgId] = make(map[string]map[string]struct{})
}
if _, exists := c.services[orgId][ref]; !exists {
c.services[orgId][ref] = make(map[string]struct{})
}
c.services[orgId][ref][subGraphId] = struct{}{}
c.subGraphs[subGraphKey(orgId, ref, service)] = subGraphId
c.lastUpdate[refKey(orgId, ref)] = updated.Format(time.RFC3339Nano)
}
func (c *Cache) addUser(sub string, organization domain.Organization) {
user, exists := c.users[sub]
if !exists {
c.users[sub] = []string{organization.ID.String()}
} else {
c.users[sub] = append(user, organization.ID.String())
}
}
func New(logger log.Interface) *Cache {
return &Cache{
organizations: make(map[string]domain.Organization),
users: make(map[string][]string),
apiKeys: make(map[string]domain.APIKey),
services: make(map[string]map[string]map[string]struct{}),
subGraphs: make(map[string]string),
lastUpdate: make(map[string]string),
logger: logger,
}
}
func refKey(orgId string, ref string) string {
return fmt.Sprintf("%s<->%s", orgId, ref)
}
func subGraphKey(orgId string, ref string, service string) string {
return fmt.Sprintf("%s<->%s<->%s", orgId, ref, service)
}
+135 -39
View File
@@ -9,12 +9,14 @@ import (
"reflect"
"sync"
"syscall"
"time"
"github.com/99designs/gqlgen/graphql/handler"
"github.com/99designs/gqlgen/graphql/playground"
"github.com/alecthomas/kong"
"github.com/apex/log"
"github.com/apex/log/handlers/json"
"github.com/getsentry/sentry-go"
sentryhttp "github.com/getsentry/sentry-go/http"
"github.com/rs/cors"
"github.com/sparetimecoders/goamqp"
@@ -30,21 +32,31 @@ import (
"gitlab.com/unboundsoftware/schemas/store"
)
var CLI struct {
AmqpURL string `name:"amqp-url" env:"AMQP_URL" help:"URL to use to connect to RabbitMQ" default:"amqp://user:password@localhost:5672/"`
type CLI struct {
AmqpURL string `name:"amqp-url" env:"AMQP_URL" help:"URL to use to connect to RabbitMQ" default:"amqp://user:password@unbound-control-plane.orb.local:5672/"`
Port int `name:"port" env:"PORT" help:"Listen-port for GraphQL API" default:"8080"`
APIKey string `name:"api-key" env:"API_KEY" help:"The API-key that is required"`
LogLevel string `name:"log-level" env:"LOG_LEVEL" help:"The level of logging to use (debug, info, warn, error, fatal)" default:"info"`
DatabaseURL string `name:"postgres-url" env:"POSTGRES_URL" help:"URL to use to connect to Postgres" default:"postgres://postgres:postgres@:5432/schemas?sslmode=disable"`
DatabaseURL string `name:"postgres-url" env:"POSTGRES_URL" help:"URL to use to connect to Postgres" default:"postgres://postgres:postgres@unbound-control-plane.orb.local:5432/schemas?sslmode=disable"`
DatabaseDriverName string `name:"db-driver" env:"DB_DRIVER" help:"Driver to use to connect to db" default:"postgres"`
Issuer string `name:"issuer" env:"ISSUER" help:"The JWT token issuer to use" default:"unbound.eu.auth0.com"`
StrictSSL bool `name:"strict-ssl" env:"STRICT_SSL" help:"Should strict SSL handling be enabled" default:"true"`
SentryConfig
}
type SentryConfig struct {
DSN string `name:"sentry-dsn" env:"SENTRY_DSN" help:"Sentry dsn" default:""`
Environment string `name:"sentry-environment" env:"SENTRY_ENVIRONMENT" help:"Sentry environment" default:"development"`
}
var buildVersion = "none"
const serviceName = "schemas"
func main() {
_ = kong.Parse(&CLI)
var cli CLI
_ = kong.Parse(&cli)
log.SetHandler(json.New(os.Stdout))
log.SetLevelFromString(CLI.LogLevel)
log.SetLevelFromString(cli.LogLevel)
logger := log.WithField("service", serviceName)
closeEvents := make(chan error)
@@ -52,67 +64,73 @@ func main() {
closeEvents,
logger,
ConnectAMQP,
cli,
); err != nil {
logger.WithError(err).Error("process error")
}
}
func start(closeEvents chan error, logger *log.Entry, connectToAmqpFunc func(url string) (Connection, error)) error {
func start(closeEvents chan error, logger *log.Entry, connectToAmqpFunc func(url string) (Connection, error), cli CLI) error {
if err := setupSentry(logger, cli.SentryConfig); err != nil {
return err
}
defer sentry.Flush(2 * time.Second)
rootCtx, rootCancel := context.WithCancel(context.Background())
defer rootCancel()
db, err := store.SetupDB(CLI.DatabaseDriverName, CLI.DatabaseURL)
db, err := store.SetupDB(cli.DatabaseDriverName, cli.DatabaseURL)
if err != nil {
return fmt.Errorf("failed to setup DB: %v", err)
}
eventStore, err := pg.New(
rootCtx,
db.DB,
pg.WithEventTypes(
&domain.SubGraphUpdated{},
&domain.OrganizationAdded{},
&domain.APIKeyAdded{},
),
)
if err != nil {
return fmt.Errorf("failed to create eventstore: %v", err)
}
eventPublisher, err := goamqp.NewPublisher(
goamqp.Route{
Type: domain.SubGraphUpdated{},
Key: "SubGraph.Updated",
},
)
if err := store.RunEventStoreMigrations(db); err != nil {
return fmt.Errorf("event migrations: %w", err)
}
publisher := goamqp.NewPublisher()
eventPublisher, err := amqp.New(publisher)
if err != nil {
return fmt.Errorf("failed to create event publisher: %v", err)
}
amqp.New(eventPublisher)
conn, err := connectToAmqpFunc(CLI.AmqpURL)
conn, err := connectToAmqpFunc(cli.AmqpURL)
if err != nil {
return fmt.Errorf("failed to connect to AMQP: %v", err)
}
serviceCache := cache.New(logger)
roots, err := eventStore.GetAggregateRoots(reflect.TypeOf(domain.SubGraph{}))
if err != nil {
return err
if err := loadOrganizations(rootCtx, eventStore, serviceCache); err != nil {
return fmt.Errorf("caching organizations: %w", err)
}
for _, root := range roots {
subGraph := &domain.SubGraph{BaseAggregate: eventsourced.BaseAggregateFromString(root.String())}
if _, err := eventsourced.NewHandler(subGraph, eventStore); err != nil {
return err
}
_, err := serviceCache.Update(subGraph, nil)
if err != nil {
return err
}
if err := loadSubGraphs(rootCtx, eventStore, serviceCache); err != nil {
return fmt.Errorf("caching subgraphs: %w", err)
}
setups := []goamqp.Setup{
goamqp.UseLogger(logger.Errorf),
goamqp.UseLogger(logger.Error),
goamqp.CloseListener(closeEvents),
goamqp.WithPrefetchLimit(20),
goamqp.EventStreamPublisher(eventPublisher),
goamqp.EventStreamPublisher(publisher),
goamqp.TransientEventStreamConsumer("SubGraph.Updated", serviceCache.Update, domain.SubGraphUpdated{}),
goamqp.TransientEventStreamConsumer("Organization.Added", serviceCache.Update, domain.OrganizationAdded{}),
goamqp.TransientEventStreamConsumer("Organization.APIKeyAdded", serviceCache.Update, domain.APIKeyAdded{}),
goamqp.WithTypeMapping("SubGraph.Updated", domain.SubGraphUpdated{}),
goamqp.WithTypeMapping("Organization.Added", domain.OrganizationAdded{}),
goamqp.WithTypeMapping("Organization.APIKeyAdded", domain.APIKeyAdded{}),
}
if err := conn.Start(setups...); err != nil {
if err := conn.Start(rootCtx, setups...); err != nil {
return fmt.Errorf("failed to setup AMQP: %v", err)
}
@@ -121,7 +139,7 @@ func start(closeEvents chan error, logger *log.Entry, connectToAmqpFunc func(url
logger.Info("Started")
mux := http.NewServeMux()
httpSrv := &http.Server{Addr: fmt.Sprintf(":%d", CLI.Port), Handler: mux}
httpSrv := &http.Server{Addr: fmt.Sprintf(":%d", cli.Port), Handler: mux}
wg := sync.WaitGroup{}
@@ -170,7 +188,7 @@ func start(closeEvents chan error, logger *log.Entry, connectToAmqpFunc func(url
resolver := &graph.Resolver{
EventStore: eventStore,
Publisher: amqp.New(eventPublisher),
Publisher: eventPublisher,
Logger: logger,
Cache: serviceCache,
}
@@ -179,18 +197,28 @@ func start(closeEvents chan error, logger *log.Entry, connectToAmqpFunc func(url
Resolvers: resolver,
Complexity: generated.ComplexityRoot{},
}
apiKeyMiddleware := middleware.NewApiKey(CLI.APIKey, logger)
config.Directives.HasApiKey = apiKeyMiddleware.Directive
apiKeyMiddleware := middleware.NewApiKey()
mw := middleware.NewAuth0("https://schemas.unbound.se", cli.Issuer, cli.StrictSSL)
authMiddleware := middleware.NewAuth(serviceCache)
config.Directives.Auth = authMiddleware.Directive
srv := handler.NewDefaultServer(generated.NewExecutableSchema(
config,
))
sentryHandler := sentryhttp.New(sentryhttp.Options{Repanic: true})
mux.Handle("/", sentryHandler.HandleFunc(playground.Handler("GraphQL playground", "/query")))
mux.Handle("/health", sentryHandler.HandleFunc(healthFunc))
mux.Handle("/query", cors.AllowAll().Handler(sentryHandler.Handle(apiKeyMiddleware.Handler(srv))))
mux.Handle("/health", http.HandlerFunc(healthFunc))
mux.Handle("/query", cors.AllowAll().Handler(
sentryHandler.Handle(
mw.Middleware().CheckJWT(
apiKeyMiddleware.Handler(
authMiddleware.Handler(srv),
),
),
),
))
logger.Infof("connect to http://localhost:%d/ for GraphQL playground", CLI.Port)
logger.Infof("connect to http://localhost:%d/ for GraphQL playground", cli.Port)
if err := httpSrv.ListenAndServe(); err != nil {
logger.WithError(err).Error("listen http")
@@ -202,15 +230,83 @@ func start(closeEvents chan error, logger *log.Entry, connectToAmqpFunc func(url
return nil
}
func loadOrganizations(ctx context.Context, eventStore eventsourced.EventStore, serviceCache *cache.Cache) error {
roots, err := eventStore.GetAggregateRoots(ctx, reflect.TypeOf(domain.Organization{}))
if err != nil {
return err
}
for _, root := range roots {
organization := &domain.Organization{BaseAggregate: eventsourced.BaseAggregateFromString(root.String())}
if _, err := eventsourced.NewHandler(ctx, organization, eventStore); err != nil {
return err
}
_, err := serviceCache.Update(organization, nil)
if err != nil {
return err
}
}
return nil
}
func loadSubGraphs(ctx context.Context, eventStore eventsourced.EventStore, serviceCache *cache.Cache) error {
roots, err := eventStore.GetAggregateRoots(ctx, reflect.TypeOf(domain.SubGraph{}))
if err != nil {
return err
}
for _, root := range roots {
subGraph := &domain.SubGraph{BaseAggregate: eventsourced.BaseAggregateFromString(root.String())}
if _, err := eventsourced.NewHandler(ctx, subGraph, eventStore); err != nil {
return err
}
_, err := serviceCache.Update(subGraph, nil)
if err != nil {
return err
}
}
return nil
}
func healthFunc(w http.ResponseWriter, _ *http.Request) {
_, _ = w.Write([]byte("OK"))
}
func setupSentry(logger log.Interface, args SentryConfig) error {
if args.Environment == "" {
return fmt.Errorf("no Sentry environment supplied, exiting")
}
cfg := sentry.ClientOptions{
Dsn: args.DSN,
Environment: args.Environment,
Release: fmt.Sprintf("%s-%s", serviceName, buildVersion),
}
switch args.Environment {
case "development":
cfg.Debug = true
cfg.EnableTracing = false
cfg.TracesSampleRate = 0.0
case "production":
if args.DSN == "" {
return fmt.Errorf("no DSN supplied for non-dev environment, exiting")
}
cfg.Debug = false
cfg.EnableTracing = true
cfg.TracesSampleRate = 0.01
default:
return fmt.Errorf("illegal environment %s", args.Environment)
}
if err := sentry.Init(cfg); err != nil {
return fmt.Errorf("sentry setup: %w", err)
}
logger.Infof("configured Sentry for env: %s", args.Environment)
return nil
}
func ConnectAMQP(url string) (Connection, error) {
return goamqp.NewFromURL(serviceName, url)
}
type Connection interface {
Start(opts ...goamqp.Setup) error
Start(ctx context.Context, opts ...goamqp.Setup) error
Close() error
}
+40 -34
View File
@@ -43,6 +43,7 @@ type SubGraphsResponse struct {
func (v *SubGraphsResponse) GetSupergraph() SubGraphsSupergraph { return v.Supergraph }
func (v *SubGraphsResponse) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
return nil
}
@@ -148,6 +149,7 @@ func __unmarshalSubGraphsSupergraph(b []byte, v *SubGraphsSupergraph) error {
}
func __marshalSubGraphsSupergraph(v *SubGraphsSupergraph) ([]byte, error) {
var typename string
switch v := (*v).(type) {
case *SubGraphsSupergraphSubGraphs:
@@ -270,14 +272,8 @@ type __UpdateSubGraphInput struct {
// GetInput returns __UpdateSubGraphInput.Input, and is useful for accessing the field via an interface.
func (v *__UpdateSubGraphInput) GetInput() *InputSubGraph { return v.Input }
func SubGraphs(
ctx context.Context,
client graphql.Client,
ref string,
) (*SubGraphsResponse, error) {
req := &graphql.Request{
OpName: "SubGraphs",
Query: `
// The query executed by SubGraphs.
const SubGraphs_Operation = `
query SubGraphs ($ref: String!) {
supergraph(ref: $ref) {
__typename
@@ -292,33 +288,35 @@ query SubGraphs ($ref: String!) {
}
}
}
`,
`
func SubGraphs(
ctx_ context.Context,
client_ graphql.Client,
ref string,
) (data_ *SubGraphsResponse, err_ error) {
req_ := &graphql.Request{
OpName: "SubGraphs",
Query: SubGraphs_Operation,
Variables: &__SubGraphsInput{
Ref: ref,
},
}
var err error
var data SubGraphsResponse
resp := &graphql.Response{Data: &data}
data_ = &SubGraphsResponse{}
resp_ := &graphql.Response{Data: data_}
err = client.MakeRequest(
ctx,
req,
resp,
err_ = client_.MakeRequest(
ctx_,
req_,
resp_,
)
return &data, err
return data_, err_
}
func UpdateSubGraph(
ctx context.Context,
client graphql.Client,
input *InputSubGraph,
) (*UpdateSubGraphResponse, error) {
req := &graphql.Request{
OpName: "UpdateSubGraph",
Query: `
// The mutation executed by UpdateSubGraph.
const UpdateSubGraph_Operation = `
mutation UpdateSubGraph ($input: InputSubGraph!) {
updateSubGraph(input: $input) {
service
@@ -328,21 +326,29 @@ mutation UpdateSubGraph ($input: InputSubGraph!) {
changedAt
}
}
`,
`
func UpdateSubGraph(
ctx_ context.Context,
client_ graphql.Client,
input *InputSubGraph,
) (data_ *UpdateSubGraphResponse, err_ error) {
req_ := &graphql.Request{
OpName: "UpdateSubGraph",
Query: UpdateSubGraph_Operation,
Variables: &__UpdateSubGraphInput{
Input: input,
},
}
var err error
var data UpdateSubGraphResponse
resp := &graphql.Response{Data: &data}
data_ = &UpdateSubGraphResponse{}
resp_ := &graphql.Response{Data: data_}
err = client.MakeRequest(
ctx,
req,
resp,
err_ = client_.MakeRequest(
ctx_,
req_,
resp_,
)
return &data, err
return data_, err_
}
+57 -6
View File
@@ -8,19 +8,67 @@ import (
"gitlab.com/unboundsoftware/eventsourced/eventsourced"
)
type SubGraph struct {
type Organization struct {
eventsourced.BaseAggregate
Ref string
Service string
Url *string
WSUrl *string
Sdl string
Name string
Users []string
APIKeys []APIKey
CreatedBy string
CreatedAt time.Time
ChangedBy string
ChangedAt time.Time
}
func (o *Organization) Apply(event eventsourced.Event) error {
switch e := event.(type) {
case *OrganizationAdded:
e.UpdateOrganization(o)
case *APIKeyAdded:
o.APIKeys = append(o.APIKeys, APIKey{
Name: e.Name,
OrganizationId: o.ID.String(),
Key: e.Key,
Refs: e.Refs,
Read: e.Read,
Publish: e.Publish,
CreatedBy: e.Initiator,
CreatedAt: e.When(),
})
o.ChangedBy = e.Initiator
o.ChangedAt = e.When()
default:
return fmt.Errorf("unexpected event type: %+v", event)
}
return nil
}
var _ eventsourced.Aggregate = &Organization{}
type APIKey struct {
Name string
OrganizationId string
Key string
Refs []string
Read bool
Publish bool
CreatedBy string
CreatedAt time.Time
}
type SubGraph struct {
eventsourced.BaseAggregate
OrganizationId string
Ref string
Service string
Url *string
WSUrl *string
Sdl string
CreatedBy string
CreatedAt time.Time
ChangedBy string
ChangedAt time.Time
}
func (s *SubGraph) Apply(event eventsourced.Event) error {
switch e := event.(type) {
case *SubGraphUpdated:
@@ -28,6 +76,9 @@ func (s *SubGraph) Apply(event eventsourced.Event) error {
s.CreatedBy = e.Initiator
s.CreatedAt = e.When()
}
if s.OrganizationId == "" {
s.OrganizationId = e.OrganizationId
}
s.ChangedBy = e.Initiator
s.ChangedAt = e.When()
s.Ref = e.Ref
+74 -12
View File
@@ -6,17 +6,78 @@ import (
"strings"
"gitlab.com/unboundsoftware/eventsourced/eventsourced"
"gitlab.com/unboundsoftware/schemas/hash"
)
type UpdateSubGraph struct {
Ref string
Service string
Url *string
WSUrl *string
Sdl string
type AddOrganization struct {
Name string
Initiator string
}
func (a AddOrganization) Validate(_ context.Context, aggregate eventsourced.Aggregate) error {
if aggregate.Identity() != nil {
return fmt.Errorf("organization already exists")
}
if len(a.Name) == 0 {
return fmt.Errorf("name is required")
}
return nil
}
func (a AddOrganization) Event(context.Context) eventsourced.Event {
return &OrganizationAdded{
Name: a.Name,
Initiator: a.Initiator,
}
}
var _ eventsourced.Command = AddOrganization{}
type AddAPIKey struct {
Name string
Key string
Refs []string
Read bool
Publish bool
Initiator string
}
func (a AddAPIKey) Validate(_ context.Context, aggregate eventsourced.Aggregate) error {
if aggregate.Identity() == nil {
return fmt.Errorf("organization does not exist")
}
for _, k := range aggregate.(*Organization).APIKeys {
if k.Name == a.Name {
return fmt.Errorf("a key named '%s' already exist", a.Name)
}
}
return nil
}
func (a AddAPIKey) Event(context.Context) eventsourced.Event {
return &APIKeyAdded{
Name: a.Name,
Key: hash.String(a.Key),
Refs: a.Refs,
Read: a.Read,
Publish: a.Publish,
Initiator: a.Initiator,
}
}
var _ eventsourced.Command = AddAPIKey{}
type UpdateSubGraph struct {
OrganizationId string
Ref string
Service string
Url *string
WSUrl *string
Sdl string
Initiator string
}
func (u UpdateSubGraph) Validate(_ context.Context, aggregate eventsourced.Aggregate) error {
switch a := aggregate.(type) {
case *SubGraph:
@@ -40,12 +101,13 @@ func (u UpdateSubGraph) Validate(_ context.Context, aggregate eventsourced.Aggre
func (u UpdateSubGraph) Event(context.Context) eventsourced.Event {
return &SubGraphUpdated{
Ref: u.Ref,
Service: u.Service,
Url: u.Url,
WSUrl: u.WSUrl,
Sdl: u.Sdl,
Initiator: u.Initiator,
OrganizationId: u.OrganizationId,
Ref: u.Ref,
Service: u.Service,
Url: u.Url,
WSUrl: u.WSUrl,
Sdl: u.Sdl,
Initiator: u.Initiator,
}
}
+63
View File
@@ -0,0 +1,63 @@
package domain
import (
"context"
"testing"
"github.com/stretchr/testify/assert"
"gitlab.com/unboundsoftware/eventsourced/eventsourced"
)
func TestAddAPIKey_Event(t *testing.T) {
type fields struct {
Name string
Key string
Refs []string
Read bool
Publish bool
Initiator string
}
type args struct {
in0 context.Context
}
tests := []struct {
name string
fields fields
args args
want eventsourced.Event
}{
{
name: "event",
fields: fields{
Name: "test",
Key: "us_ak_1234567890123456",
Refs: []string{"Example@dev"},
Read: true,
Publish: true,
Initiator: "jim@example.org",
},
args: args{},
want: &APIKeyAdded{
Name: "test",
Key: "dXNfYWtfMTIzNDU2Nzg5MDEyMzQ1NuOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhV",
Refs: []string{"Example@dev"},
Read: true,
Publish: true,
Initiator: "jim@example.org",
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
a := AddAPIKey{
Name: tt.fields.Name,
Key: tt.fields.Key,
Refs: tt.fields.Refs,
Read: tt.fields.Read,
Publish: tt.fields.Publish,
Initiator: tt.fields.Initiator,
}
assert.Equalf(t, tt.want, a.Event(tt.args.in0), "Event(%v)", tt.args.in0)
})
}
}
+41 -9
View File
@@ -2,13 +2,45 @@ package domain
import "gitlab.com/unboundsoftware/eventsourced/eventsourced"
type SubGraphUpdated struct {
eventsourced.EventAggregateId
eventsourced.EventTime
Ref string
Service string
Url *string
WSUrl *string
Sdl string
Initiator string
type OrganizationAdded struct {
eventsourced.BaseEvent
Name string `json:"name"`
Initiator string `json:"initiator"`
}
func (a *OrganizationAdded) UpdateOrganization(o *Organization) {
o.Name = a.Name
o.Users = []string{a.Initiator}
o.CreatedBy = a.Initiator
o.CreatedAt = a.When()
o.ChangedBy = a.Initiator
o.ChangedAt = a.When()
}
type APIKeyAdded struct {
eventsourced.BaseEvent
OrganizationId string `json:"organizationId"`
Name string `json:"name"`
Key string `json:"key"`
Refs []string `json:"refs"`
Read bool `json:"read"`
Publish bool `json:"publish"`
Initiator string `json:"initiator"`
}
func (a *APIKeyAdded) EnrichFromAggregate(aggregate eventsourced.Aggregate) {
a.OrganizationId = aggregate.Identity().String()
}
var _ eventsourced.EnrichableEvent = &APIKeyAdded{}
type SubGraphUpdated struct {
eventsourced.BaseEvent
OrganizationId string `json:"organizationId"`
Ref string `json:"ref"`
Service string `json:"service"`
Url *string `json:"url"`
WSUrl *string `json:"wsUrl"`
Sdl string `json:"sdl"`
Initiator string `json:"initiator"`
}
+42 -34
View File
@@ -1,53 +1,61 @@
module gitlab.com/unboundsoftware/schemas
go 1.19
go 1.22.5
toolchain go1.23.2
require (
github.com/99designs/gqlgen v0.17.20
github.com/Khan/genqlient v0.5.0
github.com/alecthomas/kong v0.6.1
github.com/99designs/gqlgen v0.17.55
github.com/Khan/genqlient v0.7.0
github.com/alecthomas/kong v1.2.1
github.com/apex/log v1.9.0
github.com/getsentry/sentry-go v0.14.0
github.com/jmoiron/sqlx v1.3.5
github.com/rs/cors v1.8.2
github.com/sparetimecoders/goamqp v0.1.1
github.com/stretchr/testify v1.8.0
github.com/vektah/gqlparser/v2 v2.5.1
github.com/wundergraph/graphql-go-tools v1.57.2-0.20221005155749-a4fdba38990b
gitlab.com/unboundsoftware/eventsourced/amqp v1.5.0
gitlab.com/unboundsoftware/eventsourced/eventsourced v1.9.3
gitlab.com/unboundsoftware/eventsourced/pg v1.9.0
github.com/auth0/go-jwt-middleware/v2 v2.2.2
github.com/getsentry/sentry-go v0.29.1
github.com/golang-jwt/jwt/v5 v5.2.1
github.com/jmoiron/sqlx v1.4.0
github.com/pkg/errors v0.9.1
github.com/pressly/goose/v3 v3.22.1
github.com/rs/cors v1.11.1
github.com/sparetimecoders/goamqp v0.3.1
github.com/stretchr/testify v1.9.0
github.com/vektah/gqlparser/v2 v2.5.18
github.com/wundergraph/graphql-go-tools v1.67.4
gitlab.com/unboundsoftware/eventsourced/amqp v1.6.6
gitlab.com/unboundsoftware/eventsourced/eventsourced v1.15.0
gitlab.com/unboundsoftware/eventsourced/pg v1.14.4
)
require (
github.com/agnivade/levenshtein v1.1.1 // indirect
github.com/buger/jsonparser v1.1.1 // indirect
github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/golang/mock v1.4.4 // indirect
github.com/google/uuid v1.3.0 // indirect
github.com/gorilla/websocket v1.5.0 // indirect
github.com/hashicorp/golang-lru v0.5.4 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/lib/pq v1.10.6 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/gorilla/websocket v1.5.1 // indirect
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
github.com/jensneuse/byte-template v0.0.0-20200214152254-4f3cf06e5c68 // indirect
github.com/lib/pq v1.10.9 // indirect
github.com/mfridman/interpolate v0.0.2 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/qri-io/jsonpointer v0.1.1 // indirect
github.com/qri-io/jsonschema v0.2.1 // indirect
github.com/rabbitmq/amqp091-go v1.3.4 // indirect
github.com/rabbitmq/amqp091-go v1.10.0 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/tidwall/gjson v1.14.3 // indirect
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 // indirect
github.com/sethvargo/go-retry v0.3.0 // indirect
github.com/sosodev/duration v1.3.1 // indirect
github.com/tidwall/gjson v1.17.0 // indirect
github.com/tidwall/match v1.1.1 // indirect
github.com/tidwall/pretty v1.2.1 // indirect
github.com/tidwall/sjson v1.2.5 // indirect
github.com/urfave/cli/v2 v2.8.1 // indirect
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
golang.org/x/sys v0.0.0-20221006211917-84dc82d7e875 // indirect
golang.org/x/text v0.3.7 // indirect
golang.org/x/tools v0.1.12 // indirect
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df // indirect
github.com/urfave/cli/v2 v2.27.4 // indirect
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/mod v0.20.0 // indirect
golang.org/x/net v0.29.0 // indirect
golang.org/x/sync v0.8.0 // indirect
golang.org/x/sys v0.25.0 // indirect
golang.org/x/text v0.18.0 // indirect
golang.org/x/tools v0.24.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
+141 -169
View File
@@ -1,24 +1,25 @@
github.com/99designs/gqlgen v0.17.2/go.mod h1:K5fzLKwtph+FFgh9j7nFbRUdBKvTcGnsta51fsMTn3o=
github.com/99designs/gqlgen v0.17.20 h1:O7WzccIhKB1dm+7g6dhQcULINftfiLSBg2l/mwbpJMw=
github.com/99designs/gqlgen v0.17.20/go.mod h1:Mja2HI23kWT1VRH09hvWshFgOzKswpO20o4ScpJIES4=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60=
github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
github.com/Khan/genqlient v0.5.0 h1:TMZJ+tl/BpbmGyIBiXzKzUftDhw4ZWxQZ+1ydn0gyII=
github.com/Khan/genqlient v0.5.0/go.mod h1:EpIvDVXYm01GP6AXzjA7dKriPTH6GmtpmvTAwUUqIX8=
github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM=
github.com/agnivade/levenshtein v1.1.0/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo=
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
github.com/99designs/gqlgen v0.17.55 h1:3vzrNWYyzSZjGDFo68e5j9sSauLxfKvLp+6ioRokVtM=
github.com/99designs/gqlgen v0.17.55/go.mod h1:3Bq768f8hgVPGZxL8aY9MaYmbxa6llPM/qu1IGH1EJo=
github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7OputlJIzU=
github.com/DATA-DOG/go-sqlmock v1.5.2/go.mod h1:88MAG/4G7SMwSE3CeA0ZKzrT5CiOU3OJ+JlNzwDqpNU=
github.com/Khan/genqlient v0.7.0 h1:GZ1meyRnzcDTK48EjqB8t3bcfYvHArCUUvgOwpz1D4w=
github.com/Khan/genqlient v0.7.0/go.mod h1:HNyy3wZvuYwmW3Y7mkoQLZsa/R5n5yIRajS1kPBvSFM=
github.com/PuerkitoBio/goquery v1.9.3 h1:mpJr/ikUA9/GNJB/DBZcGeFDXUtosHRyRrwh7KGdTG0=
github.com/PuerkitoBio/goquery v1.9.3/go.mod h1:1ndLHPdTz+DyQPICCWYlYQMPl0oXZj0G6D4LCYA6u4U=
github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8=
github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo=
github.com/alecthomas/kong v0.6.1 h1:1kNhcFepkR+HmasQpbiKDLylIL8yh5B5y1zPp5bJimA=
github.com/alecthomas/kong v0.6.1/go.mod h1:JfHWDzLmbh/puW6I3V7uWenoh56YNVONW+w8eKeUr9I=
github.com/alecthomas/repr v0.0.0-20210801044451-80ca428c5142 h1:8Uy0oSf5co/NZXje7U1z8Mpep++QJOldL2hs/sBQf48=
github.com/alecthomas/repr v0.0.0-20210801044451-80ca428c5142/go.mod h1:2kn6fqh/zIyPLmm3ugklbEi5hg5wS435eygvNfaDQL8=
github.com/alexflint/go-arg v1.4.2/go.mod h1:9iRbDxne7LcR/GSvEr7ma++GLpdIU1zrghf2y2768kM=
github.com/alexflint/go-scalar v1.0.0/go.mod h1:GpHzbCOZXEKMEcygYQ5n/aa4Aq84zbxjy3MxYW0gjYw=
github.com/alecthomas/assert/v2 v2.10.0 h1:jjRCHsj6hBJhkmhznrCzoNpbA3zqy0fYiUcYZP/GkPY=
github.com/alecthomas/assert/v2 v2.10.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
github.com/alecthomas/kong v1.2.1 h1:E8jH4Tsgv6wCRX2nGrdPyHDUCSG83WH2qE4XLACD33Q=
github.com/alecthomas/kong v1.2.1/go.mod h1:rKTSFhbdp3Ryefn8x5MOEprnRFQ7nlmMC01GKhehhBM=
github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc=
github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsViSLyss=
github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU=
github.com/apex/log v1.9.0 h1:FHtw/xuaM8AgmvDDTI9fiwoAL25Sq2cxojnZICUU8l0=
github.com/apex/log v1.9.0/go.mod h1:m82fZlWIuiWzWP04XCTXmnX0xRkYYbCdYn8jbJeLBEA=
github.com/apex/logs v1.0.0/go.mod h1:XzxuLZ5myVHDy9SAmYpamKKRNApGj54PfYLcFrXqDwo=
@@ -26,138 +27,138 @@ github.com/aphistic/golf v0.0.0-20180712155816-02c07f170c5a/go.mod h1:3NqKYiepwy
github.com/aphistic/sweet v0.2.0/go.mod h1:fWDlIh/isSE9n6EPsRmC0det+whmX6dJid3stzu0Xys=
github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q=
github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE=
github.com/auth0/go-jwt-middleware/v2 v2.2.2 h1:vrvkFZf72r3Qbt45KLjBG3/6Xq2r3NTixWKu2e8de9I=
github.com/auth0/go-jwt-middleware/v2 v2.2.2/go.mod h1:4vwxpVtu/Kl4c4HskT+gFLjq0dra8F1joxzamrje6J0=
github.com/aws/aws-sdk-go v1.20.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I=
github.com/bradleyjkemp/cupaloy/v2 v2.6.0/go.mod h1:bm7JXdkRd4BHJk9HpwqAI8BoAY1lps46Enkdqw6aRX0=
github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs=
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
github.com/caarlos0/env v3.5.0+incompatible h1:Yy0UN8o9Wtr/jGHZDpCBLpNrzcFLLM2yixi/rBrKyJs=
github.com/caarlos0/env v3.5.0+incompatible/go.mod h1:tdCsowwCzMLdkqRYDlHpZCp2UooDD3MspDBjZ2AD02Y=
github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=
github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
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/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4=
github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
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 v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/evanphx/json-patch/v5 v5.1.0 h1:B0aXl1o/1cP8NbviYiBMkcHBtUjIJ1/Ccg6b+SwCLQg=
github.com/evanphx/json-patch/v5 v5.1.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/getsentry/sentry-go v0.14.0 h1:rlOBkuFZRKKdUnKO+0U3JclRDQKlRu5vVQtkWSQvC70=
github.com/getsentry/sentry-go v0.14.0/go.mod h1:RZPJKSw+adu8PBNygiri/A98FqVr2HtRckJk9XVxJ9I=
github.com/getsentry/sentry-go v0.29.1 h1:DyZuChN8Hz3ARxGVV8ePaNXh1dQ7d76AiB117xcREwA=
github.com/getsentry/sentry-go v0.29.1/go.mod h1:x3AtIzN01d6SiWkderzaH28Tm0lgkafpJ5Bm3li39O0=
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc=
github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY=
github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY=
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/jensneuse/byte-template v0.0.0-20200214152254-4f3cf06e5c68 h1:E80wOd3IFQcoBxLkAUpUQ3BoGrZ4DxhQdP21+HH1s6A=
github.com/jensneuse/byte-template v0.0.0-20200214152254-4f3cf06e5c68/go.mod h1:0D5r/VSW6D/o65rKLL9xk7sZxL2+oku2HvFPYeIMFr4=
github.com/jensneuse/diffview v1.0.0 h1:4b6FQJ7y3295JUHU3tRko6euyEboL825ZsXeZZM47Z4=
github.com/jensneuse/diffview v1.0.0/go.mod h1:i6IacuD8LnEaPuiyzMHA+Wfz5mAuycMOf3R/orUY9y4=
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g=
github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ=
github.com/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o=
github.com/jmoiron/sqlx v1.4.0/go.mod h1:ZrZ7UsYB/weZdl2Bxg6jCRO9c3YHl8r3ahlKmRT4JLY=
github.com/jpillora/backoff v0.0.0-20180909062703-3050d21c67d7/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0=
github.com/kevinmbeaulieu/eq-go v1.0.0/go.mod h1:G3S8ajA56gKBZm4UB9AOyoOS37JO3roToPzKNM8dtdM=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs=
github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/logrusorgru/aurora/v3 v3.0.0/go.mod h1:vsR12bk5grlLvLXAYrBsb5Oc/N+LxAlxggSjiwMnCUc=
github.com/matryer/moq v0.2.3/go.mod h1:9RtPYjTnH1bSBIkpvtHkFN7nbWAnO7oRpdJkEIn6UtE=
github.com/matryer/moq v0.2.7/go.mod h1:kITsx543GOENm48TUAQyJ9+SAvFSr7iGQXPoth/VUBk=
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-sqlite3 v1.14.6 h1:dNPt6NO46WmLVt2DLNpwczCmdV5boIZ6g/tlDrlRUbg=
github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
github.com/mfridman/interpolate v0.0.2 h1:pnuTK7MQIxxFz1Gr+rjSIx9u7qVjf5VOoM/u6BbAxPY=
github.com/mfridman/interpolate v0.0.2/go.mod h1:p+7uk6oE07mpE/Ik1b8EckO0O4ZXiGAfshKBWLUM9Xg=
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
github.com/mitchellh/mapstructure v1.2.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/mapstructure v1.3.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4=
github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=
github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/qri-io/jsonpointer v0.1.1 h1:prVZBZLL6TW5vsSB9fFHFAMBLI4b0ri5vribQlTJiBA=
github.com/qri-io/jsonpointer v0.1.1/go.mod h1:DnJPaYgiKu56EuDp8TU5wFLdZIcAnb/uH9v37ZaMV64=
github.com/qri-io/jsonschema v0.2.1 h1:NNFoKms+kut6ABPf6xiKNM5214jzxAhDBrPHCJ97Wg0=
github.com/qri-io/jsonschema v0.2.1/go.mod h1:g7DPkiOsK1xv6T/Ao5scXRkd+yTFygcANPBaaqW+VrI=
github.com/rabbitmq/amqp091-go v1.3.4 h1:tXuIslN1nhDqs2t6Jrz3BAoqvt4qIZzxvdbdcxWtHYU=
github.com/rabbitmq/amqp091-go v1.3.4/go.mod h1:ogQDLSOACsLPsIq0NpbtiifNZi2YOz0VTJ0kHRghqbM=
github.com/pressly/goose/v3 v3.22.1 h1:2zICEfr1O3yTP9BRZMGPj7qFxQ+ik6yeo+z1LMuioLc=
github.com/pressly/goose/v3 v3.22.1/go.mod h1:xtMpbstWyCpyH+0cxLTMCENWBG+0CSxvTsXhW95d5eo=
github.com/rabbitmq/amqp091-go v1.10.0 h1:STpn5XsHlHGcecLmMFCtg7mqq0RnD+zFr4uzukfVhBw=
github.com/rabbitmq/amqp091-go v1.10.0/go.mod h1:Hy4jKW5kQART1u+JkDTF9YYOQUHXqMuhrgxOEeS7G4o=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/rogpeppe/fastuuid v1.1.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U=
github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA=
github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=
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/sanity-io/litter v1.5.5 h1:iE+sBxPBzoK6uaEP5Lt3fHNgpKcHXc/A2HGETy0uJQo=
github.com/sanity-io/litter v1.5.5/go.mod h1:9gzJgR2i4ZpjZHsKvUXIRQVk7P+yM3e+jAF7bU2UI5U=
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4=
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY=
github.com/sebdah/goldie/v2 v2.5.3 h1:9ES/mNN+HNUbNWpVAlrzuZ7jE+Nrczbj8uFRjM7624Y=
github.com/sebdah/goldie/v2 v2.5.3/go.mod h1:oZ9fp0+se1eapSRjfYbsV/0Hqhbuu3bJVvKI/NNtssI=
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
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/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8=
github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=
github.com/sethvargo/go-retry v0.3.0 h1:EEt31A35QhrcRZtrYFDTBg91cqZVnFL2navjDrah2SE=
github.com/sethvargo/go-retry v0.3.0/go.mod h1:mNX17F0C/HguQMyMyJxcnU471gOZGxCLyYaFyAZraas=
github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM=
github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM=
github.com/smartystreets/gunit v1.0.0/go.mod h1:qwPWnhz6pn0NnRBP++URONOVyNkPyr4SauJk4cUOwJs=
github.com/sparetimecoders/goamqp v0.1.1 h1:+TSwlrrnfJIyM+MKpnzk+4mnIvt6M8gdEFNRN4Q0wQA=
github.com/sparetimecoders/goamqp v0.1.1/go.mod h1:JIydmIgCqETEHIiGYmN03gNSs2bghWBHEqnR/Lfmzb0=
github.com/sosodev/duration v1.3.1 h1:qtHBDMQ6lvMQsL15g4aopM4HEfOaYuhWBw3NPTtlqq4=
github.com/sosodev/duration v1.3.1/go.mod h1:RQIBBX0+fMLc/D9+Jb/fwvVmo0eZvDDEERAikUR6SDg=
github.com/sparetimecoders/goamqp v0.3.1 h1:NCzdyAz84G679HlO+ivhyoI1aMgXEe3qfqpn4EChu1s=
github.com/sparetimecoders/goamqp v0.3.1/go.mod h1:PjkgrmsuMVgRbiQDTLs0pCWYrcQgqcUee38JjCDZdlk=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/testify v0.0.0-20161117074351-18a02ba4a312/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
github.com/stretchr/testify v1.7.3/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/gjson v1.14.3 h1:9jvXn7olKEHU1S9vwoMGliaT8jq1vJ7IH/n9zD9Dnlw=
github.com/tidwall/gjson v1.14.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/gjson v1.17.0 h1:/Jocvlh98kcTfpN2+JzGQWQcqrPQwDrVEMApx/M5ZwM=
github.com/tidwall/gjson v1.17.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
@@ -172,105 +173,76 @@ github.com/tj/go-buffer v1.1.0/go.mod h1:iyiJpfFcR2B9sXu7KvjbT9fpM4mOelRSDTbntVj
github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0=
github.com/tj/go-kinesis v0.0.0-20171128231115-08b17f58cb1b/go.mod h1:/yhzCV0xPfx6jb1bBgRFjl5lytqVqZXEaeqWP8lTEao=
github.com/tj/go-spin v1.1.0/go.mod h1:Mg1mzmePZm4dva8Qz60H2lHwmJ2loum4VIrLgVnKwh4=
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
github.com/urfave/cli/v2 v2.8.1 h1:CGuYNZF9IKZY/rfBe3lJpccSoIY1ytfvmgQT90cNOl4=
github.com/urfave/cli/v2 v2.8.1/go.mod h1:Z41J9TPoffeoqP0Iza0YbAhGvymRdZAd2uPmZ5JxRdY=
github.com/vektah/gqlparser/v2 v2.4.0/go.mod h1:flJWIR04IMQPGz+BXLrORkrARBxv/rtyIAFvd/MceW0=
github.com/vektah/gqlparser/v2 v2.4.5/go.mod h1:flJWIR04IMQPGz+BXLrORkrARBxv/rtyIAFvd/MceW0=
github.com/vektah/gqlparser/v2 v2.5.1 h1:ZGu+bquAY23jsxDRcYpWjttRZrUz07LbiY77gUOHcr4=
github.com/vektah/gqlparser/v2 v2.5.1/go.mod h1:mPgqFBu/woKTVYWyNk8cO3kh4S/f4aRFZrvOnp3hmCs=
github.com/wundergraph/graphql-go-tools v1.57.2-0.20221005155749-a4fdba38990b h1:ACY3sLD/diOLMB6uvtpZPB0EWtrlH498mT0N7T1bnm4=
github.com/wundergraph/graphql-go-tools v1.57.2-0.20221005155749-a4fdba38990b/go.mod h1:gacwbFD8atVwDwzY5btN0/1QXvTprQ/gbT+XlZaQg4c=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
gitlab.com/unboundsoftware/eventsourced/amqp v1.5.0 h1:YJu6oD8vzxuSZZqPv2N3UyQzvWDWW0h/XTHiy0aiWSo=
gitlab.com/unboundsoftware/eventsourced/amqp v1.5.0/go.mod h1:dDShzDLym/gM7Mad26Y0K2TTLUy97hO46XC69Zi91qQ=
gitlab.com/unboundsoftware/eventsourced/eventsourced v1.9.0/go.mod h1:nm3W8Gr8shALbgBepOocFRqDenG/oZFBON8WLIlOvck=
gitlab.com/unboundsoftware/eventsourced/eventsourced v1.9.2/go.mod h1:i1Woh2JHIgAK27nFxS7q6/fAceSqX4VR7PYTizY5EMI=
gitlab.com/unboundsoftware/eventsourced/eventsourced v1.9.3 h1:Khls+eq34tovtDBnSPHpC4tKswUlNDCYHH9Vl5A+hTo=
gitlab.com/unboundsoftware/eventsourced/eventsourced v1.9.3/go.mod h1:c4rRdyIFW2s49hnLv5c5HsfL3I144mLnvvIOb0JZdpk=
gitlab.com/unboundsoftware/eventsourced/pg v1.9.0 h1:Hr8kgACHTFICDMV71waf/+CZVKkKJWzXqPGbomMUs70=
gitlab.com/unboundsoftware/eventsourced/pg v1.9.0/go.mod h1:tfwAGkvmnCpJCAIr94hljJzZXm+W1aHAXjuYJXbXYiI=
github.com/urfave/cli/v2 v2.27.4 h1:o1owoI+02Eb+K107p27wEX9Bb8eqIoZCfLXloLUSWJ8=
github.com/urfave/cli/v2 v2.27.4/go.mod h1:m4QzxcD2qpra4z7WhzEGn74WZLViBnMpb1ToCAKdGRQ=
github.com/vektah/gqlparser/v2 v2.5.18 h1:zSND3GtutylAQ1JpWnTHcqtaRZjl+y3NROeW8vuNo6Y=
github.com/vektah/gqlparser/v2 v2.5.18/go.mod h1:6HLzf7JKv9Fi3APymudztFQNmLXR5qJeEo6BOFcXVfc=
github.com/wundergraph/graphql-go-tools v1.67.4 h1:1QtoftaZz5sScV/J6XLZ/oTfi1lMHp6UmFkYRQfY2/g=
github.com/wundergraph/graphql-go-tools v1.67.4/go.mod h1:UFvflYjB/qnSCdgcHQuE6dTfwZ6viJB7yPnGOtBuibo=
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4=
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM=
gitlab.com/unboundsoftware/eventsourced/amqp v1.6.6 h1:v0HmyqTBBODtJf0kCxt/g8iJuLp31EfjPLVbDVnSt38=
gitlab.com/unboundsoftware/eventsourced/amqp v1.6.6/go.mod h1:dUyrC2fqHNkW8yFT/XQYtITxgFT/Q4U7le3efu8p0qU=
gitlab.com/unboundsoftware/eventsourced/eventsourced v1.15.0 h1:dW/w53Mz/TykCU7led8VTUoNZzy57o9MPjbK5I/4+mo=
gitlab.com/unboundsoftware/eventsourced/eventsourced v1.15.0/go.mod h1:8IGvjd/6NXjLUrmyETGjr+IkiEIuRSPlefwiLlnoBUM=
gitlab.com/unboundsoftware/eventsourced/pg v1.14.4 h1:8akaF80HFGfaPba2uE8VL3w6W8rv4HlATmrqMczbTKo=
gitlab.com/unboundsoftware/eventsourced/pg v1.14.4/go.mod h1:O8sLw27s5ulJJOVX6TdmkWg3N2pVlrd3s8QSvwF+CB4=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
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/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A=
golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70=
golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0=
golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo=
golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/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/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20221006211917-84dc82d7e875 h1:AzgQNqF+FKwyQ5LbVrVqOcuuFB67N47F9+htZYH0wFM=
golang.org/x/sys v0.0.0-20221006211917-84dc82d7e875/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
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.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/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224=
golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200815165600-90abf76919f3/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=
golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
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=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df h1:5Pf6pFKu98ODmgnpvkJ3kFUOQGGLIzLIkbzUHp47618=
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/go-jose/go-jose.v2 v2.6.3 h1:nt80fvSDlhKWQgSWyHyy5CfmlQr+asih51R8PTWNKKs=
gopkg.in/go-jose/go-jose.v2 v2.6.3/go.mod h1:zzZDPkNNw/c9IE7Z9jr11mBZQhKQTMzoEEIoEdZlFBI=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
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.8/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=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 h1:5D53IMaUuA5InSeMu9eJtlQXS2NxAhyWQvkKEgXZhHI=
modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6/go.mod h1:Qz0X07sNOR1jWYCrJMEnbW/X55x206Q7Vt4mz6/wHp4=
modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4=
modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo=
modernc.org/memory v1.8.0 h1:IqGTL6eFMaDZZhEWwcREgeMXYwmW83LYW8cROZYkg+E=
modernc.org/memory v1.8.0/go.mod h1:XPZ936zp5OMKGWPqbD3JShgd/ZoQ7899TUuQqxY+peU=
modernc.org/sqlite v1.33.0 h1:WWkA/T2G17okiLGgKAj4/RMIvgyMT19yQ038160IeYk=
modernc.org/sqlite v1.33.0/go.mod h1:9uQ9hF/pCZoYZK73D/ud5Z7cIRIILSZI8NdIemVMTX8=
modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA=
modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0=
modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=
modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
+2
View File
@@ -39,6 +39,8 @@ resolver:
# Optional: set to speed up generation time by not performing a final validation pass.
# skip_validation: true
omit_gqlgen_version_in_file_notice: true
# gqlgen will search for any type names in the schema in these go packages
# if they match it will use them, otherwise it will generate them.
autobind:
+49
View File
@@ -0,0 +1,49 @@
package graph
import (
"gitlab.com/unboundsoftware/schemas/domain"
"gitlab.com/unboundsoftware/schemas/graph/model"
)
func ToGqlOrganizations(orgs []domain.Organization) []*model.Organization {
result := make([]*model.Organization, len(orgs))
for i, o := range orgs {
result[i] = ToGqlOrganization(o)
}
return result
}
func ToGqlOrganization(o domain.Organization) *model.Organization {
users := ToGqlUsers(o.Users)
apiKeys := ToGqlAPIKeys(o.APIKeys)
return &model.Organization{
ID: o.ID.String(),
Name: o.Name,
Users: users,
APIKeys: apiKeys,
}
}
func ToGqlUsers(users []string) []*model.User {
result := make([]*model.User, len(users))
for i, u := range users {
result[i] = &model.User{ID: u}
}
return result
}
func ToGqlAPIKeys(keys []domain.APIKey) []*model.APIKey {
result := make([]*model.APIKey, len(keys))
for i, k := range keys {
result[i] = &model.APIKey{
ID: apiKeyId(k.OrganizationId, k.Name),
Name: k.Name,
Key: &k.Key,
Organization: nil,
Refs: k.Refs,
Read: k.Read,
Publish: k.Publish,
}
}
return result
}
+2059 -365
View File
File diff suppressed because it is too large Load Diff
+40 -4
View File
@@ -10,19 +10,50 @@ type Supergraph interface {
IsSupergraph()
}
type APIKey struct {
ID string `json:"id"`
Name string `json:"name"`
Key *string `json:"key,omitempty"`
Organization *Organization `json:"organization"`
Refs []string `json:"refs"`
Read bool `json:"read"`
Publish bool `json:"publish"`
}
type InputAPIKey struct {
Name string `json:"name"`
OrganizationID string `json:"organizationId"`
Refs []string `json:"refs"`
Read bool `json:"read"`
Publish bool `json:"publish"`
}
type InputSubGraph struct {
Ref string `json:"ref"`
Service string `json:"service"`
URL *string `json:"url"`
WsURL *string `json:"wsUrl"`
URL *string `json:"url,omitempty"`
WsURL *string `json:"wsUrl,omitempty"`
Sdl string `json:"sdl"`
}
type Mutation struct {
}
type Organization struct {
ID string `json:"id"`
Name string `json:"name"`
Users []*User `json:"users"`
APIKeys []*APIKey `json:"apiKeys"`
}
type Query struct {
}
type SubGraph struct {
ID string `json:"id"`
Service string `json:"service"`
URL *string `json:"url"`
WsURL *string `json:"wsUrl"`
URL *string `json:"url,omitempty"`
WsURL *string `json:"wsUrl,omitempty"`
Sdl string `json:"sdl"`
ChangedBy string `json:"changedBy"`
ChangedAt time.Time `json:"changedAt"`
@@ -31,6 +62,7 @@ type SubGraph struct {
type SubGraphs struct {
ID string `json:"id"`
MinDelaySeconds int `json:"minDelaySeconds"`
Sdl string `json:"sdl"`
SubGraphs []*SubGraph `json:"subGraphs"`
}
@@ -42,3 +74,7 @@ type Unchanged struct {
}
func (Unchanged) IsSupergraph() {}
type User struct {
ID string `json:"id"`
}
+33 -4
View File
@@ -1,21 +1,26 @@
package graph
import (
"context"
"fmt"
"github.com/apex/log"
"gitlab.com/unboundsoftware/eventsourced/eventsourced"
"gitlab.com/unboundsoftware/schemas/cache"
"gitlab.com/unboundsoftware/schemas/middleware"
)
//go:generate go run github.com/99designs/gqlgen
//go:generate gofumpt -w .
//go:generate goimports -w -local gitlab.com/unboundsoftware/schemas .
// This file will not be regenerated automatically.
//
// It serves as dependency injection for your app, add any dependencies you require here.
type Publisher interface {
Publish(event eventsourced.Event) error
Stop() error
Publish(ctx context.Context, event eventsourced.Event) error
}
type Resolver struct {
@@ -25,6 +30,30 @@ type Resolver struct {
Cache *cache.Cache
}
func (r *Resolver) handler(aggregate eventsourced.Aggregate) (eventsourced.CommandHandler, error) {
return eventsourced.NewHandler(aggregate, r.EventStore, eventsourced.WithEventPublisher(r.Publisher))
func (r *Resolver) apiKeyCanAccessRef(ctx context.Context, ref string, publish bool) (string, error) {
key, err := middleware.ApiKeyFromContext(ctx)
if err != nil {
return "", err
}
apiKey := r.Cache.ApiKeyByKey(key)
if publish && !apiKey.Publish {
return "", fmt.Errorf("provided API-key doesn't have publish privilege")
}
if !publish && !apiKey.Read {
return "", fmt.Errorf("provided API-key doesn't have read privilege")
}
for _, rr := range apiKey.Refs {
if rr == ref {
return apiKey.Name, nil
}
}
return "", fmt.Errorf("provided API-key doesn't have the required privilege on the requested Schema Ref")
}
func (r *Resolver) handler(ctx context.Context, aggregate eventsourced.Aggregate) (eventsourced.CommandHandler, error) {
return eventsourced.NewHandler(ctx, aggregate, r.EventStore, eventsourced.WithEventPublisher(r.Publisher))
}
func apiKeyId(orgId, name string) string {
return fmt.Sprintf("%s-%s", orgId, name)
}
+36 -4
View File
@@ -1,10 +1,33 @@
type Query {
subGraphs(ref: String!): [SubGraph!]! @hasApiKey @deprecated(reason: "Use supergraph instead")
supergraph(ref: String!, isAfter: String): Supergraph! @hasApiKey
organizations: [Organization!]! @auth(user: true)
supergraph(ref: String!, isAfter: String): Supergraph! @auth(organization: true)
}
type Mutation {
updateSubGraph(input: InputSubGraph!): SubGraph! @hasApiKey
addOrganization(name: String!): Organization! @auth(user: true)
addAPIKey(input: InputAPIKey): APIKey! @auth(user: true)
updateSubGraph(input: InputSubGraph!): SubGraph! @auth(organization: true)
}
type Organization {
id: ID!
name: String!
users: [User!]!
apiKeys: [APIKey!]!
}
type User {
id: String!
}
type APIKey {
id: ID!
name: String!
key: String
organization: Organization!
refs: [String!]!
read: Boolean!
publish: Boolean!
}
union Supergraph = Unchanged | SubGraphs
@@ -17,6 +40,7 @@ type Unchanged {
type SubGraphs {
id: ID!
minDelaySeconds: Int!
sdl: String!
subGraphs: [SubGraph!]!
}
@@ -30,6 +54,14 @@ type SubGraph {
changedAt: Time!
}
input InputAPIKey {
name: String!
organizationId: ID!
refs: [String!]!
read: Boolean!
publish: Boolean!
}
input InputSubGraph {
ref: String!
service: String!
@@ -40,4 +72,4 @@ input InputSubGraph {
scalar Time
directive @hasApiKey on FIELD_DEFINITION
directive @auth(user: Boolean, organization: Boolean) on FIELD_DEFINITION
+14 -2
View File
@@ -1,15 +1,17 @@
package graph
import (
"context"
"gitlab.com/unboundsoftware/eventsourced/eventsourced"
"gitlab.com/unboundsoftware/schemas/domain"
"gitlab.com/unboundsoftware/schemas/graph/model"
)
func (r *Resolver) fetchSubGraph(subGraphId string) (*domain.SubGraph, error) {
func (r *Resolver) fetchSubGraph(ctx context.Context, subGraphId string) (*domain.SubGraph, error) {
subGraph := &domain.SubGraph{BaseAggregate: eventsourced.BaseAggregateFromString(subGraphId)}
_, err := r.handler(subGraph)
_, err := r.handler(ctx, subGraph)
if err != nil {
return nil, err
}
@@ -27,3 +29,13 @@ func (r *Resolver) toGqlSubGraph(subGraph *domain.SubGraph) *model.SubGraph {
ChangedAt: subGraph.ChangedAt,
}
}
func (r *Resolver) stringEqual(s1, s2 *string) bool {
if s1 == nil && s2 == nil {
return true
}
if s1 != nil && s2 != nil && *s1 == *s2 {
return true
}
return false
}
+101 -24
View File
@@ -2,6 +2,7 @@ package graph
// This file will be automatically regenerated based on the schema, any resolver implementations
// will be copied through when generating and any unknown code will be moved to the end.
// Code generated by github.com/99designs/gqlgen
import (
"context"
@@ -14,26 +15,87 @@ import (
"gitlab.com/unboundsoftware/schemas/domain"
"gitlab.com/unboundsoftware/schemas/graph/generated"
"gitlab.com/unboundsoftware/schemas/graph/model"
"gitlab.com/unboundsoftware/schemas/middleware"
"gitlab.com/unboundsoftware/schemas/rand"
)
// AddOrganization is the resolver for the addOrganization field.
func (r *mutationResolver) AddOrganization(ctx context.Context, name string) (*model.Organization, error) {
sub := middleware.UserFromContext(ctx)
org := &domain.Organization{}
h, err := r.handler(ctx, org)
if err != nil {
return nil, err
}
_, err = h.Handle(ctx, &domain.AddOrganization{
Name: name,
Initiator: sub,
})
if err != nil {
return nil, err
}
return ToGqlOrganization(*org), nil
}
// AddAPIKey is the resolver for the addAPIKey field.
func (r *mutationResolver) AddAPIKey(ctx context.Context, input *model.InputAPIKey) (*model.APIKey, error) {
sub := middleware.UserFromContext(ctx)
org := &domain.Organization{BaseAggregate: eventsourced.BaseAggregateFromString(input.OrganizationID)}
h, err := r.handler(ctx, org)
if err != nil {
return nil, err
}
key := fmt.Sprintf("us_ak_%s", rand.String(16))
_, err = h.Handle(ctx, &domain.AddAPIKey{
Name: input.Name,
Key: key,
Refs: input.Refs,
Read: input.Read,
Publish: input.Publish,
Initiator: sub,
})
if err != nil {
return nil, err
}
return &model.APIKey{
ID: apiKeyId(input.OrganizationID, input.Name),
Name: input.Name,
Key: &key,
Organization: &model.Organization{
ID: input.OrganizationID,
Name: org.Name,
},
Refs: input.Refs,
Read: input.Read,
Publish: input.Publish,
}, nil
}
// UpdateSubGraph is the resolver for the updateSubGraph field.
func (r *mutationResolver) UpdateSubGraph(ctx context.Context, input model.InputSubGraph) (*model.SubGraph, error) {
subGraphId := r.Cache.SubGraphId(input.Ref, input.Service)
orgId := middleware.OrganizationFromContext(ctx)
name, err := r.apiKeyCanAccessRef(ctx, input.Ref, true)
if err != nil {
return nil, err
}
subGraphId := r.Cache.SubGraphId(orgId, input.Ref, input.Service)
subGraph := &domain.SubGraph{}
if subGraphId != "" {
subGraph.BaseAggregate = eventsourced.BaseAggregateFromString(subGraphId)
}
handler, err := r.handler(subGraph)
handler, err := r.handler(ctx, subGraph)
if err != nil {
return nil, err
}
if strings.TrimSpace(input.Sdl) == strings.TrimSpace(subGraph.Sdl) {
if strings.TrimSpace(input.Sdl) == strings.TrimSpace(subGraph.Sdl) &&
r.stringEqual(input.URL, subGraph.Url) &&
r.stringEqual(input.WsURL, subGraph.WSUrl) {
return r.toGqlSubGraph(subGraph), nil
}
serviceSDLs := []string{input.Sdl}
services, _ := r.Cache.Services(input.Ref, "")
services, _ := r.Cache.Services(orgId, input.Ref, "")
for _, id := range services {
sg, err := r.fetchSubGraph(id)
sg, err := r.fetchSubGraph(ctx, id)
if err != nil {
return nil, err
}
@@ -45,13 +107,14 @@ func (r *mutationResolver) UpdateSubGraph(ctx context.Context, input model.Input
if err != nil {
return nil, err
}
_, err = handler.Handle(domain.UpdateSubGraph{
Ref: input.Ref,
Service: input.Service,
Url: input.URL,
WSUrl: input.WsURL,
Sdl: input.Sdl,
Initiator: "Fetch name from API-key?",
_, err = handler.Handle(ctx, domain.UpdateSubGraph{
OrganizationId: orgId,
Ref: input.Ref,
Service: input.Service,
Url: input.URL,
WSUrl: input.WsURL,
Sdl: input.Sdl,
Initiator: name,
})
if err != nil {
return nil, err
@@ -59,25 +122,25 @@ func (r *mutationResolver) UpdateSubGraph(ctx context.Context, input model.Input
return r.toGqlSubGraph(subGraph), nil
}
// SubGraphs is the resolver for the subGraphs field.
func (r *queryResolver) SubGraphs(ctx context.Context, ref string) ([]*model.SubGraph, error) {
res, err := r.Supergraph(ctx, ref, nil)
if err != nil {
return nil, err
}
if s, ok := res.(*model.SubGraphs); ok {
return s.SubGraphs, nil
}
return nil, fmt.Errorf("unexpected response")
// Organizations is the resolver for the organizations field.
func (r *queryResolver) Organizations(ctx context.Context) ([]*model.Organization, error) {
sub := middleware.UserFromContext(ctx)
orgs := r.Cache.OrganizationsByUser(sub)
return ToGqlOrganizations(orgs), nil
}
// Supergraph is the resolver for the supergraph field.
func (r *queryResolver) Supergraph(ctx context.Context, ref string, isAfter *string) (model.Supergraph, error) {
orgId := middleware.OrganizationFromContext(ctx)
_, err := r.apiKeyCanAccessRef(ctx, ref, false)
if err != nil {
return nil, err
}
after := ""
if isAfter != nil {
after = *isAfter
}
services, lastUpdate := r.Cache.Services(ref, after)
services, lastUpdate := r.Cache.Services(orgId, ref, after)
if after == lastUpdate {
return &model.Unchanged{
ID: lastUpdate,
@@ -86,7 +149,7 @@ func (r *queryResolver) Supergraph(ctx context.Context, ref string, isAfter *str
}
subGraphs := make([]*model.SubGraph, len(services))
for i, id := range services {
sg, err := r.fetchSubGraph(id)
sg, err := r.fetchSubGraph(ctx, id)
if err != nil {
return nil, err
}
@@ -100,9 +163,23 @@ func (r *queryResolver) Supergraph(ctx context.Context, ref string, isAfter *str
ChangedAt: sg.ChangedAt,
}
}
var serviceSDLs []string
for _, id := range services {
sg, err := r.fetchSubGraph(ctx, id)
if err != nil {
return nil, err
}
serviceSDLs = append(serviceSDLs, sg.Sdl)
}
sdl, err := sdlmerge.MergeSDLs(serviceSDLs...)
if err != nil {
return nil, err
}
return &model.SubGraphs{
ID: lastUpdate,
SubGraphs: subGraphs,
Sdl: sdl,
MinDelaySeconds: 10,
}, nil
}
+11
View File
@@ -0,0 +1,11 @@
package hash
import (
"crypto/sha256"
"encoding/base64"
)
func String(s string) string {
encoded := sha256.New().Sum([]byte(s))
return base64.StdEncoding.EncodeToString(encoded)
}
+3 -1
View File
@@ -42,9 +42,11 @@ spec:
- name: schemas
resources:
limits:
cpu: "500m"
memory: "100Mi"
requests:
memory: "100Mi"
cpu: "100m"
memory: "20Mi"
readinessProbe:
httpGet:
path: /health
+2 -1
View File
@@ -4,11 +4,12 @@ metadata:
name: schemas-ingress
annotations:
kubernetes.io/ingress.class: "alb"
alb.ingress.kubernetes.io/group.name: "unbound"
alb.ingress.kubernetes.io/group.name: "default"
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: instance
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]'
alb.ingress.kubernetes.io/ssl-redirect: "443"
alb.ingress.kubernetes.io/healthcheck-path: '/health'
spec:
rules:
- host: "schemas.unbound.se"
+2
View File
@@ -14,6 +14,8 @@ spec:
data:
POSTGRES_URL: "postgres://{{ .DB_USERNAME }}:{{ .DB_PASSWORD }}@{{ .DB_HOST }}:{{ .DB_PORT }}/schemas?sslmode=disable"
API_KEY: "{{ .API_KEY }}"
SENTRY_DSN: "{{ .SENTRY_DSN }}"
SENTRY_ENVIRONMENT: "{{ .SENTRY_ENVIRONMENT }}"
dataFrom:
- extract:
key: services/schemas
+5 -25
View File
@@ -4,26 +4,17 @@ import (
"context"
"fmt"
"net/http"
"github.com/99designs/gqlgen/graphql"
"github.com/apex/log"
)
type ContextKey string
const (
ApiKey = ContextKey("apikey")
)
func NewApiKey(apiKey string, logger log.Interface) *ApiKeyMiddleware {
return &ApiKeyMiddleware{
apiKey: apiKey,
}
func NewApiKey() *ApiKeyMiddleware {
return &ApiKeyMiddleware{}
}
type ApiKeyMiddleware struct {
apiKey string
}
type ApiKeyMiddleware struct{}
func (m *ApiKeyMiddleware) Handler(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
@@ -37,23 +28,12 @@ func (m *ApiKeyMiddleware) Handler(next http.Handler) http.Handler {
})
}
func (m *ApiKeyMiddleware) Directive(ctx context.Context, obj interface{}, next graphql.Resolver) (res interface{}, err error) {
key, err := m.fromContext(ctx)
if err != nil {
return nil, err
}
if key != m.apiKey {
return nil, fmt.Errorf("invalid API-key")
}
return next(ctx)
}
func (m *ApiKeyMiddleware) fromContext(ctx context.Context) (string, error) {
func ApiKeyFromContext(ctx context.Context) (string, error) {
if value := ctx.Value(ApiKey); value != nil {
if u, ok := value.(string); ok {
return u, nil
}
return "", fmt.Errorf("current API-key is in wrong format")
}
return "", fmt.Errorf("no API-key found")
return "", nil
}
+90
View File
@@ -0,0 +1,90 @@
package middleware
import (
"context"
"fmt"
"net/http"
"github.com/99designs/gqlgen/graphql"
"github.com/golang-jwt/jwt/v5"
"gitlab.com/unboundsoftware/schemas/domain"
"gitlab.com/unboundsoftware/schemas/hash"
)
const (
UserKey = ContextKey("user")
OrganizationKey = ContextKey("organization")
)
type Cache interface {
OrganizationByAPIKey(apiKey string) *domain.Organization
}
func NewAuth(cache Cache) *AuthMiddleware {
return &AuthMiddleware{
cache: cache,
}
}
type AuthMiddleware struct {
cache Cache
}
func (m *AuthMiddleware) Handler(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
token, err := TokenFromContext(r.Context())
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
_, _ = w.Write([]byte("Invalid JWT token format"))
return
}
if token != nil {
ctx = context.WithValue(ctx, UserKey, token.Claims.(jwt.MapClaims)["sub"])
}
apiKey, err := ApiKeyFromContext(r.Context())
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
_, _ = w.Write([]byte("Invalid API Key format"))
return
}
if organization := m.cache.OrganizationByAPIKey(hash.String(apiKey)); organization != nil {
ctx = context.WithValue(ctx, OrganizationKey, *organization)
}
next.ServeHTTP(w, r.WithContext(ctx))
})
}
func UserFromContext(ctx context.Context) string {
if value := ctx.Value(UserKey); value != nil {
if u, ok := value.(string); ok {
return u
}
}
return ""
}
func OrganizationFromContext(ctx context.Context) string {
if value := ctx.Value(OrganizationKey); value != nil {
if u, ok := value.(domain.Organization); ok {
return u.ID.String()
}
}
return ""
}
func (m *AuthMiddleware) Directive(ctx context.Context, _ interface{}, next graphql.Resolver, user *bool, organization *bool) (res interface{}, err error) {
if user != nil && *user {
if u := UserFromContext(ctx); u == "" {
return nil, fmt.Errorf("no user available in request")
}
}
if organization != nil && *organization {
if orgId := OrganizationFromContext(ctx); orgId == "" {
return nil, fmt.Errorf("no organization available in request")
}
}
return next(ctx)
}
+174
View File
@@ -0,0 +1,174 @@
package middleware
import (
"context"
"crypto/tls"
"encoding/json"
"fmt"
"net/http"
"strings"
"sync"
"time"
mw "github.com/auth0/go-jwt-middleware/v2"
"github.com/golang-jwt/jwt/v5"
"github.com/pkg/errors"
)
type Auth0 struct {
domain string
audience string
client *http.Client
cache JwksCache
}
func NewAuth0(audience, domain string, strictSsl bool) *Auth0 {
customTransport := http.DefaultTransport.(*http.Transport).Clone()
customTransport.TLSClientConfig = &tls.Config{InsecureSkipVerify: !strictSsl}
client := &http.Client{Transport: customTransport}
return &Auth0{
domain: domain,
audience: audience,
client: client,
cache: JwksCache{
RWMutex: &sync.RWMutex{},
cache: make(map[string]cacheItem),
},
}
}
type Response struct {
Message string `json:"message"`
}
type Jwks struct {
Keys []JSONWebKeys `json:"keys"`
}
type JSONWebKeys struct {
Kty string `json:"kty"`
Kid string `json:"kid"`
Use string `json:"use"`
N string `json:"n"`
E string `json:"e"`
X5c []string `json:"x5c"`
}
func (a *Auth0) ValidationKeyGetter() func(token *jwt.Token) (interface{}, error) {
return func(token *jwt.Token) (interface{}, error) {
// Verify 'aud' claim
cert, err := a.getPemCert(token)
if err != nil {
panic(err.Error())
}
result, _ := jwt.ParseRSAPublicKeyFromPEM([]byte(cert))
return result, nil
}
}
func (a *Auth0) Middleware() *mw.JWTMiddleware {
issuer := fmt.Sprintf("https://%s/", a.domain)
jwtMiddleware := mw.New(func(ctx context.Context, token string) (interface{}, error) {
jwtToken, err := jwt.Parse(token, a.ValidationKeyGetter(), jwt.WithAudience(a.audience), jwt.WithIssuer(issuer))
if err != nil {
return nil, err
}
if _, ok := jwtToken.Method.(*jwt.SigningMethodRSA); !ok {
return nil, fmt.Errorf("unexpected signing method: %v", jwtToken.Header["alg"])
}
return jwtToken, nil
},
mw.WithTokenExtractor(func(r *http.Request) (string, error) {
token := r.Header.Get("Authorization")
if strings.HasPrefix(token, "Bearer ") {
return token[7:], nil
}
return "", nil
}),
mw.WithCredentialsOptional(true),
)
return jwtMiddleware
}
func TokenFromContext(ctx context.Context) (*jwt.Token, error) {
if value := ctx.Value(mw.ContextKey{}); value != nil {
if u, ok := value.(*jwt.Token); ok {
return u, nil
}
return nil, fmt.Errorf("token is in wrong format")
}
return nil, nil
}
func (a *Auth0) cacheGetWellknown(url string) (*Jwks, error) {
if value := a.cache.get(url); value != nil {
return value, nil
}
jwks := &Jwks{}
resp, err := a.client.Get(url)
if err != nil {
return jwks, err
}
defer func() {
_ = resp.Body.Close()
}()
err = json.NewDecoder(resp.Body).Decode(jwks)
if err == nil && jwks != nil {
a.cache.put(url, jwks)
}
return jwks, err
}
func (a *Auth0) getPemCert(token *jwt.Token) (string, error) {
jwks, err := a.cacheGetWellknown(fmt.Sprintf("https://%s/.well-known/jwks.json", a.domain))
if err != nil {
return "", err
}
var cert string
for k := range jwks.Keys {
if token.Header["kid"] == jwks.Keys[k].Kid {
cert = "-----BEGIN CERTIFICATE-----\n" + jwks.Keys[k].X5c[0] + "\n-----END CERTIFICATE-----"
}
}
if cert == "" {
err := errors.New("Unable to find appropriate key.")
return cert, err
}
return cert, nil
}
type JwksCache struct {
*sync.RWMutex
cache map[string]cacheItem
}
type cacheItem struct {
data *Jwks
expiration time.Time
}
func (c *JwksCache) get(url string) *Jwks {
c.RLock()
defer c.RUnlock()
if value, ok := c.cache[url]; ok {
if time.Now().After(value.expiration) {
return nil
}
return value.data
}
return nil
}
func (c *JwksCache) put(url string, jwks *Jwks) {
c.Lock()
defer c.Unlock()
c.cache[url] = cacheItem{
data: jwks,
expiration: time.Now().Add(time.Minute * 60),
}
}
+3
View File
@@ -0,0 +1,3 @@
package middleware
type ContextKey string
+24
View File
@@ -0,0 +1,24 @@
package rand
import (
"math/rand"
"time"
)
const charset = "abcdefghijklmnopqrstuvwxyz" +
"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
var seededRand *rand.Rand = rand.New(
rand.NewSource(time.Now().UnixNano()))
func StringWithCharset(length int, charset string) string {
b := make([]byte, length)
for i := range b {
b[i] = charset[seededRand.Intn(len(charset))]
}
return string(b)
}
func String(length int) string {
return StringWithCharset(length, charset)
}
+6
View File
@@ -0,0 +1,6 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended"
]
}
@@ -0,0 +1,52 @@
-- +goose Up
-- Add Unbound Software Development organization
insert into aggregates (id, name)
values ('d46ffcb0-19e8-4769-8697-590326ef7b51', 'domain.Organization');
insert into events (name, aggregate_id, aggregate_sequence_no, payload, tstamp, aggregate_name)
values ('domain.OrganizationAdded', 'd46ffcb0-19e8-4769-8697-590326ef7b51', 1, '{"id":"d46ffcb0-19e8-4769-8697-590326ef7b51","time":"2023-04-26T14:46:04.43462+02:00","name":"Unbound Software Development","initiator":"google-oauth2|101953650269257914934"}', '2023-04-26T14:46:04.43462+02:00', 'domain.Organization');
-- Add API keys
insert into events (name, aggregate_id, aggregate_sequence_no, payload, tstamp, aggregate_name)
values ('domain.APIKeyAdded', 'd46ffcb0-19e8-4769-8697-590326ef7b51', 2,
'{"id":"d46ffcb0-19e8-4769-8697-590326ef7b51","time":"2023-04-26T15:46:54.181929+02:00","organizationId":"","name":"CI","key":"dXNfYWtfeUl2R3RRQUJQTmJzVEFrUeOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhV","refs":["Shiny@staging","Shiny@prod"],"read":false,"publish":true,"initiator":"google-oauth2|101953650269257914934"}',
'2023-04-26 15:46:54.181929 +02:00', 'domain.Organization');
insert into events (name, aggregate_id, aggregate_sequence_no, payload, tstamp, aggregate_name)
values ('domain.APIKeyAdded', 'd46ffcb0-19e8-4769-8697-590326ef7b51', 3,
'{"id":"d46ffcb0-19e8-4769-8697-590326ef7b51","time":"2023-04-26T15:52:55.955203+02:00","organizationId":"","name":"Gateway","key":"dXNfYWtfdnkzSkRseDNlSDNjcnZzOeOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhV","refs":["Shiny@staging","Shiny@prod"],"read":true,"publish":false,"initiator":"google-oauth2|101953650269257914934"}',
'2023-04-26 15:52:55.955203 +02:00', 'domain.Organization');
insert into events (name, aggregate_id, aggregate_sequence_no, payload, tstamp, aggregate_name)
values ('domain.APIKeyAdded', 'd46ffcb0-19e8-4769-8697-590326ef7b51', 4,
'{"id":"d46ffcb0-19e8-4769-8697-590326ef7b51","time":"2023-04-26T16:30:00.0011+02:00","organizationId":"","name":"Local dev","key":"dXNfYWtfM0kzaGZndmVaQllyQzdjVOOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhV","refs":["Shiny@dev"],"read":true,"publish":true,"initiator":"google-oauth2|101953650269257914934"}',
'2023-04-26 16:30:00.001100 +02:00', 'domain.Organization');
insert into events (name, aggregate_id, aggregate_sequence_no, payload, tstamp, aggregate_name)
values ('domain.APIKeyAdded', 'd46ffcb0-19e8-4769-8697-590326ef7b51', 5,
'{"id":"d46ffcb0-19e8-4769-8697-590326ef7b51","time":"2023-04-27T07:43:26.599544+02:00","organizationId":"","name":"Acctest","key":"dXNfYWtfdlVqMzdBMXVraklmaGtKSOOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhV","refs":["Shiny@test"],"read":true,"publish":true,"initiator":"google-oauth2|101953650269257914934"}',
'2023-04-27 07:43:26.599544 +02:00', 'domain.Organization');
-- Update events since json-tags were added
UPDATE events e
SET payload = jsonb_build_object(
'id', payload::jsonb ->> 'id',
'time', payload::jsonb ->> 'time',
'ref', payload::jsonb ->> 'Ref',
'sdl', payload::jsonb ->> 'Sdl',
'url', payload::jsonb ->> 'Url',
'wsUrl', payload::jsonb ->> 'WSUrl',
'service', payload::jsonb ->> 'Service',
'initiator', 'CI'
)
WHERE e.name = 'domain.SubGraphUpdated';
-- Add organization id to all existing subgraphs
update events e
set payload = jsonb_set(payload::jsonb, '{organizationId}', '"d46ffcb0-19e8-4769-8697-590326ef7b51"', true)
where e.name = 'domain.SubGraphUpdated';
DELETE
from snapshots;
-- +goose Down
+15
View File
@@ -1,7 +1,10 @@
package store
import (
"embed"
"github.com/jmoiron/sqlx"
"github.com/pressly/goose/v3"
)
func SetupDB(driverName, url string) (*sqlx.DB, error) {
@@ -25,3 +28,15 @@ func SetupDB(driverName, url string) (*sqlx.DB, error) {
//
// return goose.Up(db.DB, "migrations")
//}
//go:embed event_store_migrations/*.sql
var embedEventStoreMigrations embed.FS
func RunEventStoreMigrations(db *sqlx.DB) error {
goose.SetTableName("goose_db_version_event")
goose.SetBaseFS(embedEventStoreMigrations)
if err := goose.SetDialect("postgres"); err != nil {
return err
}
return goose.Up(db.DB, "event_store_migrations")
}