model.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. package rest
  2. import (
  3. "context"
  4. "gorm.io/gorm"
  5. )
  6. type (
  7. Model interface {
  8. ModuleName() string
  9. TableName() string
  10. }
  11. FlexibleModel interface {
  12. Scenarios() []string
  13. }
  14. ActiveModel interface {
  15. OnBeforeQuery(ctx context.Context, query *Query) (err error)
  16. OnAfterQuery(ctx context.Context, query *Query) (err error)
  17. OnBeforeSave(ctx context.Context, model interface{}) (err error)
  18. OnAfterSave(ctx context.Context, model interface{}, diff []*DiffAttr) (err error)
  19. OnBeforeCreate(ctx context.Context, model interface{}) (err error)
  20. OnAfterCreate(ctx context.Context, model interface{}, diff []*DiffAttr) (err error)
  21. OnBeforeUpdate(ctx context.Context, model interface{}) (err error)
  22. OnAfterUpdate(ctx context.Context, model interface{}, diff []*DiffAttr) (err error)
  23. OnBeforeDelete(ctx context.Context, model interface{}) (err error)
  24. OnAfterDelete(ctx context.Context, model interface{}) (err error)
  25. }
  26. BaseModel struct {
  27. ID string `json:"id" gorm:"primaryKey;size:20" comment:"ID"`
  28. CreatedAt int64 `json:"created_at" gorm:"autoCreateTime" comment:"创建时间"`
  29. UpdatedAt int64 `json:"updated_at" gorm:"autoUpdateTime" comment:"更新时间"`
  30. DeletedAt gorm.DeletedAt `json:"deleted_at" gorm:"index" comment:"删除时间"`
  31. Namespace string `json:"namespace" gorm:"index;size:60;not null;default:'default'" comment:"域"`
  32. }
  33. ReadonlyModel struct {
  34. ID string `json:"id" gorm:"primaryKey;size:32" comment:"ID"`
  35. CreatedAt int64 `json:"created_at" gorm:"autoCreateTime" comment:"创建时间"`
  36. Namespace string `json:"namespace" gorm:"index;size:60;not null;default:'default'" comment:"域"`
  37. }
  38. )
  39. func (rom *ReadonlyModel) OnBeforeQuery(ctx context.Context, query *Query) (err error) {
  40. return
  41. }
  42. func (rom *ReadonlyModel) OnAfterQuery(ctx context.Context, query *Query) (err error) {
  43. return
  44. }
  45. func (rom *ReadonlyModel) OnBeforeSave(ctx context.Context, model interface{}) (err error) {
  46. return
  47. }
  48. func (rom *ReadonlyModel) OnAfterSave(ctx context.Context, model interface{}, diff []*DiffAttr) (err error) {
  49. return
  50. }
  51. func (rom *ReadonlyModel) OnBeforeCreate(ctx context.Context, model interface{}) (err error) {
  52. return
  53. }
  54. func (rom *ReadonlyModel) OnAfterCreate(ctx context.Context, model interface{}, diff []*DiffAttr) (err error) {
  55. return
  56. }
  57. func (rom *ReadonlyModel) OnBeforeUpdate(ctx context.Context, model interface{}) (err error) {
  58. return
  59. }
  60. func (rom *ReadonlyModel) OnAfterUpdate(ctx context.Context, model interface{}, diff []*DiffAttr) (err error) {
  61. return
  62. }
  63. func (rom *ReadonlyModel) OnBeforeDelete(ctx context.Context, model interface{}) (err error) {
  64. return
  65. }
  66. func (rom *ReadonlyModel) OnAfterDelete(ctx context.Context, model interface{}) (err error) {
  67. return
  68. }
  69. func (bsm *BaseModel) OnBeforeQuery(ctx context.Context, query *Query) (err error) {
  70. return
  71. }
  72. func (bsm *BaseModel) OnAfterQuery(ctx context.Context, query *Query) (err error) {
  73. return
  74. }
  75. func (bsm *BaseModel) OnBeforeSave(ctx context.Context, model interface{}) (err error) {
  76. return
  77. }
  78. func (bsm *BaseModel) OnAfterSave(ctx context.Context, model interface{}, diff []*DiffAttr) (err error) {
  79. return
  80. }
  81. func (bsm *BaseModel) OnBeforeCreate(ctx context.Context, model interface{}) (err error) {
  82. return
  83. }
  84. func (bsm *BaseModel) OnAfterCreate(ctx context.Context, model interface{}, diff []*DiffAttr) (err error) {
  85. return
  86. }
  87. func (bsm *BaseModel) OnBeforeUpdate(ctx context.Context, model interface{}) (err error) {
  88. return
  89. }
  90. func (bsm *BaseModel) OnAfterUpdate(ctx context.Context, model interface{}, diff []*DiffAttr) (err error) {
  91. return
  92. }
  93. func (bsm *BaseModel) OnBeforeDelete(ctx context.Context, model interface{}) (err error) {
  94. return
  95. }
  96. func (bsm *BaseModel) OnAfterDelete(ctx context.Context, model interface{}) (err error) {
  97. return
  98. }