123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- package rest
- import "context"
- type Delegate 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)
- }
- type delegate struct {
- delegates []Delegate
- }
- func (dm *delegate) Register(d Delegate) {
- if dm.delegates == nil {
- dm.delegates = make([]Delegate, 0)
- }
- dm.delegates = append(dm.delegates, d)
- }
- func (dm *delegate) BeforeQuery(ctx context.Context, query *Query) (err error) {
- for i := len(dm.delegates) - 1; i >= 0; i-- {
- if err = dm.delegates[i].BeforeQuery(ctx, query); err != nil {
- return
- }
- }
- return
- }
- func (dm *delegate) AfterQuery(ctx context.Context, query *Query) (err error) {
- for i := len(dm.delegates) - 1; i >= 0; i-- {
- if err = dm.delegates[i].AfterQuery(ctx, query); err != nil {
- return
- }
- }
- return
- }
- func (dm *delegate) BeforeSave(ctx context.Context, model interface{}) (err error) {
- for i := len(dm.delegates) - 1; i >= 0; i-- {
- if err = dm.delegates[i].BeforeSave(ctx, model); err != nil {
- return
- }
- }
- return
- }
- func (dm *delegate) AfterSave(ctx context.Context, model interface{}, diff []*DiffAttr) (err error) {
- for i := len(dm.delegates) - 1; i >= 0; i-- {
- if err = dm.delegates[i].AfterSave(ctx, model, diff); err != nil {
- return
- }
- }
- return
- }
- func (dm *delegate) BeforeCreate(ctx context.Context, model interface{}) (err error) {
- for i := len(dm.delegates) - 1; i >= 0; i-- {
- if err = dm.delegates[i].BeforeCreate(ctx, model); err != nil {
- return
- }
- }
- return
- }
- func (dm *delegate) AfterCreate(ctx context.Context, model interface{}, diff []*DiffAttr) (err error) {
- for i := len(dm.delegates) - 1; i >= 0; i-- {
- if err = dm.delegates[i].AfterCreate(ctx, model, diff); err != nil {
- return
- }
- }
- return
- }
- func (dm *delegate) BeforeUpdate(ctx context.Context, model interface{}) (err error) {
- for i := len(dm.delegates) - 1; i >= 0; i-- {
- if err = dm.delegates[i].BeforeUpdate(ctx, model); err != nil {
- return
- }
- }
- return
- }
- func (dm *delegate) AfterUpdate(ctx context.Context, model interface{}, diff []*DiffAttr) (err error) {
- for i := len(dm.delegates) - 1; i >= 0; i-- {
- if err = dm.delegates[i].AfterUpdate(ctx, model, diff); err != nil {
- return
- }
- }
- return
- }
- func (dm *delegate) BeforeDelete(ctx context.Context, model interface{}) (err error) {
- for i := len(dm.delegates) - 1; i >= 0; i-- {
- if err = dm.delegates[i].BeforeDelete(ctx, model); err != nil {
- return
- }
- }
- return
- }
- func (dm *delegate) AfterDelete(ctx context.Context, model interface{}) (err error) {
- for i := len(dm.delegates) - 1; i >= 0; i-- {
- if err = dm.delegates[i].AfterDelete(ctx, model); err != nil {
- return
- }
- }
- return
- }
|