Skip to content

Latest commit

 

History

History
93 lines (55 loc) · 6.35 KB

README.md

File metadata and controls

93 lines (55 loc) · 6.35 KB

Pumpkin (Trello clone)

by team RPO

Менторы:

Репозиторий фронтенда

Ссылка на деплой

Ссылка на Swagger

Стандарты разработки

  • Все комментарии на русском языке
  • Все логи на английском языке
  • У аббревиатур все буквы в одном регистре: sessionId sessionID
  • В импортах между нашими пакетами и стандартными должна быть пустая строка

Запуск сервера

Docker

Сначала надо убедиться, что в трёх файлах используется не CRLF, а LF:

  • /database/postgres/start-postgres.sh
  • /database/postgres/certgen.sh
  • /database/redis/start-redis.sh

Далее надо сгенерировать сертификаты для Postgres вызовом скрипта /database/postgres/certgen.sh. Вызывать его надо в той директории, где находится скрипт. Возможно, надо поставить OpenSSL. Этот скрипт сгенерирует самоподписанные сертификаты.

Надо оформить файл .env. Пример:

CORS_ORIGIN = https://example.com

SERVER_NAME = example.com

# Важно - замыкающий слеш!
USER_UPLOADS_URL = https://example.com/uploads/

# Эту переменную надо задавать, если Вам надо создать миграции с помощью Atlas
TEST_DATABASE_URL = postgresql://3kybika:12345678@localhost:5432/migrate_gen_db?sslmode=disable

Далее надо подтянуть сертификаты для самого бэкенда. На проде надо сделать символьные ссылки на сертификаты в директории certs. На локальной машине можно сгенерировать сертификаты для локалхоста через make gen-test-certs. В директории certs должно быть два файла: cert.crt и cert.pem

Потом можно запускать сами сервисы через Docker. Команда:

make build_all -j && docker compose up --build -d

Эта команда на хост-машине соберёт все бинари и будет исполнять их на докерах.

Это ещё не все шаги: мы не накатили миграции. Для миграций надо зайти в контейнер auth_service и там вызвать команду make migrate-up. Имейте в виду, что auth_service, если не смог подключиться к PostgreSQL, ждёт 100 секунд, чтобы мы смогли накатить миграции и создать базу данных. Также имейте в виду, что контейнер с PostgreSQL при первом запуске запускает наш самописный скрипт инициализации, поэтому не спешите выключать контейнер, дождитесь, пока база создастся.

Caution

Часто бывает, что в volume, где хранится сокет PostgreSQL, слетают права. Тогда postgres завершает свою работу, и бэк ложится. Если такой случай произошёл, надо удалить все контейнеры, удалить volume pumpkin-postgres-socket и заново поднять docker compose

Запуск тестов

Надо сделать всё, что нужно для запуска сервера, но вместо make run запустить make test. Чтобы получить информацию о покрытии, надо запустить make coverage

Схема базы данных

Актуальная модель данных находится в директории database/schema.sql

Для создания миграций используется программа Atlas. Для применения используется go-migrate

После изменения модели данных надо сгенерировать миграцию. Чтобы её сгенерировать, понадобится dev-база (и развёрнутый Postgres), потому что без него Atlas не создаст миграции.

URL dev-базы надо указать в файлe .env по имени TEST_DATABASE_URL. Эта база должна быть пустая; после работы atlas очистит всё, что он насоздавал. У пользователя, который указан в TEST_DATABASE_URL должны быть все права на базу, а также права на создание ролей. Его имя должно быть "postgres"

Миграцию надо генерировать командой make make-migrations. Имя миграции не должно содержать пробелы, должно быть типа add_tags_table

Применять миграции надо командой make migrate-up. Команда интерактивно попросит логин и пароль от root-пользователя. На проде надо делать миграции пользователем postgres. Применение миграций доступно только из контейнера auth.