42 lines
1.2 KiB
Go
42 lines
1.2 KiB
Go
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
|
|
}
|