Skip to content

Проект Trello на курсе vk education команды РПО

Notifications You must be signed in to change notification settings

go-park-mail-ru/2024_2_RPO

Repository files navigation

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.

About

Проект Trello на курсе vk education команды РПО

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages