Skip to content

steqa/avito-tech-internship

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Avito Tech Internship 💙

Сервис, который назначает ревьюеров на PR из команды автора, позволяет выполнять переназначение ревьюверов и получать список PR’ов, назначенных конкретному пользователю, а также управлять командами и активностью пользователей.

Go PostgreSQL Docker

Содержание

  1. Быстрый старт
  2. Эндпоинты
  3. Коды ошибок
  4. Нагрузочное тестирование
  5. Миграции
  6. Структура проекта
  7. Требования
  8. Лицензия

Быстрый старт

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

    git clone https://github.com/steqa/avito-tech-internship.git project-folder
  2. Соберите и запустите Docker-контейнеры

    cd project-folder
    docker compose up
  3. API будет доступен по адресу: http://localhost:8080

Эндпоинты

Описаны в документации.

❗ Реализован эндпоинт для получения статистики: GET /stats.

Коды ошибок

  • TEAM_EXISTS, USER_EXISTS, PR_MERGED, NOT_ASSIGNED, NO_CANDIDATE, PR_EXISTS
  • NOT_FOUND
  • BAD_REQUEST (агрегация валидационных ошибок)
  • RATE_LIMIT
  • INTERNAL

❗ Замечание: реализация содержит больше кодов ошибок, чем указано в документации.

Нагрузочное тестирование

Проведено с помощью Locust для трех эндпоинтов:

  • POST /pullRequest/reassign

    Requests Fails Median (ms) Average (ms) Current RPS
    31948 0 6 6.08 747.9
  • POST /team/add

    Requests Fails Median (ms) Average (ms) Current RPS
    129037 0 120 130.98 1136
  • GET /team/get

    Requests Fails Median (ms) Average (ms) Current RPS
    58344 0 92 95.4 1607.7

Файлы сценария: locust.

Миграции

Применяются автоматически при запуске Docker контейнеров с помощью migrate.

  • Применение

    docker compose run --rm migrate -path=/migrations -database="postgres://postgres:postgres@postgres:5432/avito-tech-internship?sslmode=disable" up
  • Откат

    docker compose run --rm migrate -path=/migrations -database="postgres://postgres:postgres@postgres:5432/avito-tech-internship?sslmode=disable" down -all

Структура проекта

cmd/app/               точка входа
internal/
    config/            конфигурация приложения
    domain/            модели домена
    errorsx/           ошибки приложения
    repository/        работа с БД
    service/           бизнес-логика
    transport/http/  
        dto/           схемы запросов/ответов
        handler/       HTTP обработчики
        errors.go      HTTP ошибки
    utils/             вспомогательные функции
migrations/            миграции базы данных
.env                   файл с переменными окружения
docker-compose.yml     Docker Compose файл
Dockerfile             Docker файл

Требования

Убедитесь, что Docker установлен и запущен на вашей системе. Скачать Docker можно здесь.

Лицензия

Этот проект распространяется под лицензией MIT. Подробнее см. в файле LICENSE.

About

The service, which assigns reviewers to PR from the author's team, allows you to reassign reviewers and get a list of PRS assigned to a specific user, as well as manage teams and user activity.

Topics

Resources

License

Stars

Watchers

Forks

Contributors