Files
go-sdk/repositories/user.go
Björn Benouarets 1fb2bdd3be Add user repository
2025-10-20 09:54:44 +02:00

76 lines
1.6 KiB
Go

package repositories
import (
"git.secnex.io/cluequest/go-sdk/models"
"github.com/google/uuid"
"gorm.io/gorm"
)
type UserRepository struct {
db *gorm.DB
}
func NewUserRepository(db *gorm.DB) *UserRepository {
return &UserRepository{db: db}
}
func (r *UserRepository) getDB() *gorm.DB {
return r.db
}
func (r *UserRepository) GetAllUsers() ([]models.User, error) {
var users []models.User
if err := r.getDB().Find(&users).Error; err != nil {
return nil, err
}
return users, nil
}
func (r *UserRepository) GetUserByID(id uuid.UUID) (*models.User, error) {
var user models.User
if err := r.getDB().First(&user, "id = ?", id).Error; err != nil {
return nil, err
}
return &user, nil
}
func (r *UserRepository) GetUserByEmail(email string) (*models.User, error) {
var user models.User
if err := r.getDB().First(&user, "email = ?", email).Error; err != nil {
return nil, err
}
return &user, nil
}
func (r *UserRepository) CreateUser(user *models.User) error {
return r.getDB().Create(user).Error
}
func (r *UserRepository) UpdateUser(user *models.User) error {
return r.getDB().Save(user).Error
}
func (r *UserRepository) UpdatePassword(id uuid.UUID, password string) error {
return r.getDB().Model(&models.User{}).Where("id = ?", id).Update("password", password).Error
}
func (r *UserRepository) DeleteUser(id uuid.UUID) error {
return r.getDB().Delete(&models.User{}, "id = ?", id).Error
}
func (r *UserRepository) CountUsers() (int64, error) {
var count int64
if err := r.getDB().Model(&models.User{}).Count(&count).Error; err != nil {
return 0, err
}
return count, nil
}