package services import ( "easywish/internal/database" errs "easywish/internal/errors" "easywish/internal/models" "easywish/internal/utils" ) type AuthService interface { RegistrationBegin(request models.RegistrationBeginRequest) (bool, error) RegistrationComplete(request models.RegistrationBeginRequest) (*models.RegistrationCompleteResponse, error) 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) RegistrationBegin(request models.RegistrationBeginRequest) (bool, error) { return false, errs.ErrNotImplemented } func (a *authServiceImpl) RegistrationComplete(request models.RegistrationBeginRequest) (*models.RegistrationCompleteResponse, error) { return nil, errs.ErrNotImplemented } 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, errs.ErrNotImplemented }