ozon-test

module
v0.0.0-...-f59f382 Latest Latest
Warning

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

Go to latest
Published: May 24, 2024 License: MIT

README

Тестовое задание для стажера-разработчика

Реализовать систему для добавления и чтения постов и комментариев с использованием GraphQL, аналогичную комментариям к постам на популярных платформах, таких как Хабр или Reddit.

Характеристики системы постов:
  • можно просмотреть список постов,
  • можно просмотреть пост и комментарии под ним,
  • пользователь, написавший пост, может запретить оставление комментариев к своему посту.
Характеристики системы комментариев к постам:
  • комментарии организованы иерархически, позволяя вложенность без ограничений,
  • длина текста комментария ограничена до, например, 2000 символов,
  • система пагинации для получения списка комментариев.
Требования к реализации:
  • система должна быть написана на языке Go,
  • использование Docker для распространения сервиса в виде Docker-образа,
  • хранение данных может быть как в памяти (in-memory), так и в PostgreSQL. Выбор хранилища должен быть определяемым параметром при запуске сервиса,
  • покрытие реализованного функционала unit-тестами.
Критерии оценки:
  • как хранятся комментарии и как организована таблица в базе данных/in-memory, включая механизм пагинации,
  • качество и чистота кода, структура проекта и распределение файлов по пакетам,
  • обработка ошибок в различных сценариях использования,
  • удобство и логичность использования системы комментариев,
  • эффективность работы системы при множественном одновременном использовании, сравнимая с популярными сервисами, такими как Хабр,
  • в реализации учитываются возможные проблемы с производительностью, такие как проблемы с n+1 запросами и большая вложенность комментариев.
Запуск:
  1. Сначала соберите образы Docker с помощью команды make build:

    make build
    
  2. Затем запустите проект с помощью команды make up:

    make up
    

Directories

Path Synopsis
cmd
app
internal

Jump to

Keyboard shortcuts

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