Files
amneziavpnphp/migrations/README.md
T
infosave2007 1f91f17f57 Add multilingual support with translations for German, Russian, French, and Chinese
Added time limits and backup functions for servers
2025-11-08 09:14:20 +03:00

55 lines
1.8 KiB
Markdown

# Database Migrations
This directory contains SQL migration files that are automatically executed when the database container is first initialized.
## Execution Order
Migration files are executed in **alphabetical order** by MySQL's Docker entrypoint. Files are numbered to ensure correct execution sequence:
1. `001_init.sql` - Main database schema and tables
2. `002_translations_ru.sql` - Russian translations
3. `003_translations_es.sql` - Spanish translations
4. `004_translations_de.sql` - German translations
5. `005_translations_fr.sql` - French translations
6. `006_translations_zh.sql` - Chinese translations
## Adding New Migrations
When creating new migration files:
1. Use numerical prefix (e.g., `007_add_feature.sql`)
2. Ensure the number is higher than existing migrations
3. Use descriptive names
4. Always use `ON DUPLICATE KEY UPDATE` for INSERT statements to make migrations idempotent
## Manual Execution
To manually run migrations in an existing database:
```bash
# Single migration
docker compose exec db mysql -uroot -prootpassword amnezia_panel < migrations/001_init.sql
# All migrations in order
for file in migrations/*.sql; do
echo "Executing $file..."
docker compose exec -T db mysql -uroot -prootpassword amnezia_panel < "$file"
done
```
## Regenerating Translation Migrations
To regenerate translation migrations from the current database:
```bash
# Export translations for a specific language
docker compose exec -T db mysql -uroot -prootpassword amnezia_panel \
--default-character-set=utf8mb4 \
-e "SELECT CONCAT('(''', language_code, ''', ''', translation_key, ''', ''',
REPLACE(translation_value, '''', ''''''), '''),')
FROM translations WHERE language_code = 'ru' ORDER BY translation_key;" \
| grep -v "CONCAT" > /tmp/translations_ru.sql
# Then wrap with INSERT statement and ON DUPLICATE KEY UPDATE
```