Skip to content

garaevmir/AvitoCoinStore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AvitoCoinStore

Инструкция по запуску

Для запуска сервиса нужен установленный docker, тогда достаточно выполнить следующую команду:

  1. Установите Docker и Docker Compose (если не установлены)

  2. Клонируйте репозиторий

    git clone https://github.com/garaevmir/AvitoCoinStore.git
  1. Перейдите в директорию проекта
    cd avito-coin-store
  1. Запустите сервис
    docker-compose up --build

После запуска контейнера, сервер будет доступен в localhost:8080

Использованный стек

Язык сервиса: Go

База данных: PostgreSQL

Контейнеризация: Docker + Docker Compose

Линтер: golangci-lint

Аутентификация: JWT (секрет в .env)

Выполненно

  • Сервис соответствует API

  • После первой и последующих авторизаций генерируется и выдаётся личный JWT токен для пользователя. Для генерации используется скрытый от внешнего наблюдателя user_id и секретное слово объявленное в файле .env

  • Написаны юнит тесты для хендлеров и функций взаимодействующих с базой данных (подробнее в отдельной папке tests)

  • Написано интеграционное тестирование для разных сценариев работы (см. tests)

  • Проведено нагрузочное тестирование (см. tests)

  • Конфигурацию линтера можно посмотреть в файле .golangci.yaml

  • Большинство функций имеют краткое описание того что они делают и для чего нужны

Примечания

  • Вообще по-хорошему файл .env не должен быть запушен и более того, .env файл отдельно перечислен в .gitignore, однако я решил, что лучше будет если он будет доступен сразу после клонирования в репозиторий. Тем более что там не лежит ничего ценного.

  • Для тестирования отдельных частей кода приходилось делать специальные интерфейсы, что среди прочего привело к появлению обертки над pgxpool.Pool, однако позволило добиться большего покрытия тестами.

  • Для соблюдения атомарности трансферов монет и покупок используются транзакции.

  • База данных создаётся из файла init.sql

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors