Files
dev-service/pkg/datastore/gormstore/default.go
itzaname fecfc520a8
Some checks failed
continuous-integration/drone/push Build is failing
Update package path
2025-06-22 12:43:19 -04:00

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
}