package sub import ( "time" ) // CodeBuySub représente un code de souscription associé à un utilisateur. type CodeBuySub struct { ID string `gorm:"type:uuid;primaryKey" json:"id"` Username string `gorm:"size:64;not null" json:"username"` CodeBuy string `gorm:"uniqueIndex;type:varchar(50);not null" json:"code_verif"` CreatedAt time.Time `gorm:"index;autoCreateTime" json:"created_at"` UpdatedAt time.Time `gorm:"autoUpdateTime" json:"updated_at"` } // TableName définit explicitement le nom de la table. func (CodeBuySub) TableName() string { return "code_buy_subs" } // PremiumUser : client actuellement en abonnement premium, tel qu'affiché // à l'admin sur la page des codes. ActivatedAt (date de saisie du code) // n'est pas stockée telle quelle — le code est supprimé une fois consommé // (voir Store.AddCodeForSub) — mais l'abonnement dure toujours exactement // PremiumDuration, donc on la déduit de ExpiredAt (voir GormStore). type PremiumUser struct { Username string `json:"username"` ActivatedAt time.Time `json:"activated_at"` ExpiredAt time.Time `json:"expired_at"` }