chore(release): v0.942 — Compress (migration consolidation procedure, mark script)
Some checks failed
Backend API CI / test-unit (push) Failing after 0s
Backend API CI / test-integration (push) Failing after 0s

This commit is contained in:
senke 2026-03-02 19:05:54 +01:00
parent 7e015f8e73
commit 40fba3cbbf
5 changed files with 157 additions and 1 deletions

View file

@ -1 +1 @@
0.941 0.942

View file

@ -0,0 +1,46 @@
# Migration Consolidation — v0.942
## Contexte
Les migrations v0→v0.803 (~91 fichiers) sont consolidées en un schéma unique pour les nouvelles installations.
## Trois chemins
| Cas | Action |
|-----|--------|
| **DB vide** | Appliquer `000_full_schema.sql` (généré par pg_dump) |
| **DB existante** (déjà migrée) | Appliquer `000_mark_consolidated.sql` — marque sans modifier le schéma |
| **DB consolidée** | Appliquer les migrations incrémentales après consolidation |
## Générer le schéma complet
```bash
# Depuis une DB avec toutes les migrations appliquées
pg_dump -h localhost -U veza -d veza --schema-only --no-owner --no-privileges \
-f veza-backend-api/migrations/000_full_schema.sql
```
## Marquer une base existante
Pour une base qui a déjà exécuté les 91 migrations, exécuter manuellement :
```bash
psql $DATABASE_URL -f scripts/mark_consolidated.sql
```
Cela insère le marqueur dans `schema_migrations` sans modifier le schéma. L'outil de migration ignorera ensuite les anciennes migrations consolidées.
## Archive
Les migrations historiques sont archivées dans `veza-backend-api/migrations/archive/v0_to_v0803/` après consolidation. Voir le README de l'archive pour la liste complète.
## Test de parité
Valider que le schéma `000_full_schema.sql` produit un résultat équivalent aux 91 migrations :
```bash
# Optionnel : test avec testcontainers
go test ./tests/... -run MigrationParity -v
```
Validation manuelle acceptée si le test automatique n'est pas en place (plan de contingence v0.942).

13
scripts/generate_full_schema.sh Executable file
View file

@ -0,0 +1,13 @@
#!/usr/bin/env bash
# v0.942: Generate 000_full_schema.sql from a DB with all migrations applied.
# Prerequisite: PostgreSQL with veza DB, all migrations already run.
# Usage: ./scripts/generate_full_schema.sh
# Or: DATABASE_URL=postgres://... ./scripts/generate_full_schema.sh
set -e
DB_URL="${DATABASE_URL:-postgres://veza:veza_password@localhost:5432/veza?sslmode=disable}"
OUTPUT="veza-backend-api/migrations/000_full_schema.sql"
echo "Generating full schema from $DB_URL -> $OUTPUT"
pg_dump "$DB_URL" --schema-only --no-owner --no-privileges -f "$OUTPUT"
echo "Done. Review $OUTPUT before committing."

View file

@ -0,0 +1,90 @@
-- v0.942: Mark existing database as consolidated (no schema change)
-- Run this ONCE MANUALLY on databases that already have all migrations applied (v0→v0.803).
-- Do NOT add to migrations/ — it would corrupt new DBs.
-- Usage: psql $DATABASE_URL -f scripts/mark_consolidated.sql
-- See docs/MIGRATION_CONSOLIDATION.md
INSERT INTO schema_migrations (version) VALUES
('001_extensions_and_types.sql'),
('010_auth_and_users.sql'),
('011_cleanup_refresh_tokens.sql'),
('012_add_user_social_links.sql'),
('020_create_sessions.sql'),
('020_z_migration_rename_records.sql'),
('021_rbac_and_profiles.sql'),
('030_files_management.sql'),
('040_streaming_core.sql'),
('041_streaming_analytics.sql'),
('042_media_processing.sql'),
('043_analytics_events.sql'),
('044_playlist_share_links.sql'),
('045_user_follows.sql'),
('046_user_blocks.sql'),
('047_notifications.sql'),
('048_search_indexes.sql'),
('049_composite_indexes.sql'),
('050_data_validation_constraints.sql'),
('051_legacy_chat.sql'),
('052_stats_views.sql'),
('053_audit_triggers.sql'),
('060_job_queue.sql'),
('069_groups_and_members.sql'),
('070_create_social_tables.sql'),
('075_create_webhooks.sql'),
('076_create_gear_items.sql'),
('077_create_live_streams.sql'),
('078_add_missing_indexes.sql'),
('080_add_payment_fields.sql'),
('081_create_playback_analytics.sql'),
('082_create_api_keys.sql'),
('083_add_user_banner.sql'),
('084_add_track_lyrics.sql'),
('085_add_track_tags.sql'),
('086_add_pg_trgm.sql'),
('087_queue_sessions.sql'),
('088_user_presence.sql'),
('089_group_join_requests.sql'),
('090_push_subscriptions.sql'),
('091_user_presence_invisible.sql'),
('092_group_invitations.sql'),
('093_notification_preferences.sql'),
('094_user_presence_rich.sql'),
('095_products_enrichment.sql'),
('096_product_previews.sql'),
('097_product_images.sql'),
('098_product_licenses.sql'),
('099_promo_codes.sql'),
('100_orders_discount.sql'),
('101_product_reviews.sql'),
('102_license_revoked.sql'),
('103_tracks_waveform.sql'),
('104_user_folders.sql'),
('105_user_files.sql'),
('106_user_storage_quotas.sql'),
('107_gear_is_public.sql'),
('108_gear_images.sql'),
('109_read_receipts.sql'),
('110_delivered_status.sql'),
('111_message_reactions.sql'),
('112_messages_extra_columns.sql'),
('113_messages_fts.sql'),
('114_seller_stripe_accounts.sql'),
('115_seller_transfers.sql'),
('116_seller_transfers_retry.sql'),
('117_live_streams_go_live.sql'),
('118_user_preferences.sql'),
('119_cloud_file_versions.sql'),
('120_gear_warranty.sql'),
('121_gear_documents.sql'),
('122_gear_repairs.sql'),
('900_triggers_and_functions.sql'),
('910_create_audit_logs.sql'),
('920_add_performance_indexes.sql'),
('930_add_missing_foreign_keys.sql'),
('931_add_refresh_tokens_updated_at.sql'),
('932_add_user_deletion_fields.sql'),
('933_reports.sql'),
('934_announcements.sql'),
('935_feature_flags.sql'),
('936_oauth_states_pkce.sql')
ON CONFLICT (version) DO NOTHING;

View file

@ -0,0 +1,7 @@
# Migration Archive — v0.942
Ce dossier contiendra les migrations historiques (v0→v0.803) après consolidation complète.
Procédure : voir `docs/MIGRATION_CONSOLIDATION.md`.
État actuel : les migrations restent dans `migrations/` ; l'archive sera peuplée lors de la consolidation finale (000_full_schema.sql généré, outil migré).