package models import "gorm.io/gorm" // AllModels returns all models for auto-migration func AllModels() []interface{} { return []interface{}{ &User{}, &Category{}, &LotMetadata{}, &Configuration{}, &PriceOverride{}, &PricingAlert{}, &ComponentUsageStats{}, } } // Migrate runs auto-migration for all QuoteForge tables func Migrate(db *gorm.DB) error { return db.AutoMigrate(AllModels()...) } // SeedCategories inserts default categories if not exist func SeedCategories(db *gorm.DB) error { for _, cat := range DefaultCategories { result := db.Where("code = ?", cat.Code).FirstOrCreate(&cat) if result.Error != nil { return result.Error } } return nil } // SeedAdminUser creates default admin user if not exists // Default credentials: admin / admin123 func SeedAdminUser(db *gorm.DB, passwordHash string) error { var count int64 db.Model(&User{}).Where("username = ?", "admin").Count(&count) if count > 0 { return nil } admin := &User{ Username: "admin", Email: "admin@example.com", PasswordHash: passwordHash, Role: RoleAdmin, IsActive: true, } return db.Create(admin).Error }