85 lines
2.4 KiB
Go
85 lines
2.4 KiB
Go
package gormstore
|
|
|
|
import (
|
|
"context"
|
|
"git.itzana.me/StrafesNET/dev-service/pkg/datastore"
|
|
"git.itzana.me/StrafesNET/dev-service/pkg/model"
|
|
log "github.com/sirupsen/logrus"
|
|
)
|
|
|
|
// EnsureDefaultData checks if default data exists and seeds it if needed
|
|
func (g *Gormstore) EnsureDefaultData(ctx context.Context) error {
|
|
log.Infoln("Checking for default data...")
|
|
|
|
// Ensure default rate limits exist
|
|
if err := g.ensureDefaultRateLimits(ctx); err != nil {
|
|
log.WithError(err).Errorln("Failed to ensure default rate limits")
|
|
return err
|
|
}
|
|
|
|
// Ensure default permissions exist
|
|
if err := g.ensureDefaultPermissions(ctx); err != nil {
|
|
log.WithError(err).Errorln("Failed to ensure default permissions")
|
|
return err
|
|
}
|
|
|
|
log.Infoln("Default data verification completed")
|
|
return nil
|
|
}
|
|
|
|
// ensureDefaultRateLimits checks if default rate limits exist and creates them if not
|
|
func (g *Gormstore) ensureDefaultRateLimits(ctx context.Context) error {
|
|
// Check if any rate limits exist
|
|
var count int64
|
|
if err := g.db.Model(&model.RateLimit{}).Count(&count).Error; err != nil {
|
|
return err
|
|
}
|
|
|
|
// If no rate limits exist, create the defaults
|
|
if count == 0 {
|
|
log.Infoln("No rate limits found, creating defaults...")
|
|
|
|
// Create each rate limit
|
|
for i, rl := range datastore.GetDefaultRateLimitDefinitions() {
|
|
if err := g.db.Create(&rl).Error; err != nil {
|
|
return err
|
|
}
|
|
log.Infof("Created default rate limit plan %d", i+1)
|
|
}
|
|
|
|
log.Infoln("Default rate limits created successfully")
|
|
} else {
|
|
log.Infoln("Rate limits already exist, skipping default creation")
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// ensureDefaultPermissions checks if default permissions exist and creates them if not
|
|
func (g *Gormstore) ensureDefaultPermissions(ctx context.Context) error {
|
|
// Check if any permissions exist
|
|
var count int64
|
|
if err := g.db.Model(&model.Permission{}).Count(&count).Error; err != nil {
|
|
return err
|
|
}
|
|
|
|
// If no permissions exist, create the defaults
|
|
if count == 0 {
|
|
log.Infoln("No permissions found, creating defaults...")
|
|
|
|
// Create each permission
|
|
for i, perm := range datastore.GetDefaultPermissionDefinitions() {
|
|
if err := g.db.Create(&perm).Error; err != nil {
|
|
return err
|
|
}
|
|
log.Infof("Created default permission %d", i+1)
|
|
}
|
|
|
|
log.Infoln("Default permissions created successfully")
|
|
} else {
|
|
log.Infoln("Permissions already exist, skipping default creation")
|
|
}
|
|
|
|
return nil
|
|
}
|