Categorygithub.com/Alladan04/avito_test
module
0.0.0-20240417155756-9ba641757bdc
Repository: https://github.com/alladan04/avito_test.git
Documentation: pkg.go.dev

# README

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

  1. Убедитесь, что порты 6379 и 5432 ничем не заняты. Если заняты - освободить.
  2. В корне проекта создайте файл .env, пример содержания:

POSTGRES_USER = postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=testdb
REDIS_PASSWORD=1111

DATABASE_URL=postgres://postgres:postgres@postgres:5432/testdb
REDIS_URL=redis://default:1111@redis:6379/0?protocol=3
JWT_USER_SECRET=134
JWT_ADMIN_SECRET=5432
3. Из корня проекта выполните команду
make -f MakeFile start чтобы запустить контейнеры 4. Сервис будет запущен на порту 8080 5. По завершении работы с сервисом выполните команду
make -f MakeFile stop чтобы остановить контейнеры

Инструкция по запуску теста (сложно назвать это полноценным тестом, скорее набросок)

  1. Убедитесь, что порты 6379 и 5432 ничем не заняты. Если заняты - освободить.
  2. В корне проекта создайте файл .env, пример содержания:
    POSTGRES_USER = postgres
    POSTGRES_PASSWORD=postgres
    POSTGRES_DB=testdb
    REDIS_PASSWORD=1111

TEST_DB = postgres://postgres:postgres@postgres:5432/testdb
TEST_REDIS = redis://default:1111@redis:6379/0?protocol=31
3. Из корня проекта выполните команду
make -f MakeFile test

Вопросы

Вопросов было много, но зафиксировала лишь малую часть, например:

  • Писать ли авторизацию? В сваггере эндпоинтов для логина и прочих пользовательских действий не обозначено, но решила все равно их сделать. В зависимости от переданного при регистрации флага в теле запроса пользователь может быть зарегистрирован в качестве админа или просто пользователя.
  • Что делать, если при добавлении баннера тега или фичи не существует. Будем полагать, что тэги и фичи - некоторое заранее определенное множество значений, которое не меняется при работе с баннерами.
  • Как реализовать кеширование? Решила использовать redis, так как знакома с ним, это показалось оптимальным решением.

TODO

  • Сделать более точную обработку ошибок
  • Сделать нормальные тесты
  • Сделать валидацию полей при дообавлении/изменении заметки
  • Убрать ID юзера в некоторых местах
  • Сделать логирование
  • Сделать конфиг
  • Метрики

Что выполнено:

  • Работает кеширование ответов с использованием редис
  • Рабочий конфиг для запуска приложения в докере
  • Реализовано регулирование доступа к ресурсам с использованием двух типов токенов: админского и пользовательского
  • Написан небольшой пример интеграционного теста, который можно запустить в контейнере
  • Реализовано АПИ, указанное в задании
  • Написана конфигурация запуска линтеров

# Packages

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