diff --git a/server/db/providers/arangodb/provider.go b/server/db/providers/arangodb/provider.go index ac8aa4f..a228cf8 100644 --- a/server/db/providers/arangodb/provider.go +++ b/server/db/providers/arangodb/provider.go @@ -134,6 +134,20 @@ func NewProvider() (*provider, error) { Sparse: true, }) + emailTemplateCollectionExists, err := arangodb.CollectionExists(ctx, models.Collections.EmailTemplate) + if !emailTemplateCollectionExists { + _, err = arangodb.CreateCollection(ctx, models.Collections.EmailTemplate, nil) + if err != nil { + return nil, err + } + } + + emailTemplateCollection, _ := arangodb.Collection(nil, models.Collections.EmailTemplate) + emailTemplateCollection.EnsureHashIndex(ctx, []string{"event_name"}, &arangoDriver.EnsureHashIndexOptions{ + Unique: true, + Sparse: true, + }) + return &provider{ db: arangodb, }, err diff --git a/server/db/providers/cassandradb/provider.go b/server/db/providers/cassandradb/provider.go index b47c324..e5a0469 100644 --- a/server/db/providers/cassandradb/provider.go +++ b/server/db/providers/cassandradb/provider.go @@ -204,6 +204,17 @@ func NewProvider() (*provider, error) { return nil, err } + emailTemplateCollectionQuery := fmt.Sprintf("CREATE TABLE IF NOT EXISTS %s.%s (id text, event_name text, template text, updated_at bigint, created_at bigint, PRIMARY KEY (id))", KeySpace, models.Collections.EmailTemplate) + err = session.Query(emailTemplateCollectionQuery).Exec() + if err != nil { + return nil, err + } + emailTemplateIndexQuery := fmt.Sprintf("CREATE INDEX IF NOT EXISTS authorizer_email_template_event_name ON %s.%s (event_name)", KeySpace, models.Collections.EmailTemplate) + err = session.Query(emailTemplateIndexQuery).Exec() + if err != nil { + return nil, err + } + return &provider{ db: session, }, err diff --git a/server/db/providers/mongodb/provider.go b/server/db/providers/mongodb/provider.go index 303ec75..dd79284 100644 --- a/server/db/providers/mongodb/provider.go +++ b/server/db/providers/mongodb/provider.go @@ -101,6 +101,15 @@ func NewProvider() (*provider, error) { }, }, options.CreateIndexes()) + mongodb.CreateCollection(ctx, models.Collections.EmailTemplate, options.CreateCollection()) + emailTemplateCollection := mongodb.Collection(models.Collections.EmailTemplate, options.Collection()) + emailTemplateCollection.Indexes().CreateMany(ctx, []mongo.IndexModel{ + { + Keys: bson.M{"event_name": 1}, + Options: options.Index().SetUnique(true).SetSparse(true), + }, + }, options.CreateIndexes()) + return &provider{ db: mongodb, }, nil diff --git a/server/db/providers/sql/provider.go b/server/db/providers/sql/provider.go index 62e734c..70dc669 100644 --- a/server/db/providers/sql/provider.go +++ b/server/db/providers/sql/provider.go @@ -60,7 +60,7 @@ func NewProvider() (*provider, error) { return nil, err } - err = sqlDB.AutoMigrate(&models.User{}, &models.VerificationRequest{}, &models.Session{}, &models.Env{}, &models.Webhook{}, models.WebhookLog{}) + err = sqlDB.AutoMigrate(&models.User{}, &models.VerificationRequest{}, &models.Session{}, &models.Env{}, &models.Webhook{}, models.WebhookLog{}, models.EmailTemplate{}) if err != nil { return nil, err }