package rest import ( "context" "gorm.io/gorm" ) type ( Model interface { ModuleName() string TableName() string } FlexibleModel interface { Scenarios() []string } ActiveModel interface { BeforeQuery(ctx context.Context, query *Query) (err error) AfterQuery(ctx context.Context, query *Query) (err error) BeforeSave(ctx context.Context, model interface{}) (err error) AfterSave(ctx context.Context, model interface{}, diff []*DiffAttr) (err error) BeforeCreate(ctx context.Context, model interface{}) (err error) AfterCreate(ctx context.Context, model interface{}, diff []*DiffAttr) (err error) BeforeUpdate(ctx context.Context, model interface{}) (err error) AfterUpdate(ctx context.Context, model interface{}, diff []*DiffAttr) (err error) BeforeDelete(ctx context.Context, model interface{}) (err error) AfterDelete(ctx context.Context, model interface{}) (err error) } BaseModel struct { ID string `json:"id" gorm:"primaryKey;size:20" comment:"ID"` CreatedAt int64 `json:"created_at" gorm:"autoCreateTime" comment:"创建时间"` UpdatedAt int64 `json:"updated_at" gorm:"autoUpdateTime" comment:"更新时间"` DeletedAt gorm.DeletedAt `json:"deleted_at" gorm:"index" comment:"删除时间"` Namespace string `json:"namespace" gorm:"index;size:60;not null;default:'default'" comment:"域"` } ReadonlyModel struct { ID string `json:"id" gorm:"primaryKey;size:32" comment:"ID"` CreatedAt int64 `json:"created_at" gorm:"autoCreateTime" comment:"创建时间"` Namespace string `json:"namespace" gorm:"index;size:60;not null;default:'default'" comment:"域"` } ) func (rom *ReadonlyModel) BeforeQuery(ctx context.Context, query *Query) (err error) { return } func (rom *ReadonlyModel) AfterQuery(ctx context.Context, query *Query) (err error) { return } func (rom *ReadonlyModel) BeforeSave(ctx context.Context, model interface{}) (err error) { return } func (rom *ReadonlyModel) AfterSave(ctx context.Context, model interface{}, diff []*DiffAttr) (err error) { return } func (rom *ReadonlyModel) BeforeCreate(ctx context.Context, model interface{}) (err error) { return } func (rom *ReadonlyModel) AfterCreate(ctx context.Context, model interface{}, diff []*DiffAttr) (err error) { return } func (rom *ReadonlyModel) BeforeUpdate(ctx context.Context, model interface{}) (err error) { return } func (rom *ReadonlyModel) AfterUpdate(ctx context.Context, model interface{}, diff []*DiffAttr) (err error) { return } func (rom *ReadonlyModel) BeforeDelete(ctx context.Context, model interface{}) (err error) { return } func (rom *ReadonlyModel) AfterDelete(ctx context.Context, model interface{}) (err error) { return } func (bsm *BaseModel) BeforeQuery(ctx context.Context, query *Query) (err error) { return } func (bsm *BaseModel) AfterQuery(ctx context.Context, query *Query) (err error) { return } func (bsm *BaseModel) BeforeSave(ctx context.Context, model interface{}) (err error) { return } func (bsm *BaseModel) AfterSave(ctx context.Context, model interface{}, diff []*DiffAttr) (err error) { return } func (bsm *BaseModel) BeforeCreate(ctx context.Context, model interface{}) (err error) { return } func (bsm *BaseModel) AfterCreate(ctx context.Context, model interface{}, diff []*DiffAttr) (err error) { return } func (bsm *BaseModel) BeforeUpdate(ctx context.Context, model interface{}) (err error) { return } func (bsm *BaseModel) AfterUpdate(ctx context.Context, model interface{}, diff []*DiffAttr) (err error) { return } func (bsm *BaseModel) BeforeDelete(ctx context.Context, model interface{}) (err error) { return } func (bsm *BaseModel) AfterDelete(ctx context.Context, model interface{}) (err error) { return }