91 lines
2.5 KiB
Go
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").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").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
|
|
}
|