package models import ( "GoMembership/pkg/logger" "time" "gorm.io/gorm" ) type Damage struct { ID uint `gorm:"primaryKey" json:"id"` CarID uint `json:"car_id"` CreatedAt time.Time UpdatedAt time.Time DeletedAt *time.Time Name string `json:"name"` Date time.Time `json:"date"` Opponent *User `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"opponent"` OpponentID uint `json:"opponent_id"` Driver *User `json:"driver"` DriverID uint `json:"driver_id"` Insurance *Insurance `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"insurance"` InsuranceID uint `json:"insurance_id"` Notes string `json:"notes"` } func (d *Damage) Create(db *gorm.DB) error { // Create the base User record (omit associations to handle them separately) if err := db.Create(d).Error; err != nil { return err } logger.Info.Printf("Damage created: %#v", d) // Preload all associations to return the fully populated User return db.First(d, d.ID).Error // Refresh the user object with all associations } func (d *Damage) Update(db *gorm.DB) error { return db.Transaction(func(tx *gorm.DB) error { // Check if the user exists in the database var existingDamage Damage logger.Info.Printf("updating Damage: %#v", d) if err := tx.First(&existingDamage, d.ID).Error; err != nil { return err } if err := tx.Model(&existingDamage).Updates(d).Error; err != nil { return err } return tx.First(d, d.ID).Error }) } func (d *Damage) Delete(db *gorm.DB) error { return db.Delete(&d).Error }