package services import ( "easywish/internal/database" "easywish/internal/errors" errs "easywish/internal/errors" "easywish/internal/models" "easywish/internal/utils" ) type AuthService interface { Login(request models.LoginRequest) (*models.LoginResponse, error) Refresh(request models.RefreshRequest) (*models.RefreshResponse, error) } type authServiceImpl struct { } func NewAuthService() AuthService { return &authServiceImpl{} } func (a *authServiceImpl) Login(request models.LoginRequest) (*models.LoginResponse, error) { conn, ctx, err := utils.GetDbConn() if err != nil { return nil, err } defer conn.Close(ctx) queries := database.New(conn) user, err := queries.GetUserByLoginCredentials(ctx, database.GetUserByLoginCredentialsParams{ Username: request.Username, Password: request.Password, }) if err != nil { return nil, errs.ErrUnauthorized } accessToken, refreshToken, err := utils.GenerateTokens(user.Username) return &models.LoginResponse{Tokens: models.Tokens{AccessToken: accessToken, RefreshToken: refreshToken}}, nil } func (a *authServiceImpl) Refresh(request models.RefreshRequest) (*models.RefreshResponse, error) { return nil, errors.ErrNotImplemented }