Skip to content

Інструкції для застосування міграцій MicroDAO Dashboard

Варіант 1: Використання скрипта (рекомендовано)

На NODE1 (сервер з базою даних):

# Перейти в директорію проєкту
cd /path/to/microdao-daarion

# Застосувати міграції
./scripts/apply_microdao_dashboard_migrations.sh postgres daarion localhost

Якщо база даних на іншому хості:

./scripts/apply_microdao_dashboard_migrations.sh postgres daarion your-db-host

Варіант 2: Ручне застосування

Крок 1: Застосувати міграцію 044

psql -U postgres -d daarion -f migrations/044_microdao_activity.sql

Крок 2: Застосувати міграцію 045

psql -U postgres -d daarion -f migrations/045_microdao_stats.sql

Крок 3: Застосувати seed-дані

psql -U postgres -d daarion -f docs/sql/seed_microdao_activity_daarion.sql

Варіант 3: Через Docker (якщо БД в контейнері)

# Знайти контейнер з PostgreSQL
docker ps | grep postgres

# Застосувати міграції
docker exec -i <postgres-container-name> psql -U postgres -d daarion < migrations/044_microdao_activity.sql
docker exec -i <postgres-container-name> psql -U postgres -d daarion < migrations/045_microdao_stats.sql
docker exec -i <postgres-container-name> psql -U postgres -d daarion < docs/sql/seed_microdao_activity_daarion.sql

Перевірка результатів

Перевірити таблицю активності:

SELECT COUNT(*) FROM microdao_activity WHERE microdao_slug = 'daarion';
-- Має повернути 10 записів

Перевірити структуру:

\d microdao_activity

Перевірити нові стовпці:

SELECT column_name, data_type 
FROM information_schema.columns 
WHERE table_name = 'microdaos' 
  AND column_name IN ('citizens_count', 'rooms_count', 'agents_count', 'last_update_at');

Після застосування міграцій

  1. Перезапустити city-service: bash docker-compose restart city-service # або systemctl restart daarion-city-service

  2. Перезапустити web (якщо потрібно): bash docker-compose restart web

  3. Перевірити API: bash curl http://localhost:7001/city/microdao/daarion/dashboard

Troubleshooting

Помилка "relation already exists"

Якщо таблиця вже існує, міграції використовують CREATE TABLE IF NOT EXISTS, тому це нормально.

Помилка "column already exists"

Якщо стовпці вже існують, міграція використовує ADD COLUMN IF NOT EXISTS, тому це нормально.

Помилка "duplicate key value"

Якщо seed-дані вже застосовані, можна пропустити цей крок або видалити існуючі записи:

DELETE FROM microdao_activity WHERE microdao_slug = 'daarion';
-- Потім застосувати seed-дані знову