github.com/goravel/framework@v1.13.9/database/gorm/test_models.go (about)

     1  package gorm
     2  
     3  import (
     4  	"errors"
     5  
     6  	ormcontract "github.com/goravel/framework/contracts/database/orm"
     7  	"github.com/goravel/framework/database/orm"
     8  )
     9  
    10  type contextKey int
    11  
    12  const testContextKey contextKey = 0
    13  
    14  type User struct {
    15  	orm.Model
    16  	orm.SoftDeletes
    17  	Name    string
    18  	Avatar  string
    19  	Address *Address
    20  	Books   []*Book
    21  	House   *House   `gorm:"polymorphic:Houseable"`
    22  	Phones  []*Phone `gorm:"polymorphic:Phoneable"`
    23  	Roles   []*Role  `gorm:"many2many:role_user"`
    24  	age     int
    25  }
    26  
    27  func (u *User) DispatchesEvents() map[ormcontract.EventType]func(ormcontract.Event) error {
    28  	return map[ormcontract.EventType]func(ormcontract.Event) error{
    29  		ormcontract.EventCreating: func(event ormcontract.Event) error {
    30  			name := event.GetAttribute("name")
    31  			if name != nil {
    32  				if name.(string) == "event_creating_name" {
    33  					event.SetAttribute("avatar", "event_creating_avatar")
    34  				}
    35  				if name.(string) == "event_creating_FirstOrCreate_name" {
    36  					event.SetAttribute("avatar", "event_creating_FirstOrCreate_avatar")
    37  				}
    38  				if name.(string) == "event_creating_IsDirty_name" {
    39  					if event.IsDirty("name") {
    40  						event.SetAttribute("avatar", "event_creating_IsDirty_avatar")
    41  					}
    42  				}
    43  				if name.(string) == "event_context" {
    44  					val := event.Context().Value(testContextKey)
    45  					event.SetAttribute("avatar", val.(string))
    46  				}
    47  				if name.(string) == "event_query" {
    48  					_ = event.Query().Create(&User{Name: "event_query1"})
    49  				}
    50  			}
    51  
    52  			return nil
    53  		},
    54  		ormcontract.EventCreated: func(event ormcontract.Event) error {
    55  			name := event.GetAttribute("name")
    56  			if name != nil {
    57  				if name.(string) == "event_created_name" {
    58  					event.SetAttribute("avatar", "event_created_avatar")
    59  				}
    60  				if name.(string) == "event_created_FirstOrCreate_name" {
    61  					event.SetAttribute("avatar", "event_created_FirstOrCreate_avatar")
    62  				}
    63  			}
    64  
    65  			return nil
    66  		},
    67  		ormcontract.EventSaving: func(event ormcontract.Event) error {
    68  			name := event.GetAttribute("name")
    69  			if name != nil {
    70  				if name.(string) == "event_saving_create_name" {
    71  					event.SetAttribute("avatar", "event_saving_create_avatar")
    72  				}
    73  				if name.(string) == "event_saving_save_name" {
    74  					event.SetAttribute("avatar", "event_saving_save_avatar")
    75  				}
    76  				if name.(string) == "event_saving_FirstOrCreate_name" {
    77  					event.SetAttribute("avatar", "event_saving_FirstOrCreate_avatar")
    78  				}
    79  				if name.(string) == "event_save_without_name" {
    80  					event.SetAttribute("avatar", "event_save_without_avatar")
    81  				}
    82  				if name.(string) == "event_save_quietly_name" {
    83  					event.SetAttribute("avatar", "event_save_quietly_avatar")
    84  				}
    85  				if name.(string) == "event_saving_IsDirty_name" {
    86  					if event.IsDirty("name") {
    87  						event.SetAttribute("avatar", "event_saving_IsDirty_avatar")
    88  					}
    89  				}
    90  			}
    91  
    92  			avatar := event.GetAttribute("avatar")
    93  			if avatar != nil && avatar.(string) == "event_saving_single_update_avatar" {
    94  				event.SetAttribute("avatar", "event_saving_single_update_avatar1")
    95  			}
    96  
    97  			return nil
    98  		},
    99  		ormcontract.EventSaved: func(event ormcontract.Event) error {
   100  			name := event.GetAttribute("name")
   101  			if name != nil {
   102  				if name.(string) == "event_saved_create_name" {
   103  					event.SetAttribute("avatar", "event_saved_create_avatar")
   104  				}
   105  				if name.(string) == "event_saved_save_name" {
   106  					event.SetAttribute("avatar", "event_saved_save_avatar")
   107  				}
   108  				if name.(string) == "event_saved_FirstOrCreate_name" {
   109  					event.SetAttribute("avatar", "event_saved_FirstOrCreate_avatar")
   110  				}
   111  				if name.(string) == "event_save_without_name" {
   112  					event.SetAttribute("avatar", "event_saved_without_avatar")
   113  				}
   114  				if name.(string) == "event_save_quietly_name" {
   115  					event.SetAttribute("avatar", "event_saved_quietly_avatar")
   116  				}
   117  			}
   118  
   119  			avatar := event.GetAttribute("avatar")
   120  			if avatar != nil && avatar.(string) == "event_saved_map_update_avatar" {
   121  				event.SetAttribute("avatar", "event_saved_map_update_avatar1")
   122  			}
   123  
   124  			return nil
   125  		},
   126  		ormcontract.EventUpdating: func(event ormcontract.Event) error {
   127  			name := event.GetAttribute("name")
   128  			if name != nil {
   129  				if name.(string) == "event_updating_create_name" {
   130  					event.SetAttribute("avatar", "event_updating_create_avatar")
   131  				}
   132  				if name.(string) == "event_updating_save_name" {
   133  					event.SetAttribute("avatar", "event_updating_save_avatar")
   134  				}
   135  				if name.(string) == "event_updating_single_update_IsDirty_name1" {
   136  					if event.IsDirty("name") {
   137  						name := event.GetAttribute("name")
   138  						if name != "event_updating_single_update_IsDirty_name1" {
   139  							return errors.New("error")
   140  						}
   141  
   142  						event.SetAttribute("avatar", "event_updating_single_update_IsDirty_avatar")
   143  					}
   144  				}
   145  				if name.(string) == "event_updating_map_update_IsDirty_name1" {
   146  					if event.IsDirty("name") {
   147  						name := event.GetAttribute("name")
   148  						if name != "event_updating_map_update_IsDirty_name1" {
   149  							return errors.New("error")
   150  						}
   151  
   152  						event.SetAttribute("avatar", "event_updating_map_update_IsDirty_avatar")
   153  					}
   154  				}
   155  				if name.(string) == "event_updating_model_update_IsDirty_name1" {
   156  					if event.IsDirty("name") {
   157  						name := event.GetAttribute("name")
   158  						if name != "event_updating_model_update_IsDirty_name1" {
   159  							return errors.New("error")
   160  						}
   161  						event.SetAttribute("avatar", "event_updating_model_update_IsDirty_avatar")
   162  					}
   163  				}
   164  			}
   165  
   166  			avatar := event.GetAttribute("avatar")
   167  			if avatar != nil {
   168  				if avatar.(string) == "event_updating_save_avatar" {
   169  					event.SetAttribute("avatar", "event_updating_save_avatar1")
   170  				}
   171  				if avatar.(string) == "event_updating_model_update_avatar" {
   172  					event.SetAttribute("avatar", "event_updating_model_update_avatar1")
   173  				}
   174  			}
   175  
   176  			return nil
   177  		},
   178  		ormcontract.EventUpdated: func(event ormcontract.Event) error {
   179  			name := event.GetAttribute("name")
   180  			if name != nil {
   181  				if name.(string) == "event_updated_create_name" {
   182  					event.SetAttribute("avatar", "event_updated_create_avatar")
   183  				}
   184  				if name.(string) == "event_updated_save_name" {
   185  					event.SetAttribute("avatar", "event_updated_save_avatar")
   186  				}
   187  			}
   188  
   189  			avatar := event.GetAttribute("avatar")
   190  			if avatar != nil {
   191  				if avatar.(string) == "event_updated_save_avatar" {
   192  					event.SetAttribute("avatar", "event_updated_save_avatar1")
   193  				}
   194  				if avatar.(string) == "event_updated_model_update_avatar" {
   195  					event.SetAttribute("avatar", "event_updated_model_update_avatar1")
   196  				}
   197  			}
   198  
   199  			return nil
   200  		},
   201  		ormcontract.EventDeleting: func(event ormcontract.Event) error {
   202  			name := event.GetAttribute("name")
   203  			if name != nil && name.(string) == "event_deleting_name" {
   204  				return errors.New("deleting error")
   205  			}
   206  
   207  			return nil
   208  		},
   209  		ormcontract.EventDeleted: func(event ormcontract.Event) error {
   210  			name := event.GetAttribute("name")
   211  			if name != nil && name.(string) == "event_deleted_name" {
   212  				return errors.New("deleted error")
   213  			}
   214  
   215  			return nil
   216  		},
   217  		ormcontract.EventForceDeleting: func(event ormcontract.Event) error {
   218  			name := event.GetAttribute("name")
   219  			if name != nil && name.(string) == "event_force_deleting_name" {
   220  				return errors.New("force deleting error")
   221  			}
   222  
   223  			return nil
   224  		},
   225  		ormcontract.EventForceDeleted: func(event ormcontract.Event) error {
   226  			name := event.GetAttribute("name")
   227  			if name != nil && name.(string) == "event_force_deleted_name" {
   228  				return errors.New("force deleted error")
   229  			}
   230  
   231  			return nil
   232  		},
   233  		ormcontract.EventRetrieved: func(event ormcontract.Event) error {
   234  			name := event.GetAttribute("name")
   235  			if name != nil && name.(string) == "event_retrieved_name" {
   236  				event.SetAttribute("name", "event_retrieved_name1")
   237  			}
   238  
   239  			return nil
   240  		},
   241  	}
   242  }
   243  
   244  type Role struct {
   245  	orm.Model
   246  	Name  string
   247  	Users []*User `gorm:"many2many:role_user"`
   248  }
   249  
   250  type Address struct {
   251  	orm.Model
   252  	UserID   uint
   253  	Name     string
   254  	Province string
   255  	User     *User
   256  }
   257  
   258  type Book struct {
   259  	orm.Model
   260  	UserID uint
   261  	Name   string
   262  	User   *User
   263  	Author *Author
   264  }
   265  
   266  type Author struct {
   267  	orm.Model
   268  	BookID uint
   269  	Name   string
   270  }
   271  
   272  type House struct {
   273  	orm.Model
   274  	Name          string
   275  	HouseableID   uint
   276  	HouseableType string
   277  }
   278  
   279  func (h *House) Factory() string {
   280  	return "house"
   281  }
   282  
   283  type Phone struct {
   284  	orm.Model
   285  	Name          string
   286  	PhoneableID   uint
   287  	PhoneableType string
   288  }
   289  
   290  type Product struct {
   291  	orm.Model
   292  	orm.SoftDeletes
   293  	Name string
   294  }
   295  
   296  func (p *Product) Connection() string {
   297  	return "postgresql"
   298  }
   299  
   300  type Review struct {
   301  	orm.Model
   302  	orm.SoftDeletes
   303  	Body string
   304  }
   305  
   306  func (r *Review) Connection() string {
   307  	return ""
   308  }
   309  
   310  type People struct {
   311  	orm.Model
   312  	orm.SoftDeletes
   313  	Body string
   314  }
   315  
   316  func (p *People) Connection() string {
   317  	return "dummy"
   318  }
   319  
   320  type Person struct {
   321  	orm.Model
   322  	orm.SoftDeletes
   323  	Name string
   324  }
   325  
   326  func (p *Person) Connection() string {
   327  	return "dummy"
   328  }
   329  
   330  type Box struct {
   331  	orm.Model
   332  	orm.SoftDeletes
   333  	Name string
   334  }
   335  
   336  func (p *Box) Connection() string {
   337  	return "mysql"
   338  }