cafe-plaetschwiesle/user/user.go
2023-07-04 11:51:13 +02:00

42 lines
1.2 KiB
Go

package user
import (
"cafe/config"
"cafe/types"
"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 DoesUserExist(username string) (User, error) {
var user User
result := config.Cafe.Database.ORM.Limit(1).Find(&user, "username = ?", username)
if result.RowsAffected == 0 {
return user, fmt.Errorf(types.CannotFind.String())
}
return user, nil
}
func GetUserOrCreate(username string) (User, error) {
var user User
err := config.Cafe.Database.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 UpdateUser(old *User, new *User) error {
err := config.Cafe.Database.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
}