package repositories import ( "context" "errors" "wm-backend/internal/mapper" "wm-backend/internal/models" db "wm-backend/sqlc_gen" "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 }