51 lines
1.2 KiB
Go
51 lines
1.2 KiB
Go
package auth
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"fmt"
|
|
"go.uber.org/zap"
|
|
"gorm.io/gorm"
|
|
|
|
"furtuna-be/internal/common/logger"
|
|
"furtuna-be/internal/entity"
|
|
)
|
|
|
|
type AuthRepository struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
func NewAuthRepository(db *gorm.DB) *AuthRepository {
|
|
return &AuthRepository{
|
|
db: db,
|
|
}
|
|
}
|
|
|
|
func (r *AuthRepository) CheckExistsUserAccount(ctx context.Context, email string) (*entity.UserDB, error) {
|
|
var user entity.UserDB
|
|
|
|
err := r.db.
|
|
Table("users").
|
|
Select("users.*, user_roles.role_id, user_roles.partner_id, user_roles.site_id, roles.role_name, partners.name as partner_name, partners.status as partner_status").
|
|
Where("users.email = ?", email).
|
|
Joins("left join user_roles on users.id = user_roles.user_id").
|
|
Joins("left join roles on user_roles.role_id = roles.role_id").
|
|
Joins("left join partners on user_roles.partner_id = partners.id").
|
|
First(&user).Error
|
|
|
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
return nil, nil
|
|
}
|
|
|
|
if err != nil {
|
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
return nil, fmt.Errorf("user with email %s does not exist", email) // or use a custom error type
|
|
}
|
|
|
|
logger.ContextLogger(ctx).Error(fmt.Sprintf("Failed to get user with email: %s", email), zap.Error(err))
|
|
return nil, err
|
|
}
|
|
|
|
return &user, nil
|
|
}
|