stato intermedio

This commit is contained in:
fabio
2026-03-01 14:36:26 +01:00
parent e0ef48f6fd
commit b852f656d4
25 changed files with 4230 additions and 390 deletions

View File

@@ -26,9 +26,9 @@ func NewUserRepo(db *gorm.DB) *UserRepo {
return &UserRepo{db: db}
}
func (r *UserRepo) FindByID(id uint) (*models.User, error) {
func (r *UserRepo) FindByID(id string) (*models.User, error) {
var user models.User
if err := r.db.First(&user, id).Error; err != nil {
if err := r.db.Preload("Properties").Where("id = ?", id).First(&user).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, nil
}
@@ -40,7 +40,7 @@ func (r *UserRepo) FindByID(id uint) (*models.User, error) {
func (r *UserRepo) FindByEmail(email string) (*models.User, error) {
var user models.User
if err := r.db.Where("email = ?", email).First(&user).Error; err != nil {
if err := r.db.Preload("Properties").Where("email = ?", email).First(&user).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, nil
}
@@ -54,18 +54,58 @@ func (r *UserRepo) Create(user *models.User) error {
return r.db.Create(user).Error
}
func (r *UserRepo) SetEmailVerified(userID uint, verified bool) error {
func (r *UserRepo) SetEmailVerified(userID string, verified bool) error {
return r.db.Model(&models.User{}).
Where("id = ?", userID).
Update("email_verified", verified).Error
}
func (r *UserRepo) UpdatePasswordHash(userID uint, passwordHash string) error {
func (r *UserRepo) UpdatePasswordHash(userID string, passwordHash string) error {
return r.db.Model(&models.User{}).
Where("id = ?", userID).
Update("password_hash", passwordHash).Error
}
func (r *UserRepo) UpsertLanguagePreference(userID string, lang string) error {
var existing models.UserProperties
err := r.db.Where("user_id = ?", userID).First(&existing).Error
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
return err
}
if errors.Is(err, gorm.ErrRecordNotFound) {
props := models.UserProperties{
UserId: userID,
Lang: lang,
}
return r.db.Create(&props).Error
}
return r.db.Model(&models.UserProperties{}).
Where("user_id = ?", userID).
Update("lang", lang).Error
}
func (r *UserRepo) UpsertDarkPreference(userID string, dark bool) error {
var existing models.UserProperties
err := r.db.Where("user_id = ?", userID).First(&existing).Error
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
return err
}
if errors.Is(err, gorm.ErrRecordNotFound) {
props := models.UserProperties{
UserId: userID,
Dark: dark,
}
return r.db.Create(&props).Error
}
return r.db.Model(&models.UserProperties{}).
Where("user_id = ?", userID).
Update("dark", dark).Error
}
func (r *UserRepo) List(params UserListParams) ([]models.User, int64, error) {
query := r.db.Model(&models.User{})
@@ -92,8 +132,8 @@ func (r *UserRepo) List(params UserListParams) ([]models.User, int64, error) {
if pageSize <= 0 {
pageSize = 10
}
if pageSize > 100 {
pageSize = 100
if pageSize > 500 {
pageSize = 500
}
offset := (page - 1) * pageSize