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 }