52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
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
|
|
}
|