package models import ( "time" "gorm.io/gorm" ) // BaseModel contains common columns for all tables with ID, CreatedAt, UpdatedAt type BaseModel struct { ID uint `gorm:"primaryKey" json:"id"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } // BeforeCreate sets timestamps before creating a record func (b *BaseModel) BeforeCreate(tx *gorm.DB) error { now := time.Now().UTC() if b.CreatedAt.IsZero() { b.CreatedAt = now } if b.UpdatedAt.IsZero() { b.UpdatedAt = now } return nil } // BeforeUpdate sets updated_at before updating a record func (b *BaseModel) BeforeUpdate(tx *gorm.DB) error { b.UpdatedAt = time.Now().UTC() return nil }