package repo import ( "errors" "trustcontact/internal/models" "gorm.io/gorm" ) type UserRepo struct { db *gorm.DB } func NewUserRepo(db *gorm.DB) *UserRepo { return &UserRepo{db: db} } func (r *UserRepo) FindByID(id uint) (*models.User, error) { var user models.User if err := r.db.First(&user, id).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { return nil, nil } return nil, err } return &user, nil } 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 errors.Is(err, gorm.ErrRecordNotFound) { return nil, nil } return nil, err } return &user, nil } func (r *UserRepo) Create(user *models.User) error { return r.db.Create(user).Error } func (r *UserRepo) SetEmailVerified(userID uint, 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 { return r.db.Model(&models.User{}). Where("id = ?", userID). Update("password_hash", passwordHash).Error }