Files
warehouse-management-BE/internal/repositories/auth_repository.go

64 lines
1.7 KiB
Go

package repositories
import (
"context"
"errors"
"wm-backend/internal/mapper"
"wm-backend/internal/models"
db "wm-backend/sqlc_gen"
"github.com/google/uuid"
"github.com/jackc/pgx/v5"
)
// GetUserByEmail retrieves a user by their email address using SQLC-generated queries.
// Returns nil, nil if no user is found.
func GetUserByEmail(ctx context.Context, queries *db.Queries, email string) (*models.User, error) {
user, err := queries.GetUserByEmail(ctx, email)
if err != nil {
if errors.Is(err, pgx.ErrNoRows) {
return nil, nil
}
return nil, err
}
return mapper.ToDomainUser(user), nil
}
func GetUserByUsername(ctx context.Context, queries *db.Queries, username string) (*models.User, error) {
user, err := queries.GetUserByUsername(ctx, username)
if err != nil {
if errors.Is(err, pgx.ErrNoRows) {
return nil, nil
}
return nil, err
}
return mapper.ToDomainUser(user), nil
}
// CreateUser inserts a new user using SQLC-generated queries.
// Returns the created user's ID as a string.
func CreateUser(ctx context.Context, queries *db.Queries, params db.CreateUserParams) (string, error) {
id, err := queries.CreateUser(ctx, params)
if err != nil {
return "", err
}
return id.String(), nil
}
// GetUserByID retrieves a user by their ID using SQLC-generated queries.
// Returns nil, nil if no user is found.
func GetUserByID(ctx context.Context, queries *db.Queries, id string) (*models.User, error) {
uid, err := uuid.Parse(id)
if err != nil {
return nil, err
}
user, err := queries.GetUserByID(ctx, uid)
if err != nil {
if errors.Is(err, pgx.ErrNoRows) {
return nil, nil
}
return nil, err
}
return mapper.ToDomainUser(user), nil
}