1 回答

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以使用 MixIn,它允許您創(chuàng)建可重用的耳影片段??梢允褂媒M合將架構(gòu)代碼注入到其他架構(gòu)中,因此,您可以在另一個(gè)架構(gòu)中定義時(shí)間戳值,并將其混合在需要的其他架構(gòu)中,以便您的時(shí)間戳(基本實(shí)體)mixin架構(gòu)將如下所示
package schema
import (
"entgo.io/ent"
"entgo.io/ent/schema/field"
"entgo.io/ent/schema/mixin"
"time"
)
type TimeStamp struct {
mixin.Schema
}
func (TimeStamp) Fields() []ent.Field {
return []ent.Field{
field.Time("created_at").Default(time.Now).Immutable(),
field.Time("updated_at").Default(time.Now).UpdateDefault(time.Now),
}
}
現(xiàn)在,當(dāng)它被定義并且您需要將此時(shí)間戳架構(gòu)注入到其他架構(gòu)中時(shí)。為此,您所要做的就是將其注入該架構(gòu)的MixIn()中,如下所示
func (User) Mixin() []ent.Mixin {
return []ent.Mixin{
TimeStamp{},
}
}
......
func (Product) Mixin() []ent.Mixin {
return []ent.Mixin{
TimeStamp{},
}
}
因此,您的最終架構(gòu)將如下所示。
func (User) Mixin() []ent.Mixin {
return []ent.Mixin{
TimeStamp{},
}
}
func (User) Fields() []ent.Field {
return []ent.Field{
field.Int("id"),
field.String("name").MaxLen(70),
field.String("email"),
}
}
.....
func (Product) Mixin() []ent.Mixin {
return []ent.Mixin{
TimeStamp{},
}
}
func (Product) Fields() []ent.Field {
return []ent.Field{
field.Int("id"),
field.String("name").MaxLen(70),
field.Float("price"),
}
}
此外,ent 還提供了內(nèi)置的時(shí)間混合,可用于將 和 字段添加到架構(gòu)中,并將其定義為 。create_timeupdate_timemixin.Time{}
有關(guān)更多詳細(xì)信息,您可以查看 Mixin
- 1 回答
- 0 關(guān)注
- 87 瀏覽
添加回答
舉報(bào)