Files
QuoteForge/internal/models/models.go
2026-01-26 18:30:45 +03:00

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
}