mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-12 00:27:31 +00:00
feat(database): support for postgres (#3998)
* beginning with postgres statements * try pgx * use pgx * database * init works for postgres * arrays working * init for cockroach * init * start tests * tests * TESTS * ch * ch * chore: use go 1.18 * read stmts * fix typo * tests * connection string * add missing error handler * cleanup * start all apis * go mod tidy * old update * switch back to minute * on conflict * replace string slice with `database.StringArray` in db models * fix tests and start * update go version in dockerfile * setup go * clean up * remove notification migration * update * docs: add deploy guide for postgres * fix: revert sonyflake * use `database.StringArray` for daos * use `database.StringArray` every where * new tables * index naming, metadata primary key, project grant role key type * docs(postgres): change to beta * chore: correct compose * fix(defaults): add empty postgres config * refactor: remove unused code * docs: add postgres to self hosted * fix broken link * so? * change title * add mdx to link * fix stmt * update goreleaser in test-code * docs: improve postgres example * update more projections * fix: add beta log for postgres * revert index name change * prerelease * fix: add sequence to v1 "reduce paniced" * log if nil * add logging * fix: log output * fix(import): check if org exists and user * refactor: imports * fix(user): ignore malformed events * refactor: method naming * fix: test * refactor: correct errors.Is call * ci: don't build dev binaries on main * fix(go releaser): update version to 1.11.0 * fix(user): projection should not break * fix(user): handle error properly * docs: correct config example * Update .releaserc.js * Update .releaserc.js Co-authored-by: Livio Amstutz <livio.a@gmail.com> Co-authored-by: Elio Bischof <eliobischof@gmail.com>
This commit is contained in:
@@ -8,8 +8,7 @@ import (
|
||||
"regexp"
|
||||
"testing"
|
||||
|
||||
"github.com/lib/pq"
|
||||
|
||||
"github.com/zitadel/zitadel/internal/database"
|
||||
"github.com/zitadel/zitadel/internal/domain"
|
||||
errs "github.com/zitadel/zitadel/internal/errors"
|
||||
)
|
||||
@@ -30,23 +29,23 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
prepare: prepareProjectGrantsQuery,
|
||||
want: want{
|
||||
sqlExpectations: mockQueries(
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants.project_id,`+
|
||||
` projections.project_grants.grant_id,`+
|
||||
` projections.project_grants.creation_date,`+
|
||||
` projections.project_grants.change_date,`+
|
||||
` projections.project_grants.resource_owner,`+
|
||||
` projections.project_grants.state,`+
|
||||
` projections.project_grants.sequence,`+
|
||||
` projections.projects.name,`+
|
||||
` projections.project_grants.granted_org_id,`+
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants2.project_id,`+
|
||||
` projections.project_grants2.grant_id,`+
|
||||
` projections.project_grants2.creation_date,`+
|
||||
` projections.project_grants2.change_date,`+
|
||||
` projections.project_grants2.resource_owner,`+
|
||||
` projections.project_grants2.state,`+
|
||||
` projections.project_grants2.sequence,`+
|
||||
` projections.projects2.name,`+
|
||||
` projections.project_grants2.granted_org_id,`+
|
||||
` o.name,`+
|
||||
` projections.project_grants.granted_role_keys,`+
|
||||
` projections.project_grants2.granted_role_keys,`+
|
||||
` r.name,`+
|
||||
` COUNT(*) OVER () `+
|
||||
` FROM projections.project_grants `+
|
||||
` LEFT JOIN projections.projects ON projections.project_grants.project_id = projections.projects.id `+
|
||||
` LEFT JOIN projections.orgs as r ON projections.project_grants.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs as o ON projections.project_grants.granted_org_id = o.id`),
|
||||
` FROM projections.project_grants2 `+
|
||||
` LEFT JOIN projections.projects2 ON projections.project_grants2.project_id = projections.projects2.id `+
|
||||
` LEFT JOIN projections.orgs AS r ON projections.project_grants2.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs AS o ON projections.project_grants2.granted_org_id = o.id`),
|
||||
nil,
|
||||
nil,
|
||||
),
|
||||
@@ -58,23 +57,23 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
prepare: prepareProjectGrantsQuery,
|
||||
want: want{
|
||||
sqlExpectations: mockQueries(
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants.project_id,`+
|
||||
` projections.project_grants.grant_id,`+
|
||||
` projections.project_grants.creation_date,`+
|
||||
` projections.project_grants.change_date,`+
|
||||
` projections.project_grants.resource_owner,`+
|
||||
` projections.project_grants.state,`+
|
||||
` projections.project_grants.sequence,`+
|
||||
` projections.projects.name,`+
|
||||
` projections.project_grants.granted_org_id,`+
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants2.project_id,`+
|
||||
` projections.project_grants2.grant_id,`+
|
||||
` projections.project_grants2.creation_date,`+
|
||||
` projections.project_grants2.change_date,`+
|
||||
` projections.project_grants2.resource_owner,`+
|
||||
` projections.project_grants2.state,`+
|
||||
` projections.project_grants2.sequence,`+
|
||||
` projections.projects2.name,`+
|
||||
` projections.project_grants2.granted_org_id,`+
|
||||
` o.name,`+
|
||||
` projections.project_grants.granted_role_keys,`+
|
||||
` projections.project_grants2.granted_role_keys,`+
|
||||
` r.name,`+
|
||||
` COUNT(*) OVER ()`+
|
||||
` FROM projections.project_grants`+
|
||||
` LEFT JOIN projections.projects ON projections.project_grants.project_id = projections.projects.id`+
|
||||
` LEFT JOIN projections.orgs as r ON projections.project_grants.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs as o ON projections.project_grants.granted_org_id = o.id`),
|
||||
` FROM projections.project_grants2`+
|
||||
` LEFT JOIN projections.projects2 ON projections.project_grants2.project_id = projections.projects2.id`+
|
||||
` LEFT JOIN projections.orgs AS r ON projections.project_grants2.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs AS o ON projections.project_grants2.granted_org_id = o.id`),
|
||||
[]string{
|
||||
"project_id",
|
||||
"grant_id",
|
||||
@@ -102,7 +101,7 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
"project-name",
|
||||
"org-id",
|
||||
"org-name",
|
||||
pq.StringArray{"role-key"},
|
||||
database.StringArray{"role-key"},
|
||||
"ro-name",
|
||||
},
|
||||
},
|
||||
@@ -124,7 +123,7 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
ProjectName: "project-name",
|
||||
GrantedOrgID: "org-id",
|
||||
OrgName: "org-name",
|
||||
GrantedRoleKeys: pq.StringArray{"role-key"},
|
||||
GrantedRoleKeys: database.StringArray{"role-key"},
|
||||
ResourceOwnerName: "ro-name",
|
||||
},
|
||||
},
|
||||
@@ -135,23 +134,23 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
prepare: prepareProjectGrantsQuery,
|
||||
want: want{
|
||||
sqlExpectations: mockQueries(
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants.project_id,`+
|
||||
` projections.project_grants.grant_id,`+
|
||||
` projections.project_grants.creation_date,`+
|
||||
` projections.project_grants.change_date,`+
|
||||
` projections.project_grants.resource_owner,`+
|
||||
` projections.project_grants.state,`+
|
||||
` projections.project_grants.sequence,`+
|
||||
` projections.projects.name,`+
|
||||
` projections.project_grants.granted_org_id,`+
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants2.project_id,`+
|
||||
` projections.project_grants2.grant_id,`+
|
||||
` projections.project_grants2.creation_date,`+
|
||||
` projections.project_grants2.change_date,`+
|
||||
` projections.project_grants2.resource_owner,`+
|
||||
` projections.project_grants2.state,`+
|
||||
` projections.project_grants2.sequence,`+
|
||||
` projections.projects2.name,`+
|
||||
` projections.project_grants2.granted_org_id,`+
|
||||
` o.name,`+
|
||||
` projections.project_grants.granted_role_keys,`+
|
||||
` projections.project_grants2.granted_role_keys,`+
|
||||
` r.name,`+
|
||||
` COUNT(*) OVER () `+
|
||||
` FROM projections.project_grants `+
|
||||
` LEFT JOIN projections.projects ON projections.project_grants.project_id = projections.projects.id `+
|
||||
` LEFT JOIN projections.orgs as r ON projections.project_grants.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs as o ON projections.project_grants.granted_org_id = o.id`),
|
||||
` FROM projections.project_grants2 `+
|
||||
` LEFT JOIN projections.projects2 ON projections.project_grants2.project_id = projections.projects2.id `+
|
||||
` LEFT JOIN projections.orgs AS r ON projections.project_grants2.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs AS o ON projections.project_grants2.granted_org_id = o.id`),
|
||||
[]string{
|
||||
"project_id",
|
||||
"grant_id",
|
||||
@@ -179,7 +178,7 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
nil,
|
||||
"org-id",
|
||||
"org-name",
|
||||
pq.StringArray{"role-key"},
|
||||
database.StringArray{"role-key"},
|
||||
"ro-name",
|
||||
},
|
||||
},
|
||||
@@ -201,7 +200,7 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
ProjectName: "",
|
||||
GrantedOrgID: "org-id",
|
||||
OrgName: "org-name",
|
||||
GrantedRoleKeys: pq.StringArray{"role-key"},
|
||||
GrantedRoleKeys: database.StringArray{"role-key"},
|
||||
ResourceOwnerName: "ro-name",
|
||||
},
|
||||
},
|
||||
@@ -212,23 +211,23 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
prepare: prepareProjectGrantsQuery,
|
||||
want: want{
|
||||
sqlExpectations: mockQueries(
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants.project_id,`+
|
||||
` projections.project_grants.grant_id,`+
|
||||
` projections.project_grants.creation_date,`+
|
||||
` projections.project_grants.change_date,`+
|
||||
` projections.project_grants.resource_owner,`+
|
||||
` projections.project_grants.state,`+
|
||||
` projections.project_grants.sequence,`+
|
||||
` projections.projects.name,`+
|
||||
` projections.project_grants.granted_org_id,`+
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants2.project_id,`+
|
||||
` projections.project_grants2.grant_id,`+
|
||||
` projections.project_grants2.creation_date,`+
|
||||
` projections.project_grants2.change_date,`+
|
||||
` projections.project_grants2.resource_owner,`+
|
||||
` projections.project_grants2.state,`+
|
||||
` projections.project_grants2.sequence,`+
|
||||
` projections.projects2.name,`+
|
||||
` projections.project_grants2.granted_org_id,`+
|
||||
` o.name,`+
|
||||
` projections.project_grants.granted_role_keys,`+
|
||||
` projections.project_grants2.granted_role_keys,`+
|
||||
` r.name,`+
|
||||
` COUNT(*) OVER () `+
|
||||
` FROM projections.project_grants `+
|
||||
` LEFT JOIN projections.projects ON projections.project_grants.project_id = projections.projects.id `+
|
||||
` LEFT JOIN projections.orgs as r ON projections.project_grants.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs as o ON projections.project_grants.granted_org_id = o.id`),
|
||||
` FROM projections.project_grants2 `+
|
||||
` LEFT JOIN projections.projects2 ON projections.project_grants2.project_id = projections.projects2.id `+
|
||||
` LEFT JOIN projections.orgs AS r ON projections.project_grants2.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs AS o ON projections.project_grants2.granted_org_id = o.id`),
|
||||
[]string{
|
||||
"project_id",
|
||||
"grant_id",
|
||||
@@ -256,7 +255,7 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
"project-name",
|
||||
"org-id",
|
||||
nil,
|
||||
pq.StringArray{"role-key"},
|
||||
database.StringArray{"role-key"},
|
||||
"ro-name",
|
||||
},
|
||||
},
|
||||
@@ -278,7 +277,7 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
ProjectName: "project-name",
|
||||
GrantedOrgID: "org-id",
|
||||
OrgName: "",
|
||||
GrantedRoleKeys: pq.StringArray{"role-key"},
|
||||
GrantedRoleKeys: database.StringArray{"role-key"},
|
||||
ResourceOwnerName: "ro-name",
|
||||
},
|
||||
},
|
||||
@@ -289,23 +288,23 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
prepare: prepareProjectGrantsQuery,
|
||||
want: want{
|
||||
sqlExpectations: mockQueries(
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants.project_id,`+
|
||||
` projections.project_grants.grant_id,`+
|
||||
` projections.project_grants.creation_date,`+
|
||||
` projections.project_grants.change_date,`+
|
||||
` projections.project_grants.resource_owner,`+
|
||||
` projections.project_grants.state,`+
|
||||
` projections.project_grants.sequence,`+
|
||||
` projections.projects.name,`+
|
||||
` projections.project_grants.granted_org_id,`+
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants2.project_id,`+
|
||||
` projections.project_grants2.grant_id,`+
|
||||
` projections.project_grants2.creation_date,`+
|
||||
` projections.project_grants2.change_date,`+
|
||||
` projections.project_grants2.resource_owner,`+
|
||||
` projections.project_grants2.state,`+
|
||||
` projections.project_grants2.sequence,`+
|
||||
` projections.projects2.name,`+
|
||||
` projections.project_grants2.granted_org_id,`+
|
||||
` o.name,`+
|
||||
` projections.project_grants.granted_role_keys,`+
|
||||
` projections.project_grants2.granted_role_keys,`+
|
||||
` r.name,`+
|
||||
` COUNT(*) OVER () `+
|
||||
` FROM projections.project_grants `+
|
||||
` LEFT JOIN projections.projects ON projections.project_grants.project_id = projections.projects.id `+
|
||||
` LEFT JOIN projections.orgs as r ON projections.project_grants.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs as o ON projections.project_grants.granted_org_id = o.id`),
|
||||
` FROM projections.project_grants2 `+
|
||||
` LEFT JOIN projections.projects2 ON projections.project_grants2.project_id = projections.projects2.id `+
|
||||
` LEFT JOIN projections.orgs AS r ON projections.project_grants2.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs AS o ON projections.project_grants2.granted_org_id = o.id`),
|
||||
[]string{
|
||||
"project_id",
|
||||
"grant_id",
|
||||
@@ -333,7 +332,7 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
"project-name",
|
||||
"org-id",
|
||||
"org-name",
|
||||
pq.StringArray{"role-key"},
|
||||
database.StringArray{"role-key"},
|
||||
nil,
|
||||
},
|
||||
},
|
||||
@@ -355,7 +354,7 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
ProjectName: "project-name",
|
||||
GrantedOrgID: "org-id",
|
||||
OrgName: "org-name",
|
||||
GrantedRoleKeys: pq.StringArray{"role-key"},
|
||||
GrantedRoleKeys: database.StringArray{"role-key"},
|
||||
ResourceOwnerName: "",
|
||||
},
|
||||
},
|
||||
@@ -366,23 +365,23 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
prepare: prepareProjectGrantsQuery,
|
||||
want: want{
|
||||
sqlExpectations: mockQueries(
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants.project_id,`+
|
||||
` projections.project_grants.grant_id,`+
|
||||
` projections.project_grants.creation_date,`+
|
||||
` projections.project_grants.change_date,`+
|
||||
` projections.project_grants.resource_owner,`+
|
||||
` projections.project_grants.state,`+
|
||||
` projections.project_grants.sequence,`+
|
||||
` projections.projects.name,`+
|
||||
` projections.project_grants.granted_org_id,`+
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants2.project_id,`+
|
||||
` projections.project_grants2.grant_id,`+
|
||||
` projections.project_grants2.creation_date,`+
|
||||
` projections.project_grants2.change_date,`+
|
||||
` projections.project_grants2.resource_owner,`+
|
||||
` projections.project_grants2.state,`+
|
||||
` projections.project_grants2.sequence,`+
|
||||
` projections.projects2.name,`+
|
||||
` projections.project_grants2.granted_org_id,`+
|
||||
` o.name,`+
|
||||
` projections.project_grants.granted_role_keys,`+
|
||||
` projections.project_grants2.granted_role_keys,`+
|
||||
` r.name,`+
|
||||
` COUNT(*) OVER () `+
|
||||
` FROM projections.project_grants `+
|
||||
` LEFT JOIN projections.projects ON projections.project_grants.project_id = projections.projects.id `+
|
||||
` LEFT JOIN projections.orgs as r ON projections.project_grants.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs as o ON projections.project_grants.granted_org_id = o.id`),
|
||||
` FROM projections.project_grants2 `+
|
||||
` LEFT JOIN projections.projects2 ON projections.project_grants2.project_id = projections.projects2.id `+
|
||||
` LEFT JOIN projections.orgs AS r ON projections.project_grants2.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs AS o ON projections.project_grants2.granted_org_id = o.id`),
|
||||
[]string{
|
||||
"project_id",
|
||||
"grant_id",
|
||||
@@ -410,7 +409,7 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
"project-name",
|
||||
"org-id",
|
||||
"org-name",
|
||||
pq.StringArray{"role-key"},
|
||||
database.StringArray{"role-key"},
|
||||
"ro-name",
|
||||
},
|
||||
{
|
||||
@@ -424,7 +423,7 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
"project-name",
|
||||
"org-id",
|
||||
"org-name",
|
||||
pq.StringArray{"role-key"},
|
||||
database.StringArray{"role-key"},
|
||||
"ro-name",
|
||||
},
|
||||
},
|
||||
@@ -446,7 +445,7 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
ProjectName: "project-name",
|
||||
GrantedOrgID: "org-id",
|
||||
OrgName: "org-name",
|
||||
GrantedRoleKeys: pq.StringArray{"role-key"},
|
||||
GrantedRoleKeys: database.StringArray{"role-key"},
|
||||
ResourceOwnerName: "ro-name",
|
||||
},
|
||||
{
|
||||
@@ -460,7 +459,7 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
ProjectName: "project-name",
|
||||
GrantedOrgID: "org-id",
|
||||
OrgName: "org-name",
|
||||
GrantedRoleKeys: pq.StringArray{"role-key"},
|
||||
GrantedRoleKeys: database.StringArray{"role-key"},
|
||||
ResourceOwnerName: "ro-name",
|
||||
},
|
||||
},
|
||||
@@ -471,23 +470,23 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
prepare: prepareProjectGrantsQuery,
|
||||
want: want{
|
||||
sqlExpectations: mockQueryErr(
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants.project_id,`+
|
||||
` projections.project_grants.grant_id,`+
|
||||
` projections.project_grants.creation_date,`+
|
||||
` projections.project_grants.change_date,`+
|
||||
` projections.project_grants.resource_owner,`+
|
||||
` projections.project_grants.state,`+
|
||||
` projections.project_grants.sequence,`+
|
||||
` projections.projects.name,`+
|
||||
` projections.project_grants.granted_org_id,`+
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants2.project_id,`+
|
||||
` projections.project_grants2.grant_id,`+
|
||||
` projections.project_grants2.creation_date,`+
|
||||
` projections.project_grants2.change_date,`+
|
||||
` projections.project_grants2.resource_owner,`+
|
||||
` projections.project_grants2.state,`+
|
||||
` projections.project_grants2.sequence,`+
|
||||
` projections.projects2.name,`+
|
||||
` projections.project_grants2.granted_org_id,`+
|
||||
` o.name,`+
|
||||
` projections.project_grants.granted_role_keys,`+
|
||||
` projections.project_grants2.granted_role_keys,`+
|
||||
` r.name,`+
|
||||
` COUNT(*) OVER () `+
|
||||
` FROM projections.project_grants `+
|
||||
` LEFT JOIN projections.projects ON projections.project_grants.project_id = projections.projects.id `+
|
||||
` LEFT JOIN projections.orgs as r ON projections.project_grants.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs as o ON projections.project_grants.granted_org_id = o.id`),
|
||||
` FROM projections.project_grants2 `+
|
||||
` LEFT JOIN projections.projects2 ON projections.project_grants2.project_id = projections.projects2.id `+
|
||||
` LEFT JOIN projections.orgs AS r ON projections.project_grants2.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs AS o ON projections.project_grants2.granted_org_id = o.id`),
|
||||
sql.ErrConnDone,
|
||||
),
|
||||
err: func(err error) (error, bool) {
|
||||
@@ -504,22 +503,22 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
prepare: prepareProjectGrantQuery,
|
||||
want: want{
|
||||
sqlExpectations: mockQueries(
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants.project_id,`+
|
||||
` projections.project_grants.grant_id,`+
|
||||
` projections.project_grants.creation_date,`+
|
||||
` projections.project_grants.change_date,`+
|
||||
` projections.project_grants.resource_owner,`+
|
||||
` projections.project_grants.state,`+
|
||||
` projections.project_grants.sequence,`+
|
||||
` projections.projects.name,`+
|
||||
` projections.project_grants.granted_org_id,`+
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants2.project_id,`+
|
||||
` projections.project_grants2.grant_id,`+
|
||||
` projections.project_grants2.creation_date,`+
|
||||
` projections.project_grants2.change_date,`+
|
||||
` projections.project_grants2.resource_owner,`+
|
||||
` projections.project_grants2.state,`+
|
||||
` projections.project_grants2.sequence,`+
|
||||
` projections.projects2.name,`+
|
||||
` projections.project_grants2.granted_org_id,`+
|
||||
` o.name,`+
|
||||
` projections.project_grants.granted_role_keys,`+
|
||||
` projections.project_grants2.granted_role_keys,`+
|
||||
` r.name`+
|
||||
` FROM projections.project_grants `+
|
||||
` LEFT JOIN projections.projects ON projections.project_grants.project_id = projections.projects.id `+
|
||||
` LEFT JOIN projections.orgs as r ON projections.project_grants.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs as o ON projections.project_grants.granted_org_id = o.id`),
|
||||
` FROM projections.project_grants2 `+
|
||||
` LEFT JOIN projections.projects2 ON projections.project_grants2.project_id = projections.projects2.id `+
|
||||
` LEFT JOIN projections.orgs AS r ON projections.project_grants2.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs AS o ON projections.project_grants2.granted_org_id = o.id`),
|
||||
nil,
|
||||
nil,
|
||||
),
|
||||
@@ -537,22 +536,22 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
prepare: prepareProjectGrantQuery,
|
||||
want: want{
|
||||
sqlExpectations: mockQuery(
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants.project_id,`+
|
||||
` projections.project_grants.grant_id,`+
|
||||
` projections.project_grants.creation_date,`+
|
||||
` projections.project_grants.change_date,`+
|
||||
` projections.project_grants.resource_owner,`+
|
||||
` projections.project_grants.state,`+
|
||||
` projections.project_grants.sequence,`+
|
||||
` projections.projects.name,`+
|
||||
` projections.project_grants.granted_org_id,`+
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants2.project_id,`+
|
||||
` projections.project_grants2.grant_id,`+
|
||||
` projections.project_grants2.creation_date,`+
|
||||
` projections.project_grants2.change_date,`+
|
||||
` projections.project_grants2.resource_owner,`+
|
||||
` projections.project_grants2.state,`+
|
||||
` projections.project_grants2.sequence,`+
|
||||
` projections.projects2.name,`+
|
||||
` projections.project_grants2.granted_org_id,`+
|
||||
` o.name,`+
|
||||
` projections.project_grants.granted_role_keys,`+
|
||||
` projections.project_grants2.granted_role_keys,`+
|
||||
` r.name`+
|
||||
` FROM projections.project_grants `+
|
||||
` LEFT JOIN projections.projects ON projections.project_grants.project_id = projections.projects.id `+
|
||||
` LEFT JOIN projections.orgs as r ON projections.project_grants.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs as o ON projections.project_grants.granted_org_id = o.id`),
|
||||
` FROM projections.project_grants2 `+
|
||||
` LEFT JOIN projections.projects2 ON projections.project_grants2.project_id = projections.projects2.id `+
|
||||
` LEFT JOIN projections.orgs AS r ON projections.project_grants2.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs AS o ON projections.project_grants2.granted_org_id = o.id`),
|
||||
[]string{
|
||||
"project_id",
|
||||
"grant_id",
|
||||
@@ -578,7 +577,7 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
"project-name",
|
||||
"org-id",
|
||||
"org-name",
|
||||
pq.StringArray{"role-key"},
|
||||
database.StringArray{"role-key"},
|
||||
"ro-name",
|
||||
},
|
||||
),
|
||||
@@ -594,7 +593,7 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
ProjectName: "project-name",
|
||||
GrantedOrgID: "org-id",
|
||||
OrgName: "org-name",
|
||||
GrantedRoleKeys: pq.StringArray{"role-key"},
|
||||
GrantedRoleKeys: database.StringArray{"role-key"},
|
||||
ResourceOwnerName: "ro-name",
|
||||
},
|
||||
},
|
||||
@@ -603,22 +602,22 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
prepare: prepareProjectGrantQuery,
|
||||
want: want{
|
||||
sqlExpectations: mockQuery(
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants.project_id,`+
|
||||
` projections.project_grants.grant_id,`+
|
||||
` projections.project_grants.creation_date,`+
|
||||
` projections.project_grants.change_date,`+
|
||||
` projections.project_grants.resource_owner,`+
|
||||
` projections.project_grants.state,`+
|
||||
` projections.project_grants.sequence,`+
|
||||
` projections.projects.name,`+
|
||||
` projections.project_grants.granted_org_id,`+
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants2.project_id,`+
|
||||
` projections.project_grants2.grant_id,`+
|
||||
` projections.project_grants2.creation_date,`+
|
||||
` projections.project_grants2.change_date,`+
|
||||
` projections.project_grants2.resource_owner,`+
|
||||
` projections.project_grants2.state,`+
|
||||
` projections.project_grants2.sequence,`+
|
||||
` projections.projects2.name,`+
|
||||
` projections.project_grants2.granted_org_id,`+
|
||||
` o.name,`+
|
||||
` projections.project_grants.granted_role_keys,`+
|
||||
` projections.project_grants2.granted_role_keys,`+
|
||||
` r.name`+
|
||||
` FROM projections.project_grants `+
|
||||
` LEFT JOIN projections.projects ON projections.project_grants.project_id = projections.projects.id `+
|
||||
` LEFT JOIN projections.orgs as r ON projections.project_grants.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs as o ON projections.project_grants.granted_org_id = o.id`),
|
||||
` FROM projections.project_grants2 `+
|
||||
` LEFT JOIN projections.projects2 ON projections.project_grants2.project_id = projections.projects2.id `+
|
||||
` LEFT JOIN projections.orgs AS r ON projections.project_grants2.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs AS o ON projections.project_grants2.granted_org_id = o.id`),
|
||||
[]string{
|
||||
"project_id",
|
||||
"grant_id",
|
||||
@@ -644,7 +643,7 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
"project-name",
|
||||
"org-id",
|
||||
nil,
|
||||
pq.StringArray{"role-key"},
|
||||
database.StringArray{"role-key"},
|
||||
"ro-name",
|
||||
},
|
||||
),
|
||||
@@ -660,7 +659,7 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
ProjectName: "project-name",
|
||||
GrantedOrgID: "org-id",
|
||||
OrgName: "",
|
||||
GrantedRoleKeys: pq.StringArray{"role-key"},
|
||||
GrantedRoleKeys: database.StringArray{"role-key"},
|
||||
ResourceOwnerName: "ro-name",
|
||||
},
|
||||
},
|
||||
@@ -669,22 +668,22 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
prepare: prepareProjectGrantQuery,
|
||||
want: want{
|
||||
sqlExpectations: mockQuery(
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants.project_id,`+
|
||||
` projections.project_grants.grant_id,`+
|
||||
` projections.project_grants.creation_date,`+
|
||||
` projections.project_grants.change_date,`+
|
||||
` projections.project_grants.resource_owner,`+
|
||||
` projections.project_grants.state,`+
|
||||
` projections.project_grants.sequence,`+
|
||||
` projections.projects.name,`+
|
||||
` projections.project_grants.granted_org_id,`+
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants2.project_id,`+
|
||||
` projections.project_grants2.grant_id,`+
|
||||
` projections.project_grants2.creation_date,`+
|
||||
` projections.project_grants2.change_date,`+
|
||||
` projections.project_grants2.resource_owner,`+
|
||||
` projections.project_grants2.state,`+
|
||||
` projections.project_grants2.sequence,`+
|
||||
` projections.projects2.name,`+
|
||||
` projections.project_grants2.granted_org_id,`+
|
||||
` o.name,`+
|
||||
` projections.project_grants.granted_role_keys,`+
|
||||
` projections.project_grants2.granted_role_keys,`+
|
||||
` r.name`+
|
||||
` FROM projections.project_grants `+
|
||||
` LEFT JOIN projections.projects ON projections.project_grants.project_id = projections.projects.id `+
|
||||
` LEFT JOIN projections.orgs as r ON projections.project_grants.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs as o ON projections.project_grants.granted_org_id = o.id`),
|
||||
` FROM projections.project_grants2 `+
|
||||
` LEFT JOIN projections.projects2 ON projections.project_grants2.project_id = projections.projects2.id `+
|
||||
` LEFT JOIN projections.orgs AS r ON projections.project_grants2.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs AS o ON projections.project_grants2.granted_org_id = o.id`),
|
||||
[]string{
|
||||
"project_id",
|
||||
"grant_id",
|
||||
@@ -710,7 +709,7 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
"project-name",
|
||||
"org-id",
|
||||
"org-name",
|
||||
pq.StringArray{"role-key"},
|
||||
database.StringArray{"role-key"},
|
||||
nil,
|
||||
},
|
||||
),
|
||||
@@ -726,7 +725,7 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
ProjectName: "project-name",
|
||||
GrantedOrgID: "org-id",
|
||||
OrgName: "org-name",
|
||||
GrantedRoleKeys: pq.StringArray{"role-key"},
|
||||
GrantedRoleKeys: database.StringArray{"role-key"},
|
||||
ResourceOwnerName: "",
|
||||
},
|
||||
},
|
||||
@@ -735,22 +734,22 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
prepare: prepareProjectGrantQuery,
|
||||
want: want{
|
||||
sqlExpectations: mockQuery(
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants.project_id,`+
|
||||
` projections.project_grants.grant_id,`+
|
||||
` projections.project_grants.creation_date,`+
|
||||
` projections.project_grants.change_date,`+
|
||||
` projections.project_grants.resource_owner,`+
|
||||
` projections.project_grants.state,`+
|
||||
` projections.project_grants.sequence,`+
|
||||
` projections.projects.name,`+
|
||||
` projections.project_grants.granted_org_id,`+
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants2.project_id,`+
|
||||
` projections.project_grants2.grant_id,`+
|
||||
` projections.project_grants2.creation_date,`+
|
||||
` projections.project_grants2.change_date,`+
|
||||
` projections.project_grants2.resource_owner,`+
|
||||
` projections.project_grants2.state,`+
|
||||
` projections.project_grants2.sequence,`+
|
||||
` projections.projects2.name,`+
|
||||
` projections.project_grants2.granted_org_id,`+
|
||||
` o.name,`+
|
||||
` projections.project_grants.granted_role_keys,`+
|
||||
` projections.project_grants2.granted_role_keys,`+
|
||||
` r.name`+
|
||||
` FROM projections.project_grants `+
|
||||
` LEFT JOIN projections.projects ON projections.project_grants.project_id = projections.projects.id `+
|
||||
` LEFT JOIN projections.orgs as r ON projections.project_grants.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs as o ON projections.project_grants.granted_org_id = o.id`),
|
||||
` FROM projections.project_grants2 `+
|
||||
` LEFT JOIN projections.projects2 ON projections.project_grants2.project_id = projections.projects2.id `+
|
||||
` LEFT JOIN projections.orgs AS r ON projections.project_grants2.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs AS o ON projections.project_grants2.granted_org_id = o.id`),
|
||||
[]string{
|
||||
"project_id",
|
||||
"grant_id",
|
||||
@@ -776,7 +775,7 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
nil,
|
||||
"org-id",
|
||||
"org-name",
|
||||
pq.StringArray{"role-key"},
|
||||
database.StringArray{"role-key"},
|
||||
"ro-name",
|
||||
},
|
||||
),
|
||||
@@ -792,7 +791,7 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
ProjectName: "",
|
||||
GrantedOrgID: "org-id",
|
||||
OrgName: "org-name",
|
||||
GrantedRoleKeys: pq.StringArray{"role-key"},
|
||||
GrantedRoleKeys: database.StringArray{"role-key"},
|
||||
ResourceOwnerName: "ro-name",
|
||||
},
|
||||
},
|
||||
@@ -801,22 +800,22 @@ func Test_ProjectGrantPrepares(t *testing.T) {
|
||||
prepare: prepareProjectGrantQuery,
|
||||
want: want{
|
||||
sqlExpectations: mockQueryErr(
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants.project_id,`+
|
||||
` projections.project_grants.grant_id,`+
|
||||
` projections.project_grants.creation_date,`+
|
||||
` projections.project_grants.change_date,`+
|
||||
` projections.project_grants.resource_owner,`+
|
||||
` projections.project_grants.state,`+
|
||||
` projections.project_grants.sequence,`+
|
||||
` projections.projects.name,`+
|
||||
` projections.project_grants.granted_org_id,`+
|
||||
regexp.QuoteMeta(` SELECT projections.project_grants2.project_id,`+
|
||||
` projections.project_grants2.grant_id,`+
|
||||
` projections.project_grants2.creation_date,`+
|
||||
` projections.project_grants2.change_date,`+
|
||||
` projections.project_grants2.resource_owner,`+
|
||||
` projections.project_grants2.state,`+
|
||||
` projections.project_grants2.sequence,`+
|
||||
` projections.projects2.name,`+
|
||||
` projections.project_grants2.granted_org_id,`+
|
||||
` o.name,`+
|
||||
` projections.project_grants.granted_role_keys,`+
|
||||
` projections.project_grants2.granted_role_keys,`+
|
||||
` r.name`+
|
||||
` FROM projections.project_grants `+
|
||||
` LEFT JOIN projections.projects ON projections.project_grants.project_id = projections.projects.id `+
|
||||
` LEFT JOIN projections.orgs as r ON projections.project_grants.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs as o ON projections.project_grants.granted_org_id = o.id`),
|
||||
` FROM projections.project_grants2 `+
|
||||
` LEFT JOIN projections.projects2 ON projections.project_grants2.project_id = projections.projects2.id `+
|
||||
` LEFT JOIN projections.orgs AS r ON projections.project_grants2.resource_owner = r.id`+
|
||||
` LEFT JOIN projections.orgs AS o ON projections.project_grants2.granted_org_id = o.id`),
|
||||
sql.ErrConnDone,
|
||||
),
|
||||
err: func(err error) (error, bool) {
|
||||
|
Reference in New Issue
Block a user