package models import ( "strings" "time" "gorm.io/gorm" ) type ProductSuite struct { ID uint `gorm:"primaryKey" json:"id"` Code string `gorm:"size:128;not null;uniqueIndex" json:"code"` Name string `gorm:"size:255;not null" json:"name"` ProjectTypeCode string `gorm:"size:64;index" json:"projectTypeCode"` RegionID *uint32 `gorm:"index" json:"regionId"` SoldTargetType string `gorm:"size:64;index" json:"soldTargetType"` SoldTargetName string `gorm:"size:255" json:"soldTargetName"` Notes string `gorm:"size:1024" json:"notes"` CreatedAt int64 `gorm:"not null" json:"created_at"` UpdatedAt int64 `gorm:"not null" json:"updated_at"` } func (ProductSuite) TableName() string { return "product_suites" } func (p *ProductSuite) BeforeCreate(tx *gorm.DB) (err error) { now := time.Now().UnixMilli() p.Code = strings.TrimSpace(p.Code) p.Name = strings.TrimSpace(p.Name) p.ProjectTypeCode = strings.TrimSpace(strings.ToLower(p.ProjectTypeCode)) p.SoldTargetType = strings.TrimSpace(strings.ToLower(p.SoldTargetType)) p.SoldTargetName = strings.TrimSpace(p.SoldTargetName) p.Notes = strings.TrimSpace(p.Notes) p.CreatedAt = now p.UpdatedAt = now return nil } func (p *ProductSuite) BeforeUpdate(tx *gorm.DB) (err error) { p.Code = strings.TrimSpace(p.Code) p.Name = strings.TrimSpace(p.Name) p.ProjectTypeCode = strings.TrimSpace(strings.ToLower(p.ProjectTypeCode)) p.SoldTargetType = strings.TrimSpace(strings.ToLower(p.SoldTargetType)) p.SoldTargetName = strings.TrimSpace(p.SoldTargetName) p.Notes = strings.TrimSpace(p.Notes) p.UpdatedAt = time.Now().UnixMilli() return nil }