cafe-plaetschwiesle/internal/controller/user.go
2023-07-04 23:18:05 +02:00

40 lines
1.1 KiB
Go

package controller
import (
"fmt"
)
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(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(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(CannotUpdate.String())
}
return nil
}