Hi there, We're Crypto.Pulse Roman

-domain| |_policy| |_user| |_dto.go |_policy.go |_user| |_dao.go| | |_model.go | |_postgres.go |_model.go| | |_model.go |_service| |_service.go

888Starz

Golang, SQL

Описание

Необходимо спроектировать и разработать сервис, который работает с реляционным хранилищем данных PostgreSQL. Основной упор необходимо сделать на программную архитектуру: слои, маппинги структур данных между слоями приложения.

Основные сущности

User

  • id
  • firstname
  • lastname
  • fullname (firstname + lastname) age
  • is_married
  • password

Product

  • id
  • description
  • tags
  • quantity

Что надо сделать

Реализовать следующий функционал:

  • Регистрация пользователя (не младше 18 лет);
  • Пароль не меньше 8 символов;
  • Пользователь может заказать продукт;
  • У пользователя может быть много заказов;
  • Заказ может содержать множество продуктов;
  • Если, продуктов не осталось на складе – его нельзя заказать;
  • Нужна историчность заказов и продуктов в заказе (например старая цена).

Тесты

Покрыть тестами несколько (2-3) функционально важных методов.

Тезисно

Не все из перечисленного ниже обязательно реализовывать.

  • REST API
  • Слоеная архитектура
  • Логирование (в контексте) - middleware
  • Трасировка, opentelemetry - middleware
  • Sentry - ловить паники в middleware
  • На каждом слое своя структура данных
  • Поток данных идет как в чистой или гексогональной архитектуре

Запуск

=== mod ===

make mod

=== fmt ===

make fmt 

=== Linter ===

make install-linter
make lint
make lint-fast