From 94116fa04b476340839c2b9ca3a1e597e05cf733 Mon Sep 17 00:00:00 2001 From: Silvan Date: Tue, 21 Feb 2023 15:46:47 +0100 Subject: [PATCH] fix(storage): add indexes for `auth.tokens` (#5259) * fix(storage): add indexes for `auth.tokens` * refactor: naming --- cmd/setup/08.go | 25 +++++++++++++++++++++++++ cmd/setup/08.sql | 5 +++++ cmd/setup/config.go | 1 + cmd/setup/setup.go | 3 +++ 4 files changed, 34 insertions(+) create mode 100644 cmd/setup/08.go create mode 100644 cmd/setup/08.sql diff --git a/cmd/setup/08.go b/cmd/setup/08.go new file mode 100644 index 0000000000..092c60b27b --- /dev/null +++ b/cmd/setup/08.go @@ -0,0 +1,25 @@ +package setup + +import ( + "context" + "database/sql" + _ "embed" +) + +var ( + //go:embed 08.sql + tokenIndexes08 string +) + +type AuthTokenIndexes struct { + dbClient *sql.DB +} + +func (mig *AuthTokenIndexes) Execute(ctx context.Context) error { + _, err := mig.dbClient.ExecContext(ctx, tokenIndexes08) + return err +} + +func (mig *AuthTokenIndexes) String() string { + return "08_auth_token_indexes" +} diff --git a/cmd/setup/08.sql b/cmd/setup/08.sql new file mode 100644 index 0000000000..aec4d54303 --- /dev/null +++ b/cmd/setup/08.sql @@ -0,0 +1,5 @@ +CREATE INDEX IF NOT EXISTS inst_refresh_tkn_idx ON auth.tokens(instance_id, refresh_token_id); +CREATE INDEX IF NOT EXISTS inst_app_tkn_idx ON auth.tokens(instance_id, application_id); +CREATE INDEX IF NOT EXISTS inst_ro_tkn_idx ON auth.tokens(instance_id, resource_owner); +DROP INDEX IF EXISTS auth.tokens@user_user_agent_idx; +CREATE INDEX IF NOT EXISTS inst_usr_agnt_tkn_idx ON auth.tokens(instance_id, user_id, user_agent_id); \ No newline at end of file diff --git a/cmd/setup/config.go b/cmd/setup/config.go index 289f09b68d..02e014c6a0 100644 --- a/cmd/setup/config.go +++ b/cmd/setup/config.go @@ -63,6 +63,7 @@ type Steps struct { s5LastFailed *LastFailed s6OwnerRemoveColumns *OwnerRemoveColumns s7LogstoreTables *LogstoreTables + s8AuthTokens *AuthTokenIndexes } type encryptionKeyConfig struct { diff --git a/cmd/setup/setup.go b/cmd/setup/setup.go index 444c300010..8bae6b3df3 100644 --- a/cmd/setup/setup.go +++ b/cmd/setup/setup.go @@ -85,6 +85,7 @@ func Setup(config *Config, steps *Steps, masterKey string) { steps.s5LastFailed = &LastFailed{dbClient: dbClient} steps.s6OwnerRemoveColumns = &OwnerRemoveColumns{dbClient: dbClient} steps.s7LogstoreTables = &LogstoreTables{dbClient: dbClient, username: config.Database.Username(), dbType: config.Database.Type()} + steps.s8AuthTokens = &AuthTokenIndexes{dbClient: dbClient} err = projection.Create(ctx, dbClient, eventstoreClient, config.Projections, nil, nil) logging.OnError(err).Fatal("unable to start projections") @@ -116,6 +117,8 @@ func Setup(config *Config, steps *Steps, masterKey string) { logging.OnError(err).Fatal("unable to migrate step 6") err = migration.Migrate(ctx, eventstoreClient, steps.s7LogstoreTables) logging.OnError(err).Fatal("unable to migrate step 7") + err = migration.Migrate(ctx, eventstoreClient, steps.s8AuthTokens) + logging.OnError(err).Fatal("unable to migrate step 8") for _, repeatableStep := range repeatableSteps { err = migration.Migrate(ctx, eventstoreClient, repeatableStep)