package controller import ( "fmt" "gitlab.unjx.de/flohoss/cafe-plaetschwiesle/internal/types" ) type User struct { Username string `gorm:"primaryKey" json:"username" validate:"required"` ShowColdDrinks bool `json:"show_cold_drinks" validate:"required"` ShowHotDrinks bool `json:"show_hot_drinks" validate:"required"` } func (c *Controller) doesUserExist(username string) (User, error) { var user User result := c.orm.Limit(1).Find(&user, "username = ?", username) if result.RowsAffected == 0 { return user, fmt.Errorf(types.CannotFind.String()) } return user, nil } func (c *Controller) getUserOrCreate(username string) (User, error) { var user User err := c.orm.Where(User{Username: username}).Attrs(User{ShowHotDrinks: true, ShowColdDrinks: true}).FirstOrCreate(&user).Error if err != nil { return user, fmt.Errorf(types.CannotCreate.String()) } return user, nil } func (c *Controller) updateUser(old *User, new *User) error { err := c.orm.First(old).Updates(map[string]interface{}{ "Username": new.Username, "ShowColdDrinks": new.ShowColdDrinks, "ShowHotDrinks": new.ShowHotDrinks}).Error if err != nil { return fmt.Errorf(types.CannotUpdate.String()) } return nil }