You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ntool-biz/core/orm/nent/mixins/time.go

61 lines
1.2 KiB
Go

package mixins
import (
"entgo.io/ent"
"entgo.io/ent/dialect"
"entgo.io/ent/schema/field"
"entgo.io/ent/schema/mixin"
"time"
)
// TimeMixin implements the ent.Mixin for sharing
// all time fields with package schemas.
type TimeMixin struct {
mixin.Schema
}
func (TimeMixin) Fields() []ent.Field {
return append(
CreateTimeMixin{}.Fields(),
UpdateTimeMixin{}.Fields()...,
)
}
// CreateTimeMixin implements the ent.Mixin for sharing
// time fields with package schemas.
type CreateTimeMixin struct {
mixin.Schema
}
// Fields of the create-time mixin.
func (CreateTimeMixin) Fields() []ent.Field {
return []ent.Field{
field.Time("created_at").
Default(time.Now).
Immutable().
SchemaType(map[string]string{
dialect.MySQL: "datetime",
}).
Comment("Create Time | 创建时间"),
}
}
// UpdateTimeMixin implements the ent.Mixin for sharing
// time fields with package schemas.
type UpdateTimeMixin struct {
mixin.Schema
}
// Fields of the update-time mixin.
func (UpdateTimeMixin) Fields() []ent.Field {
return []ent.Field{
field.Time("updated_at").
Default(time.Now).
UpdateDefault(time.Now).
SchemaType(map[string]string{
dialect.MySQL: "datetime",
}).
Comment("Update Time | 更新时间"),
}
}