package database import ( "backend/model" "encoding/json" "errors" "fmt" "os" "strings" "gorm.io/gorm" ) func CreateUser(user *model.User) error { e := Db.Where(model.User{ Username: user.Username, }).FirstOrCreate(&user).Error if e != nil { return e } return nil } func GetUserById(id string) (*model.User, error) { var user model.User e := Db.First(&user, "id = ?", id).Error if e != nil { if errors.Is(e, gorm.ErrRecordNotFound) { return nil, fmt.Errorf("user not found") } return nil, e } return &user, nil } func GetUserByUsername(username string) (*model.User, error) { var user model.User e := Db.First(&user, "username = ?", username).Error if e != nil { if errors.Is(e, gorm.ErrRecordNotFound) { return nil, fmt.Errorf("user not found") } return nil, e } return &user, nil } func DeleteUser(id string) error { var user model.User e := Db.First(&user, "id = ?", id).Error if e != nil { if errors.Is(e, gorm.ErrRecordNotFound) { return fmt.Errorf("user not found") } return e } e = Db.Unscoped().Delete(&user).Error if e != nil { if errors.Is(e, gorm.ErrRecordNotFound) { return fmt.Errorf("user not found") } return e } return nil } func GetUsersFromFile(filename string) []model.User { data, e := os.ReadFile(filename) if e != nil { panic(e) } decoder := json.NewDecoder(strings.NewReader(string(data))) var res []model.User decoder.Decode(&res) return res } func GetAllUsers() ([]model.User, error) { var users []model.User e := Db.Find(&users).Error if e != nil { return nil, e } return users, nil }