package bootstrap import ( "baron-sso-backend/internal/domain" "fmt" "log/slog" "gorm.io/gorm" ) // Run executes the application bootstrap logic (migrations, seeding, etc.) func Run(db *gorm.DB) error { slog.Info("[Bootstrap] Starting application bootstrap...") // 1. Auto Migration if err := migrateSchemas(db); err != nil { return fmt.Errorf("migration failed: %w", err) } // 2. Seed Tenants if err := SeedTenants(db); err != nil { return fmt.Errorf("tenant seeding failed: %w", err) } slog.Info("[Bootstrap] User seed skipped (Kratos is SoT)") slog.Info("[Bootstrap] Bootstrap completed successfully.") return nil } func migrateSchemas(db *gorm.DB) error { slog.Info("[Bootstrap] Migrating database schemas...") // Add all domain models here return db.AutoMigrate( &domain.Tenant{}, &domain.TenantDomain{}, &domain.User{}, &domain.UserGroup{}, &domain.ApiKey{}, &domain.IdentityProviderConfig{}, &domain.ClientSecret{}, &domain.ClientConsent{}, // &domain.RelyingParty{}, // Removed: SSOT is Hydra + Keto ) }