backend-trainee-assignment

command module
v0.0.0-...-f436a4a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 24, 2020 License: MIT Imports: 13 Imported by: 0

README

backend-trainee-assignment

Запуск:
Склонируйте (или скачайте руками) репозиторий, перейдите в директорию проекта и запустите docker-compose up.
При первом запуске будет произведена инициализация хранилища, поэтому в логе будет "многобуков".
Конфигурационные параметры приложения и хранилища задаются чз переменные окружения в docker-compose.yml+Dockerfile и storage/Dockerfile соответственно.

О реализации:

  • Хранилище данных: PostgreSQL.
    Хранилище доступно на порту 5432.
  • Паттерн: MVC
  • Формат ответа:
    {"Error":<данные>,"Result":<данные>}
    где Error - дополнительное описание ошибки (помимо информации, получаемой из HTTP-кода ошибки).
    И Error и Result могут быть null, это означает отсутствие ошибки/результата соответственно, причем HTTP-код ошибки может быть 200 - это значит что все в порядке, просто запрашиваемых данных нет.
  • На эндпоинте /chats/get сделал так, что отсортированы не только чаты в требуемом порядке, но и сообщения в каждом из них от позднего к раннему. Думаю, так будет удобнее фронту.
  • Лог при false (переменная окружения "APP_LOGMODE" в docker-compose.yml) пишет в stdout только ошибки от хранилища, при true пишет ошибки от хранилища + все запросы к нему в файл log.log рядом с экзешником. Т.е. этот параметр влияет только на то, какие сообщения от хранилища будут выводиться и куда.
    Все сообщения приложения, включая ошибки, всегда идут в stdout.
  • На /chats/add все дубли в "users" будут удалены молча.

Вопросы/Предложения

  1. Нужно ли на эндпоинте /chats/get подгружать все поля у вложенных сущностей? Например у юзера. Реализовал подгрузку только на 1 уровень вложенности.
  2. На маршруте /chats/get если в чатах нет сообщений, то такие чаты будут в самом конце выборки. Пойдет ли такое поведение или можно придумать что-нибудь получше?
  3. Не совсем хорошо знаю где какой http код применяется в случае ошибки, но оставил пока такие.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL