| package schema | |
| import ( | |
| "time" | |
| "entgo.io/ent" | |
| "entgo.io/ent/dialect" | |
| "entgo.io/ent/dialect/entsql" | |
| "entgo.io/ent/schema" | |
| "entgo.io/ent/schema/edge" | |
| "entgo.io/ent/schema/field" | |
| "entgo.io/ent/schema/index" | |
| ) | |
| // PromoCodeUsage holds the schema definition for the PromoCodeUsage entity. | |
| // | |
| // 优惠码使用记录:记录每个用户使用优惠码的情况 | |
| type PromoCodeUsage struct { | |
| ent.Schema | |
| } | |
| func (PromoCodeUsage) Annotations() []schema.Annotation { | |
| return []schema.Annotation{ | |
| entsql.Annotation{Table: "promo_code_usages"}, | |
| } | |
| } | |
| func (PromoCodeUsage) Fields() []ent.Field { | |
| return []ent.Field{ | |
| field.Int64("promo_code_id"). | |
| Comment("优惠码ID"), | |
| field.Int64("user_id"). | |
| Comment("使用用户ID"), | |
| field.Float("bonus_amount"). | |
| SchemaType(map[string]string{dialect.Postgres: "decimal(20,8)"}). | |
| Comment("实际赠送金额"), | |
| field.Time("used_at"). | |
| Default(time.Now). | |
| SchemaType(map[string]string{dialect.Postgres: "timestamptz"}). | |
| Comment("使用时间"), | |
| } | |
| } | |
| func (PromoCodeUsage) Edges() []ent.Edge { | |
| return []ent.Edge{ | |
| edge.From("promo_code", PromoCode.Type). | |
| Ref("usage_records"). | |
| Field("promo_code_id"). | |
| Required(). | |
| Unique(), | |
| edge.From("user", User.Type). | |
| Ref("promo_code_usages"). | |
| Field("user_id"). | |
| Required(). | |
| Unique(), | |
| } | |
| } | |
| func (PromoCodeUsage) Indexes() []ent.Index { | |
| return []ent.Index{ | |
| index.Fields("promo_code_id"), | |
| index.Fields("user_id"), | |
| // 每个用户每个优惠码只能使用一次 | |
| index.Fields("promo_code_id", "user_id").Unique(), | |
| } | |
| } | |