Categorygithub.com/nextlag/gomart
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: Флаги запуска

  1. -a сокет приложения (по умолчанию :8080)
  2. -d реквизиты доступа к бд
  3. -k установка секретного ключа для токена
  4. -l уровень логирования: info, debug, wrong, error, (по умолчанию info)
  5. -r сокет системы расчета начисления бонусов(по умолчанию :8081)
  6. -p путь к текущему проекту, обрезается при логировании (по умолчанию: /Users/nextbug/GoProjects/gomart/)

Balance

  1. GET /user/balance - получение баланса пользователя, включая снятую сумму
  2. POST /user/balance/withdraw - вывод бонусов пользователей

Auth

  1. POST /user/register - регистрация и аутентификация пользователя
  2. POST /user/login - аутентификация пользователя и установка файла cookie аутентификации

Order

  1. POST /user/orders - загрузка заказа на сервер
  2. GET /user/orders - получение заказов пользователей
  3. 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 - получение информации о выводе средств с накопительного счёта пользователем
    • 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 логгера
    • repository
      • psql
        • psql.go функция инициализации базы данных postgres
    • usecase слой бизнес-логики.
      • accrual.go - взаимодействие с системой расчёта начислений баллов лояльности
      • errors.go - ошибки
      • mocks.go - mocks пакета usecase
      • repository.go - бизнес-логика приложения
      • storage.go - функции для работы с базой данных
      • usecase.go - основной пакет usecase, содержащий интерфейс и структуру, представляющую бизнес-логику приложения
  • pkg
    • generatestring
      • generatestring.go - генератор строк
    • logger
      • slogpretty
        • slogpretty.go - обертка логгера
    • luna
      • luna.go - проверка валидности номера заказа алгоритмом 'Луна'

# Packages

No description provided by the author
No description provided by the author