Files
auth_service_go/database/users.go
T
2025-05-27 22:15:15 +07:00

86 lines
1.6 KiB
Go

package database
import (
"auth_service/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
}