Files
projet_gestion_commande/backend/gestion/db/db_users.go
T
Xor290 cfb5b79025
Backend - Build & Lint / build (push) Has been cancelled
chore: build
2026-07-01 20:56:41 +02:00

91 lines
2.5 KiB
Go

package db
import (
"fmt"
"gestion/models"
"log"
)
func (d *Database) CreateUser(user *models.User) error {
if err := d.GDB.Create(user).Error; err != nil {
return fmt.Errorf("erreur lors de la création de l'utilisateur: %w", err)
}
return nil
}
func (d *Database) GetAllUsers() ([]*models.User, error) {
var users []*models.User
if err := d.GDB.Order("created_at DESC").Limit(500).Find(&users).Error; err != nil {
return nil, fmt.Errorf("erreur lors de la récupération des utilisateurs: %w", err)
}
return users, nil
}
func (d *Database) GetAllDeliveryMen() ([]*models.User, error) {
var users []*models.User
if err := d.GDB.Where("role = ?", "livreur").Limit(100).Find(&users).Error; err != nil {
return nil, fmt.Errorf("erreur lors de la récupération des livreurs: %w", err)
}
return users, nil
}
func (d *Database) UpdateUser(user *models.User) error {
result := d.GDB.Model(user).Updates(models.User{
Username: user.Username,
Password: user.Password,
Role: user.Role,
})
if result.Error != nil {
return fmt.Errorf("erreur lors de la mise à jour de l'utilisateur: %w", result.Error)
}
if result.RowsAffected == 0 {
return fmt.Errorf("utilisateur non trouvé")
}
return nil
}
func (d *Database) DeleteUser(id int) error {
var user models.User
if err := d.GDB.First(&user, id).Error; err != nil {
if isNotFound(err) {
return fmt.Errorf("utilisateur non trouvé")
}
return fmt.Errorf("erreur lors de la récupération du rôle: %w", err)
}
_ = d.RevokeAllUserTokens(id, user.Role)
result := d.GDB.Delete(&models.User{}, id)
if result.Error != nil {
return fmt.Errorf("erreur lors de la suppression de l'utilisateur: %w", result.Error)
}
if result.RowsAffected == 0 {
return fmt.Errorf("utilisateur non trouvé")
}
log.Printf("✅ Utilisateur supprimé (ID: %d, Role: %s)", id, user.Role)
return nil
}
func (d *Database) GetUserByID(id int) (*models.User, error) {
var user models.User
if err := d.GDB.First(&user, id).Error; err != nil {
if isNotFound(err) {
return nil, fmt.Errorf("utilisateur non trouvé")
}
return nil, fmt.Errorf("erreur lors de la récupération de l'utilisateur: %w", err)
}
return &user, nil
}
func (d *Database) GetUserByUsername(username string) (*models.User, error) {
var user models.User
if err := d.GDB.Where("username = ?", username).First(&user).Error; err != nil {
if isNotFound(err) {
return nil, fmt.Errorf("utilisateur non trouvé")
}
return nil, fmt.Errorf("erreur lors de la récupération de l'utilisateur: %w", err)
}
return &user, nil
}