diff --git a/api/go.mod b/api/go.mod index 617e9ceb4..52dcda189 100644 --- a/api/go.mod +++ b/api/go.mod @@ -22,7 +22,6 @@ require ( github.com/gorilla/mux v1.8.0 github.com/gorilla/schema v1.1.0 github.com/heptiolabs/healthcheck v0.0.0-20180807145615-6ff867650f40 - github.com/jinzhu/gorm v1.9.12 github.com/kelseyhightower/envconfig v1.4.0 github.com/mitchellh/copystructure v1.0.0 github.com/mitchellh/mapstructure v1.4.3 @@ -30,13 +29,15 @@ require ( github.com/patrickmn/go-cache v2.1.0+incompatible github.com/pkg/errors v0.9.1 github.com/rs/cors v1.7.0 - github.com/stretchr/testify v1.7.0 + github.com/stretchr/testify v1.8.0 github.com/tidwall/gjson v1.6.5 github.com/xanzy/go-gitlab v0.31.0 go.uber.org/zap v1.19.1 golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a gopkg.in/yaml.v2 v2.4.0 - gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b + gopkg.in/yaml.v3 v3.0.1 + gorm.io/driver/postgres v1.4.4 + gorm.io/gorm v1.24.0 gotest.tools v2.2.0+incompatible gotest.tools/v3 v3.0.3 istio.io/api v0.0.0-20220304035241-8c47cbbea144 @@ -106,7 +107,16 @@ require ( github.com/hashicorp/vault/sdk v0.1.13 // indirect github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d // indirect github.com/imdario/mergo v0.3.12 // indirect + github.com/jackc/chunkreader/v2 v2.0.1 // indirect + github.com/jackc/pgconn v1.13.0 // indirect + github.com/jackc/pgio v1.0.0 // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgproto3/v2 v2.3.1 // indirect + github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect + github.com/jackc/pgtype v1.12.0 // indirect + github.com/jackc/pgx/v4 v4.17.2 // indirect github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/leodido/go-urn v1.2.1 // indirect @@ -141,7 +151,7 @@ require ( github.com/spf13/cast v1.4.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/objx v0.3.0 // indirect + github.com/stretchr/objx v0.4.0 // indirect github.com/subosito/gotenv v1.2.0 // indirect github.com/tidwall/match v1.0.3 // indirect github.com/tidwall/pretty v1.0.2 // indirect @@ -151,14 +161,13 @@ require ( go.mongodb.org/mongo-driver v1.1.2 // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.6.0 // indirect - golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3 // indirect + golang.org/x/crypto v0.0.0-20221010152910-d6f0a8c073c2 // indirect golang.org/x/net v0.0.0-20220722155237-a158d28d115b // indirect golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirect golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f // indirect golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect - golang.org/x/text v0.3.7 // indirect + golang.org/x/text v0.3.8 // indirect golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect - golang.org/x/tools v0.1.12 // indirect gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350 // indirect diff --git a/api/go.sum b/api/go.sum index 19f726b3f..4372011f4 100644 --- a/api/go.sum +++ b/api/go.sum @@ -132,7 +132,10 @@ github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8L github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc= +github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= @@ -301,6 +304,7 @@ github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/cockroachdb/cockroach-go v0.0.0-20190925194419-606b3d062051/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= @@ -444,8 +448,6 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE= github.com/denis-tingajkin/go-header v0.4.2/go.mod h1:eLRHAVXzE5atsKAnNRDB90WHCFFnBUn4RN0nRcs1LJA= github.com/denisenkom/go-mssqldb v0.0.0-20190515213511-eb9f6a1743f3/go.mod h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM= -github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd h1:83Wprp6ROGeiHFAP8WJdI2RoxALQYgdllERc3N5N2DM= -github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= github.com/dgraph-io/ristretto v0.0.1 h1:cJwdnj42uV8Jg4+KLrYovLiCgIfz9wtWm6E6KA+1tLs= github.com/dgraph-io/ristretto v0.0.1/go.mod h1:T40EBc7CJke8TkpiYfGGKAeFjSaxuFXhuXRyumBd6RE= @@ -513,7 +515,6 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.0.14/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 h1:Yzb9+7DPaBjB8zlTR87/ElzFsnQfuHnVUVqpZZIcV5Y= github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= github.com/esimonov/ifshort v1.0.3/go.mod h1:yZqNJUrNn20K8Q9n2CrjTKYyVEmX209Hgu+M1LBpeZE= github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY= @@ -681,7 +682,6 @@ github.com/go-redis/redis v6.15.8+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8w github.com/go-sql-driver/mysql v0.0.0-20180308100310-1a676ac6e4dc/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -709,6 +709,7 @@ github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6 github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw= github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= @@ -734,8 +735,6 @@ github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3 h1: github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3/go.mod h1:nPpo7qLxd6XL3hWJG/O60sR8ZKfMCiIoNap5GvD12KU= github.com/golang-migrate/migrate/v4 v4.11.0 h1:uqtd0ysK5WyBQ/T1K2uDIooJV0o2Obt6uPwP062DupQ= github.com/golang-migrate/migrate/v4 v4.11.0/go.mod h1:nqbpDbckcYjsCD5I8q5+NI9Tkk7SVcmaF40Ax1eAWhg= -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/geo v0.0.0-20210211234256-740aa86cb551/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -1036,13 +1035,24 @@ github.com/ishidawataru/sctp v0.0.0-20190723014705-7c296d48a2b5/go.mod h1:DM4VvS github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA= github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE= github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s= github.com/jackc/pgconn v1.3.2/go.mod h1:LvCquS3HbBKwgl7KbX9KyqEIumJAbm1UMcTvGaIf3bM= +github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= +github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY= +github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= +github.com/jackc/pgconn v1.13.0 h1:3L1XMNV2Zvca/8BYhzcRFS70Lr0WlDg16Di6SFGAbys= +github.com/jackc/pgconn v1.13.0/go.mod h1:AnowpAqO4CMIIJNZl2VJp+KrkAZciAkhEl0W0JIobpI= +github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= +github.com/jackc/pgmock v0.0.0-20201204152224-4fe30f7445fd/go.mod h1:hrBW0Enj2AZTNpt/7Y5rr2xe/9Mn757Wtb2xeBzPv2c= +github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65 h1:DadwsjnMwFjfWc9y5Wi/+Zz7xoE5ALHsRQlOctkOiHc= +github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= @@ -1050,14 +1060,28 @@ github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= github.com/jackc/pgproto3/v2 v2.0.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.3.1 h1:nwj7qwf0S+Q7ISFfBndqeLwSwxs+4DPsbRFjECT1Y4Y= +github.com/jackc/pgproto3/v2 v2.3.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg= +github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= +github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM= +github.com/jackc/pgtype v1.12.0 h1:Dlq8Qvcch7kiehm8wPGIW0W3KsCCHJnRacKW0UM8n5w= +github.com/jackc/pgtype v1.12.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= +github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs= +github.com/jackc/pgx/v4 v4.17.2 h1:0Ut0rpeKwvIVbMQ1KbMBU4h6wxehBI535LK6Flheh8E= +github.com/jackc/pgx/v4 v4.17.2/go.mod h1:lcxIZN44yMIrWI78a5CpucdD14hX0SBDbNRvjDBItsw= github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.3.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jgautheron/goconst v1.5.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74= @@ -1066,12 +1090,12 @@ github.com/jhump/protoreflect v1.6.1/go.mod h1:RZQ/lnuN+zqeRVpQigTwO6o0AJUkxbnSn github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a/go.mod h1:yL958EeXv8Ylng6IfnvG4oflryUi3vgA3xPs9hmII1s= github.com/jinzhu/gorm v1.9.11/go.mod h1:bu/pK8szGZ2puuErfU0RwyeNdsf3e6nCX/noXaVxkfw= -github.com/jinzhu/gorm v1.9.12 h1:Drgk1clyWT9t9ERbzHza6Mj/8FY/CqMyVzOiHviMo6Q= -github.com/jinzhu/gorm v1.9.12/go.mod h1:vhTjlKSJUTWNtcbQtrMBFCxy7eXTzeCAzfL5fBZT/Qs= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= -github.com/jinzhu/now v1.0.1 h1:HjfetcXq097iXP0uoPCdnM4Efp5/9MsM0/M+XOTeR3M= github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -1155,6 +1179,7 @@ github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.9.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.10.3 h1:v9QZf2Sn6AmjXtQeFpdoq/eaNtYP6IN+7lcrygsIAtg= github.com/lib/pq v1.10.3/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libopenstorage/openstorage v1.0.0/go.mod h1:Sp1sIObHjat1BeXhfMqLZ14wnOzEhNx2YQedreMcUyc= @@ -1216,8 +1241,6 @@ github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vq github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/mattn/go-sqlite3 v2.0.1+incompatible h1:xQ15muvnzGBHpIpdrNi1DA5x0+TcBZzsIDwmw9uTHzw= -github.com/mattn/go-sqlite3 v2.0.1+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= @@ -1536,6 +1559,8 @@ github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAx github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644/go.mod h1:nkxAfR/5quYxwPZhyDxgasBMnRtBZd0FCEpawpjMUFg= github.com/shirou/gopsutil/v3 v3.21.10/go.mod h1:t75NhzCZ/dYyPQjyQmrAYP6c8+LCdFANeBMdLPCNnew= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= +github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= +github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= @@ -1605,8 +1630,9 @@ github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+ 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.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/objx v0.3.0 h1:NGXK3lHquSN08v5vWalVI/L8XU9hdzE/G6xsrze47As= github.com/stretchr/objx v0.3.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= +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 v0.0.0-20170130113145-4d4bfba8f1d1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -1617,8 +1643,10 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= 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.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/sylvia7788/contextcheck v1.0.4/go.mod h1:vuPKJMQ7MQ91ZTqfdyreNKwZjyUg6KO+IebVyQDedZQ= @@ -1814,7 +1842,6 @@ golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200204104054-c9f3fb736b72/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -1822,14 +1849,19 @@ golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= +golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3 h1:0es+/5331RGQPcXlMfP+WrnIIS6dNnNRe0WB02W0F4M= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20221010152910-d6f0a8c073c2 h1:x8vtB3zMecnlqZIwJNUUpwYKYSqCz5jXbiyv0ZJJZeI= +golang.org/x/crypto v0.0.0-20221010152910-d6f0a8c073c2/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -2130,8 +2162,9 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/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.3.8 h1:nAL+RVCQ9uMn3vJZbV+MRnydTJFPf8qqY42YiA6MrqY= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2195,6 +2228,7 @@ golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117065230-39095c1d176c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -2262,7 +2296,6 @@ golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= 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-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2529,8 +2562,14 @@ 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-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/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= +gorm.io/driver/postgres v1.4.4 h1:zt1fxJ+C+ajparn0SteEnkoPg0BQ6wOWXEQ99bteAmw= +gorm.io/driver/postgres v1.4.4/go.mod h1:whNfh5WhhHs96honoLjBAMwJGYEuA3m1hvgUbNXhPCw= +gorm.io/gorm v1.23.7/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= +gorm.io/gorm v1.24.0 h1:j/CoiSm6xpRpmzbFJsQHYj+I8bGYWLXVHeYEyyKlF74= +gorm.io/gorm v1.24.0/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= diff --git a/api/turing/api/appcontext.go b/api/turing/api/appcontext.go index a16a7c352..8351983b8 100644 --- a/api/turing/api/appcontext.go +++ b/api/turing/api/appcontext.go @@ -13,7 +13,7 @@ import ( "github.com/caraml-dev/turing/api/turing/service" "github.com/caraml-dev/turing/engines/router/missionctl/errors" "github.com/gojek/mlp/api/pkg/vault" - "github.com/jinzhu/gorm" + "gorm.io/gorm" ) // AppContext stores the entities relating to the application's context diff --git a/api/turing/api/appcontext_test.go b/api/turing/api/appcontext_test.go index b6aa2c131..1ca90f2ad 100644 --- a/api/turing/api/appcontext_test.go +++ b/api/turing/api/appcontext_test.go @@ -17,9 +17,9 @@ import ( merlin "github.com/gojek/merlin/client" "github.com/gojek/mlp/api/pkg/instrumentation/sentry" "github.com/gojek/mlp/api/pkg/vault" - "github.com/jinzhu/gorm" "github.com/stretchr/testify/assert" "github.com/xanzy/go-gitlab" + "gorm.io/gorm" "k8s.io/apimachinery/pkg/api/resource" ) diff --git a/api/turing/database/database.go b/api/turing/database/database.go index fb20ac715..76ea742e9 100644 --- a/api/turing/database/database.go +++ b/api/turing/database/database.go @@ -5,14 +5,13 @@ import ( "github.com/caraml-dev/turing/api/turing/config" "github.com/golang-migrate/migrate/v4" - "github.com/jinzhu/gorm" + pg "gorm.io/driver/postgres" + "gorm.io/gorm" + "gorm.io/gorm/logger" // required for gomigrate _ "github.com/golang-migrate/migrate/v4/database/postgres" _ "github.com/golang-migrate/migrate/v4/source/file" - - // enable postgres dialect - _ "github.com/jinzhu/gorm/dialects/postgres" ) // InitDB initialises a database connection as well as runs the migration scripts. @@ -26,15 +25,16 @@ func InitDB(cfg *config.DatabaseConfig) (*gorm.DB, error) { // Init db db, err := gorm.Open( - "postgres", - connectionString(cfg), + pg.Open(connectionString(cfg)), + &gorm.Config{ + Logger: logger.Default.LogMode(logger.Silent), + }, ) if err != nil { return nil, fmt.Errorf("Failed to start Gorm DB: %s", err) } - db.LogMode(false) return db, nil } diff --git a/api/turing/database/integration_database.go b/api/turing/database/integration_database.go index f2b0a9079..2e9dcb941 100644 --- a/api/turing/database/integration_database.go +++ b/api/turing/database/integration_database.go @@ -10,7 +10,9 @@ import ( "github.com/caraml-dev/turing/api/turing/config" "github.com/caraml-dev/turing/api/turing/log" - "github.com/jinzhu/gorm" + pg "gorm.io/driver/postgres" + "gorm.io/gorm" + "gorm.io/gorm/logger" ) func create(testDBCfg *config.DatabaseConfig) (*sql.DB, *sql.DB, error) { @@ -57,7 +59,12 @@ func createTestDatabase() (*gorm.DB, func(), error) { if err = migrateDB(testDBCfg); err != nil { cleanup() return nil, nil, err - } else if gormDb, err := gorm.Open("postgres", testDb); err != nil { + } else if gormDb, err := gorm.Open( + pg.New(pg.Config{Conn: testDb}), + &gorm.Config{ + Logger: logger.Default.LogMode(logger.Silent), + }, + ); err != nil { cleanup() return nil, nil, err } else { diff --git a/api/turing/models/ensembling_job.go b/api/turing/models/ensembling_job.go index 889a376d7..b016dbf4e 100644 --- a/api/turing/models/ensembling_job.go +++ b/api/turing/models/ensembling_job.go @@ -6,8 +6,8 @@ import ( "fmt" openapi "github.com/caraml-dev/turing/api/turing/generated" - "github.com/jinzhu/gorm" "github.com/pkg/errors" + "gorm.io/gorm" ) // EnsemblingJob holds the information required for an ensembling job to be done asynchronously diff --git a/api/turing/models/pyfunc_ensembler.go b/api/turing/models/pyfunc_ensembler.go index 988ed6e9c..149a60081 100644 --- a/api/turing/models/pyfunc_ensembler.go +++ b/api/turing/models/pyfunc_ensembler.go @@ -4,7 +4,7 @@ import ( "fmt" "time" - "github.com/jinzhu/gorm" + "gorm.io/gorm" ) type EnsemblerLike interface { @@ -89,8 +89,9 @@ type PyFuncEnsembler struct { PythonVersion string `json:"python_version" gorm:"column:python_version"` } -func (*PyFuncEnsembler) BeforeCreate(scope *gorm.Scope) error { - return scope.SetColumn("type", EnsemblerPyFuncType) +func (e *PyFuncEnsembler) BeforeCreate(*gorm.DB) error { + e.Type = EnsemblerPyFuncType + return nil } func (*PyFuncEnsembler) GetType() EnsemblerType { diff --git a/api/turing/models/router_version.go b/api/turing/models/router_version.go index cf6d6a0bd..f3b57e2c9 100644 --- a/api/turing/models/router_version.go +++ b/api/turing/models/router_version.go @@ -3,7 +3,7 @@ package models import ( "database/sql" - "github.com/jinzhu/gorm" + "gorm.io/gorm" ) type RouterVersionStatus string diff --git a/api/turing/server/application.go b/api/turing/server/application.go index f6376bc91..76e4dd624 100644 --- a/api/turing/server/application.go +++ b/api/turing/server/application.go @@ -61,7 +61,11 @@ func Run() { if err != nil { panic(err) } - defer db.Close() + sqlDB, err := db.DB() + if err != nil { + panic(err) + } + defer sqlDB.Close() // Initialise NewRelic if err := newrelic.InitNewRelic(cfg.NewRelicConfig); err != nil { @@ -115,7 +119,7 @@ func Run() { r := mux.NewRouter() // HealthCheck Handler - AddHealthCheckHandler(r, "/v1/internal", db) + AddHealthCheckHandler(r, "/v1/internal", sqlDB) // Write to a file so that Swagger UI can use it err = cfg.OpenapiConfig.GenerateSpecFile() diff --git a/api/turing/server/healthcheck.go b/api/turing/server/healthcheck.go index 5490f11af..9b3dfcade 100644 --- a/api/turing/server/healthcheck.go +++ b/api/turing/server/healthcheck.go @@ -1,20 +1,20 @@ package server import ( + "database/sql" "time" "github.com/gorilla/mux" "github.com/heptiolabs/healthcheck" - "github.com/jinzhu/gorm" ) -func AddHealthCheckHandler(r *mux.Router, path string, db *gorm.DB) { +func AddHealthCheckHandler(r *mux.Router, path string, db *sql.DB) { sub := r.PathPrefix(path).Subrouter() health := healthcheck.NewHandler() health.AddReadinessCheck( "database", - healthcheck.DatabasePingCheck(db.DB(), 1*time.Second)) + healthcheck.DatabasePingCheck(db, 1*time.Second)) sub.Path("/live").HandlerFunc(health.LiveEndpoint) sub.Path("/ready").HandlerFunc(health.ReadyEndpoint) diff --git a/api/turing/service/alert_service.go b/api/turing/service/alert_service.go index 49d4c2d00..55289c7b1 100644 --- a/api/turing/service/alert_service.go +++ b/api/turing/service/alert_service.go @@ -14,9 +14,9 @@ import ( "github.com/caraml-dev/turing/api/turing/log" "github.com/caraml-dev/turing/api/turing/models" - "github.com/jinzhu/gorm" "github.com/xanzy/go-gitlab" "gopkg.in/yaml.v2" + "gorm.io/gorm" ) type Metric string diff --git a/api/turing/service/alert_service_test.go b/api/turing/service/alert_service_test.go index 8fd4a45a7..0af639827 100644 --- a/api/turing/service/alert_service_test.go +++ b/api/turing/service/alert_service_test.go @@ -1,6 +1,7 @@ package service import ( + "database/sql" "errors" "fmt" "io" @@ -17,7 +18,9 @@ import ( "github.com/DATA-DOG/go-sqlmock" "github.com/caraml-dev/turing/api/turing/models" - "github.com/jinzhu/gorm" + pg "gorm.io/driver/postgres" + "gorm.io/gorm" + "gorm.io/gorm/logger" "gotest.tools/assert" ) @@ -63,8 +66,8 @@ func TestGitlabOpsAlertServiceSave(t *testing.T) { mockGitlab, requestRecords := newMockGitlabServer() defer mockGitlab.Close() - mockDb, mockSQL := newMockSQL(t) - defer mockDb.Close() + mockDb, mockSQLDb, mockSQL := newMockSQL(t) + defer mockSQLDb.Close() mockSQL.ExpectBegin() mockSQL. @@ -133,8 +136,8 @@ func TestGitlabOpsAlertServiceSaveShouldRevertGitWhenDbFail(t *testing.T) { mockGitlab, requestRecords := newMockGitlabServer() defer mockGitlab.Close() - mockDb, mockSQL := newMockSQL(t) - defer mockDb.Close() + mockDb, mockSQLDb, mockSQL := newMockSQL(t) + defer mockSQLDb.Close() mockSQL.ExpectBegin() mockSQL. @@ -173,8 +176,8 @@ func TestGitlabOpsAlertServiceSaveShouldRevertGitWhenDbFail(t *testing.T) { } func TestGitlabOpsAlertServiceList(t *testing.T) { - mockDb, mockSQL := newMockSQL(t) - defer mockDb.Close() + mockDb, mockSQLDb, mockSQL := newMockSQL(t) + defer mockSQLDb.Close() columns := []string{"environment", "team", "service", "metric", "duration"} mockSQL. @@ -214,8 +217,8 @@ func TestGitlabOpsAlertServiceList(t *testing.T) { } func TestGitlabOpsAlertServiceFindByID(t *testing.T) { - mockDb, mockSQL := newMockSQL(t) - defer mockDb.Close() + mockDb, mockSQLDb, mockSQL := newMockSQL(t) + defer mockSQLDb.Close() columns := []string{"environment", "team", "service", "metric", "duration"} mockSQL. @@ -254,8 +257,8 @@ func TestGitlabOpsAlertServiceFindByID(t *testing.T) { } func TestGitlabOpsAlertServiceFindByIDShouldReturnErrWhenNotFound(t *testing.T) { - mockDb, mockSQL := newMockSQL(t) - defer mockDb.Close() + mockDb, mockSQLDb, mockSQL := newMockSQL(t) + defer mockSQLDb.Close() mockSQL. ExpectQuery(`SELECT (.+) FROM "alerts"`). @@ -284,8 +287,8 @@ func TestGitlabOpsAlertServiceUpdate(t *testing.T) { mockGitlab, requestRecords := newMockGitlabServer() defer mockGitlab.Close() - mockDb, mockSQL := newMockSQL(t) - defer mockDb.Close() + mockDb, mockSQLDb, mockSQL := newMockSQL(t) + defer mockSQLDb.Close() mockSQL. ExpectQuery(`SELECT (.+) FROM "alerts"`). @@ -294,7 +297,8 @@ func TestGitlabOpsAlertServiceUpdate(t *testing.T) { mockSQL.ExpectBegin() mockSQL. ExpectExec(`UPDATE "alerts"`). - WithArgs(sqlmock.AnyArg(), "env", "team", "service", "throughput", float64(50), float64(25), "5m", 1). + WithArgs(sqlmock.AnyArg(), sqlmock.AnyArg(), + "env", "team", "service", "throughput", float64(50), float64(25), "5m", 1). WillReturnResult(sqlmock.NewResult(1, 1)) mockSQL.ExpectCommit() @@ -350,8 +354,8 @@ func TestGitlabOpsAlertServiceUpdateShouldRevertGitWhenDbFail(t *testing.T) { mockGitlab, requestRecords := newMockGitlabServer() defer mockGitlab.Close() - mockDb, mockSQL := newMockSQL(t) - defer mockDb.Close() + mockDb, mockSQLDb, mockSQL := newMockSQL(t) + defer mockSQLDb.Close() mockSQL. ExpectQuery(`SELECT (.+) FROM "alerts"`). @@ -408,8 +412,8 @@ func TestGitlabOpsAlertSeviceDelete(t *testing.T) { mockGitlab, requestRecords := newMockGitlabServer() defer mockGitlab.Close() - mockDb, mockSQL := newMockSQL(t) - defer mockDb.Close() + mockDb, mockSQLDb, mockSQL := newMockSQL(t) + defer mockSQLDb.Close() mockSQL. ExpectQuery(`SELECT (.+) FROM "alerts"`). @@ -463,8 +467,8 @@ func TestGitlabOpsAlertSeviceDeleteShouldRevertGitWhenDbFail(t *testing.T) { mockGitlab, requestRecords := newMockGitlabServer() defer mockGitlab.Close() - mockDb, mockSQL := newMockSQL(t) - defer mockDb.Close() + mockDb, mockSQLDb, mockSQL := newMockSQL(t) + defer mockSQLDb.Close() mockSQL. ExpectQuery(`SELECT (.+) FROM "alerts"`). @@ -535,16 +539,21 @@ func newMockGitlabServer() (mockGitlab *httptest.Server, requestRecords map[stri return server, records } -func newMockSQL(t *testing.T) (*gorm.DB, sqlmock.Sqlmock) { - mockdb, mocksql, err := sqlmock.New() +func newMockSQL(t *testing.T) (*gorm.DB, *sql.DB, sqlmock.Sqlmock) { + mockDB, mocksql, err := sqlmock.New() if err != nil { t.Fatalf("failed to open stub database connection: %s", err) } - gormDb, err := gorm.Open("postgres", mockdb) + gormDB, err := gorm.Open( + pg.New(pg.Config{Conn: mockDB}), + &gorm.Config{ + Logger: logger.Default.LogMode(logger.Silent), + }, + ) if err != nil { t.Fatalf("failed to open go-orm database connection: %s", err) } - return gormDb, mocksql + return gormDB, mockDB, mocksql } func TestGitlabOpsAlertServiceGetDashboardURL(t *testing.T) { diff --git a/api/turing/service/ensembler_service.go b/api/turing/service/ensembler_service.go index 2737c23e8..10e57c7f4 100644 --- a/api/turing/service/ensembler_service.go +++ b/api/turing/service/ensembler_service.go @@ -4,7 +4,7 @@ import ( "fmt" "github.com/caraml-dev/turing/api/turing/models" - "github.com/jinzhu/gorm" + "gorm.io/gorm" ) // EnsemblersService is the data access object for the Ensemblers from the db. @@ -63,8 +63,7 @@ func (service *ensemblersService) FindByID( func (service *ensemblersService) List(options EnsemblersListOptions) (*PaginatedResults, error) { var results []*models.GenericEnsembler - var count int - done := make(chan bool, 1) + var count int64 query := service.db if options.ProjectID != nil { @@ -79,21 +78,16 @@ func (service *ensemblersService) List(options EnsemblersListOptions) (*Paginate query = query.Where("type = ?", options.EnsemblerType) } - go func() { - query.Model(&results).Count(&count) - done <- true - }() - + query.Model(&results).Count(&count) result := query. Scopes(PaginationScope(options.PaginationOptions)). Find(&results) - <-done if err := result.Error; err != nil { return nil, err } - paginatedResults := createPaginatedResults(options.PaginationOptions, count, results) + paginatedResults := createPaginatedResults(options.PaginationOptions, int(count), results) return paginatedResults, nil } diff --git a/api/turing/service/ensembler_service_test.go b/api/turing/service/ensembler_service_test.go index f919972dd..7834f146f 100644 --- a/api/turing/service/ensembler_service_test.go +++ b/api/turing/service/ensembler_service_test.go @@ -11,9 +11,9 @@ import ( "github.com/caraml-dev/turing/api/turing/database" "github.com/caraml-dev/turing/api/turing/internal/ref" "github.com/caraml-dev/turing/api/turing/models" - "github.com/jinzhu/gorm" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "gorm.io/gorm" ) func assertEqualEnsembler( diff --git a/api/turing/service/ensembling_job_service.go b/api/turing/service/ensembling_job_service.go index 25914852e..16db3d749 100644 --- a/api/turing/service/ensembling_job_service.go +++ b/api/turing/service/ensembling_job_service.go @@ -15,7 +15,7 @@ import ( logger "github.com/caraml-dev/turing/api/turing/log" "github.com/caraml-dev/turing/api/turing/models" mlp "github.com/gojek/mlp/api/client" - "github.com/jinzhu/gorm" + "gorm.io/gorm" ) const ( @@ -167,8 +167,7 @@ func (s *ensemblingJobService) FindByID( func (s *ensemblingJobService) List(options EnsemblingJobListOptions) (*PaginatedResults, error) { var results []*models.EnsemblingJob - var count int - done := make(chan bool, 1) + var count int64 query := s.db if options.ProjectID != nil { @@ -195,15 +194,10 @@ func (s *ensemblingJobService) List(options EnsemblingJobListOptions) (*Paginate query = query.Where("updated_at < ?", options.UpdatedAtBefore) } - go func() { - query.Model(&results).Count(&count) - done <- true - }() - + query.Model(&results).Count(&count) result := query. Scopes(PaginationScope(options.PaginationOptions)). Find(&results) - <-done if err := result.Error; err != nil { return nil, err @@ -222,7 +216,7 @@ func (s *ensemblingJobService) List(options EnsemblingJobListOptions) (*Paginate r.MonitoringURL = url } - paginatedResults := createPaginatedResults(options.PaginationOptions, count, results) + paginatedResults := createPaginatedResults(options.PaginationOptions, int(count), results) return paginatedResults, nil } diff --git a/api/turing/service/ensembling_job_service_test.go b/api/turing/service/ensembling_job_service_test.go index 85911b18f..efa29c4c2 100644 --- a/api/turing/service/ensembling_job_service_test.go +++ b/api/turing/service/ensembling_job_service_test.go @@ -17,9 +17,9 @@ import ( "github.com/caraml-dev/turing/api/turing/internal/ref" "github.com/caraml-dev/turing/api/turing/models" mlp "github.com/gojek/mlp/api/client" - "github.com/jinzhu/gorm" "github.com/stretchr/testify/assert" mock "github.com/stretchr/testify/mock" + "gorm.io/gorm" ) const ( diff --git a/api/turing/service/event_service.go b/api/turing/service/event_service.go index a9ef1ef07..eeea82eda 100644 --- a/api/turing/service/event_service.go +++ b/api/turing/service/event_service.go @@ -2,7 +2,7 @@ package service import ( "github.com/caraml-dev/turing/api/turing/models" - "github.com/jinzhu/gorm" + "gorm.io/gorm" ) type EventService interface { diff --git a/api/turing/service/event_service_test.go b/api/turing/service/event_service_test.go index 7fdf82702..260bab649 100644 --- a/api/turing/service/event_service_test.go +++ b/api/turing/service/event_service_test.go @@ -7,8 +7,8 @@ import ( "github.com/caraml-dev/turing/api/turing/database" "github.com/caraml-dev/turing/api/turing/models" - "github.com/jinzhu/gorm" "github.com/stretchr/testify/assert" + "gorm.io/gorm" ) func TestEventServiceIntegration(t *testing.T) { diff --git a/api/turing/service/pagination.go b/api/turing/service/pagination.go index deac23cdf..b6d017662 100644 --- a/api/turing/service/pagination.go +++ b/api/turing/service/pagination.go @@ -3,7 +3,7 @@ package service import ( "math" - "github.com/jinzhu/gorm" + "gorm.io/gorm" ) type PaginationOptions struct { diff --git a/api/turing/service/router_service.go b/api/turing/service/router_service.go index dea53784c..f78f8ba5e 100644 --- a/api/turing/service/router_service.go +++ b/api/turing/service/router_service.go @@ -8,7 +8,8 @@ import ( "github.com/caraml-dev/turing/api/turing/log" "github.com/caraml-dev/turing/api/turing/models" - "github.com/jinzhu/gorm" + "gorm.io/gorm" + "gorm.io/gorm/clause" ) // RoutersService is the data access object for the Routers from the db. @@ -90,13 +91,9 @@ func (service *routersService) ListRouters(projectID models.ID, environmentName } func (service *routersService) Save(router *models.Router) (*models.Router, error) { - var err error - if service.db.NewRecord(router) { - err = service.db.Create(router).Error - } else { - err = service.db.Save(router).Error - } - if err != nil { + if err := service.db.Clauses(clause.OnConflict{ + UpdateAll: true, + }).Create(router).Error; err != nil { return nil, err } return service.FindByID(router.ID) diff --git a/api/turing/service/router_service_test.go b/api/turing/service/router_service_test.go index ae40fedf4..7f41c0401 100644 --- a/api/turing/service/router_service_test.go +++ b/api/turing/service/router_service_test.go @@ -13,9 +13,9 @@ import ( "github.com/caraml-dev/turing/api/turing/models" merlin "github.com/gojek/merlin/client" mlp "github.com/gojek/mlp/api/client" - "github.com/jinzhu/gorm" "github.com/stretchr/testify/assert" mock "github.com/stretchr/testify/mock" + "gorm.io/gorm" ) func TestRoutersServiceIntegration(t *testing.T) { @@ -156,14 +156,14 @@ func TestRoutersServiceIntegration(t *testing.T) { found, err = svc.FindByID(router.ID) assert.Error(t, err) assert.Nil(t, found) - count := -1 + var count int64 = -1 db.Model(&models.RouterVersion{}).Count(&count) - assert.Equal(t, 0, count) + assert.Equal(t, int64(0), count) count = -1 db.Model(&models.Ensembler{}).Count(&count) - assert.Equal(t, 0, count) + assert.Equal(t, int64(0), count) count = -1 db.Model(&models.Enricher{}).Count(&count) - assert.Equal(t, 0, count) + assert.Equal(t, int64(0), count) }) } diff --git a/api/turing/service/router_version_service.go b/api/turing/service/router_version_service.go index d76d56247..d07934f5c 100644 --- a/api/turing/service/router_version_service.go +++ b/api/turing/service/router_version_service.go @@ -7,7 +7,7 @@ import ( logger "github.com/caraml-dev/turing/api/turing/log" "github.com/caraml-dev/turing/api/turing/models" - "github.com/jinzhu/gorm" + "gorm.io/gorm" ) const ( @@ -113,7 +113,10 @@ func (service *routerVersionsService) ListRouterVersionsWithStatus( func (service *routerVersionsService) Save(routerVersion *models.RouterVersion) (*models.RouterVersion, error) { var err error tx := service.db.Begin() - if service.db.NewRecord(routerVersion) { + // For create vs update, there is no default gorm API. Upsert will not help for + // foreign key associations (enricher / ensembler). So, we naively compare ID==0, + // which indicates that the router version hasn't yet been created. + if routerVersion.ID == 0 { if routerVersion.Ensembler != nil { if err := tx.Create(routerVersion.Ensembler).Error; err != nil { return nil, err @@ -223,7 +226,7 @@ func (service *routerVersionsService) Delete(routerVersion *models.RouterVersion return errors.New("router version must have valid primary key to be deleted") } - var upstreamRefs int + var upstreamRefs int64 service.db.Table("routers"). Where("routers.curr_router_version_id = ?", routerVersion.ID). Count(&upstreamRefs) diff --git a/api/turing/service/router_version_service_test.go b/api/turing/service/router_version_service_test.go index b3083e405..7a5c9b694 100644 --- a/api/turing/service/router_version_service_test.go +++ b/api/turing/service/router_version_service_test.go @@ -15,9 +15,9 @@ import ( merlin "github.com/gojek/merlin/client" mlp "github.com/gojek/mlp/api/client" "github.com/google/go-cmp/cmp" - "github.com/jinzhu/gorm" "github.com/stretchr/testify/assert" mock "github.com/stretchr/testify/mock" + "gorm.io/gorm" "k8s.io/apimachinery/pkg/api/resource" ) @@ -213,13 +213,13 @@ func TestRouterVersionsServiceIntegration(t *testing.T) { assert.Error(t, err) assert.Nil(t, found) - count := -1 + var count int64 = -1 db.Model(&models.Ensembler{}).Count(&count) - assert.Equal(t, 0, count) + assert.Equal(t, int64(0), count) // reset count count = -1 db.Model(&models.Enricher{}).Count(&count) - assert.Equal(t, 0, count) + assert.Equal(t, int64(0), count) // create router again without ensembler and enricher routerVersion.EnricherID = sql.NullInt32{}