Base Project

This commit is contained in:
Tran Anh Tuan
2026-05-08 14:32:24 +07:00
parent 5a9249c9ea
commit 6a4a96e0ca
74 changed files with 6749 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
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
}

View File

@@ -0,0 +1 @@
package redis

View File

@@ -0,0 +1,16 @@
package repositories
import (
"context"
"wm-backend/internal/mapper"
"wm-backend/internal/models"
db "wm-backend/sqlc_gen"
)
func CreateRole(ctx context.Context, queries *db.Queries, body models.Role) (models.Role, error) {
role, err := queries.CreateRole(ctx, *mapper.ToModelRole(&body))
if err != nil {
return models.Role{}, err
}
return *mapper.ToDomainRole(role), nil
}

View File

@@ -0,0 +1,48 @@
package repositories
import (
"context"
"wm-backend/internal/mapper"
"wm-backend/internal/models"
db "wm-backend/sqlc_gen"
)
func CreateWareHouse(ctx context.Context, queries *db.Queries, body models.Warehouse) (models.Warehouse, error) {
warehouse, err := queries.CreateWarehouse(ctx, *mapper.ToModelWarehouse(&body))
if err != nil {
return models.Warehouse{}, err
}
return *mapper.ToDomainWarehouse(warehouse), nil
}
func GetWarehouseByID(ctx context.Context, queries *db.Queries, id int64) (models.Warehouse, error) {
result, err := queries.GetWarehouseByID(ctx, id)
if err != nil {
return models.Warehouse{}, err
}
return *mapper.ToDomainWarehouse(result), nil
}
func ListWarehouses(ctx context.Context, queries *db.Queries) ([]models.Warehouse, error) {
results, err := queries.ListWarehouses(ctx)
if err != nil {
return nil, err
}
var items []models.Warehouse
for _, r := range results {
items = append(items, *mapper.ToDomainWarehouse(r))
}
return items, nil
}
func UpdateWarehouse(ctx context.Context, queries *db.Queries, body models.Warehouse) (models.Warehouse, error) {
result, err := queries.UpdateWarehouse(ctx, *mapper.ToUpdateModelWarehouse(&body))
if err != nil {
return models.Warehouse{}, err
}
return *mapper.ToDomainWarehouse(result), nil
}
func DeleteWarehouse(ctx context.Context, queries *db.Queries, id int64) error {
return queries.DeleteWarehouse(ctx, id)
}