From f159014374d1af1956267855f6e3af386ed7cf75 Mon Sep 17 00:00:00 2001 From: nquidox Date: Mon, 2 Mar 2026 17:29:43 +0300 Subject: [PATCH] user package --- internal/user/handler.go | 24 ++++++++++++++++++++++++ internal/user/interface.go | 5 +++++ internal/user/repository.go | 29 +++++++++++++++++++++++++++++ internal/user/service.go | 26 ++++++++++++++++++++++++++ 4 files changed, 84 insertions(+) create mode 100644 internal/user/handler.go create mode 100644 internal/user/interface.go create mode 100644 internal/user/repository.go create mode 100644 internal/user/service.go diff --git a/internal/user/handler.go b/internal/user/handler.go new file mode 100644 index 0000000..1e47646 --- /dev/null +++ b/internal/user/handler.go @@ -0,0 +1,24 @@ +package user + +import ( + "database/sql" + "merch-api/pkg/utils" +) + +type Handler struct { + *service +} + +type Deps struct { + DB *sql.DB + Utils utils.Utils +} + +func New(deps Deps) *Handler { + r := newRepository(deps.DB) + s := newService(r, deps.Utils) + + return &Handler{ + service: s, + } +} diff --git a/internal/user/interface.go b/internal/user/interface.go new file mode 100644 index 0000000..0c32bbf --- /dev/null +++ b/internal/user/interface.go @@ -0,0 +1,5 @@ +package user + +type Provider interface { + GetUserId(userUuid string) (string, error) +} diff --git a/internal/user/repository.go b/internal/user/repository.go new file mode 100644 index 0000000..c2897ae --- /dev/null +++ b/internal/user/repository.go @@ -0,0 +1,29 @@ +package user + +import "database/sql" + +type Repository interface { + getUserId(userUuid string) (string, error) +} + +type repo struct { + db *sql.DB +} + +func newRepository(db *sql.DB) Repository { + return &repo{ + db: db, + } +} + +func (r *repo) getUserId(userUuid string) (string, error) { + q := `SELECT id FROM users WHERE uuid = $1 AND deleted_at IS NULL LIMIT 1` + row := r.db.QueryRow(q, userUuid) + + var id string + if err := row.Scan(&id); err != nil { + return "", err + } + + return id, nil +} diff --git a/internal/user/service.go b/internal/user/service.go new file mode 100644 index 0000000..8471b04 --- /dev/null +++ b/internal/user/service.go @@ -0,0 +1,26 @@ +package user + +import ( + "errors" + "merch-api/pkg/utils" +) + +type service struct { + repo Repository + utils utils.Utils +} + +func newService(repo Repository, utils utils.Utils) *service { + return &service{ + repo: repo, + utils: utils, + } +} + +func (s *service) GetUserId(userUuid string) (string, error) { + if userUuid == "" { + return "", errors.New("user uuid is empty") + } + + return s.repo.getUserId(userUuid) +}