module
0.0.0-20240307075223-cfe2c2f43987
Repository: https://github.com/nextlag/gomart.git
Documentation: pkg.go.dev
# README
Accrual System API Server
Introduction
Этот сервер API взаимодействует с системой начисления, обеспечивая функциональные возможности, связанные с балансом пользователя, аутентификацией и управлением заказами. Он использует PostgreSQL для хранения данных и платформу Chi для маршрутизации и обслуживания запросов. Сервер включает в себя конечные точки для получения баланса пользователя, вывода бонусов, регистрации и аутентификации пользователей, а также загрузки и получения заказов. Кроме того, на сервере имеется промежуточное программное обеспечение для проверки аутентификации пользователя с помощью файлов cookie и сжатия данных.
Config: Флаги запуска
- -a сокет приложения (по умолчанию :8080)
- -d реквизиты доступа к бд
- -k установка секретного ключа для токена
- -l уровень логирования: info, debug, wrong, error, (по умолчанию info)
- -r сокет системы расчета начисления бонусов(по умолчанию :8081)
- -p путь к текущему проекту, обрезается при логировании (по умолчанию: /Users/nextbug/GoProjects/gomart/)
Balance
- GET /user/balance - получение баланса пользователя, включая снятую сумму
- POST /user/balance/withdraw - вывод бонусов пользователей
Auth
- POST /user/register - регистрация и аутентификация пользователя
- POST /user/login - аутентификация пользователя и установка файла cookie аутентификации
Order
- POST /user/orders - загрузка заказа на сервер
- GET /user/orders - получение заказов пользователей
- GET /user/withdrawals - получение заказов с потраченными бонусами
Project Structure
Описание директорий и файлов проекта
- cmd
- accrual - содержит двоичный файл системы начисления
- gophermart - содержит основной пакет
- main.go - основная функция
- internal
- config
- config.go - функции и структуры настройки конфигурации
- loglevel.go - определяет пользовательский тип LogLevelValue и реализует интерфейс flag.Value для него
- controllers - слой обработчиков запросов
- mosck
- mocsk.go - mocks слоя обработчика запросов
- authentication.go - аутентификация пользователя
- balance.go - получение текущего баланса, счёта, баллов лояльности пользователя
- controllers.go - содержит обработчики запросов для API
- controllers_test.go - тесты хендлеров
- get_orders.go - получение списка загруженных пользователем номеров заказов, статусов их обработки и информации о начислениях
- post_orders.go - загрузка пользователем номера заказа для расчёта
- register.go - регистрация пользователя
- withdraw.go - запрос на списание баллов с накопительного счёта в счёт оплаты нового заказа
- withdrawals.go - получение информации о выводе средств с накопительного счёта пользователем
- mosck
- entity - слой структур бизнес-логики
- entity.go - основные структуры бизнес-логики
- mw - middleware
- auth
- auth.go - пакет получения токена аутентификации
- cookie.go - middleware аутентификации
- gzip
- compress.go - пакет gzip, который обеспечивает сжатие и распаковку данных в формате gzip для HTTP-запросов и ответов
- gzip.go - middleware gzip
- logger
- slogger.go - middleware логгера
- auth
- repository
- psql
- psql.go функция инициализации базы данных postgres
- psql
- usecase слой бизнес-логики.
- accrual.go - взаимодействие с системой расчёта начислений баллов лояльности
- errors.go - ошибки
- mocks.go - mocks пакета usecase
- repository.go - бизнес-логика приложения
- storage.go - функции для работы с базой данных
- usecase.go - основной пакет usecase, содержащий интерфейс и структуру, представляющую бизнес-логику приложения
- config
- pkg
- generatestring
- generatestring.go - генератор строк
- logger
- slogpretty
- slogpretty.go - обертка логгера
- slogpretty
- luna
- luna.go - проверка валидности номера заказа алгоритмом 'Луна'
- generatestring