package models import "time" // NavLink represents a custom navigation link in the header. type NavLink struct { ID uint `gorm:"primarykey" json:"id"` TitleZh string `gorm:"size:100;not null" json:"title_zh"` // Link text (Chinese) TitleEn string `gorm:"size:100;not null" json:"title_en"` // Link text (English) URL string `gorm:"size:512;not null" json:"url"` // Target URL OpenNew bool `gorm:"default:false" json:"open_new"` // Open in new window Enabled bool `gorm:"default:true" json:"enabled"` // Show/hide link Sort int `gorm:"default:0;index" json:"sort"` // Display order (lower = first) CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` UpdatedBy uint `gorm:"index" json:"updated_by"` } // TableName overrides the default GORM table name. func (NavLink) TableName() string { return "nav_links" } // Title returns the link text for the given language code, falling back to // the other language when the requested one is empty. func (n *NavLink) Title(lang string) string { if lang == "zh" { if n.TitleZh != "" { return n.TitleZh } return n.TitleEn } if n.TitleEn != "" { return n.TitleEn } return n.TitleZh }