Skip to content

Migrate database from MS SQL to PostgreSQL#164

Merged
davidleomay merged 3 commits intodevelopfrom
feat/mssql-to-postgres
Apr 17, 2026
Merged

Migrate database from MS SQL to PostgreSQL#164
davidleomay merged 3 commits intodevelopfrom
feat/mssql-to-postgres

Conversation

@TaprootFreak
Copy link
Copy Markdown
Contributor

@TaprootFreak TaprootFreak commented Apr 16, 2026

Summary

  • Switch TypeORM driver from mssql to postgres in config
  • Convert all 9 entity files: datetime2timestamp, floatdouble precision, nvarchar(MAX)text
  • Rewrite all 18 migration files from T-SQL to PostgreSQL syntax (IDENTITYSERIAL, getdate()CURRENT_TIMESTAMP, sp_renameALTER TABLE RENAME, etc.)
  • Fix raw SQL in monitoring repositories: FORMAT()TO_CHAR()
  • Replace MssqlDebugConfig with PostgresDebugConfig (blocked schemas, dangerous functions)
  • Swap docker-compose.yml from MS SQL Server 2022 to PostgreSQL 17
  • Update .env.example (port 5432, username postgres)
  • Remove mssql npm package (pg was already present)

Context

Part of the LDS migration (Stufe 1): MS SQL → PostgreSQL on Azure, before infrastructure move to DFX servers. See DFXServer/serverinfrastructure/migrations/lds-migration.md.

⚠️ Nicht einfach mergen und deployen!

Dieser PR enthält nur den Code-Umbau. Die API verbindet sich nach dem Deploy mit PostgreSQL — die Datenbank auf Azure ist aber noch MS SQL. Ohne Infrastruktur-Vorbereitung crasht die API.

Voraussetzungen vor dem Merge:

  1. Azure Database for PostgreSQL provisionieren (Flexible Server)
  2. Daten migrieren: Azure SQL Server → PostgreSQL (Schema + Daten)
  3. DEV zuerst: Auf app-lds-api-dev testen, bevor PRD umgestellt wird

Cutover-Ablauf (ca. 10 min Downtime):

  1. API auf Azure stoppen
  2. Letzten DB-Stand von MS SQL nach PostgreSQL übertragen
  3. Env-Vars (SQL_HOST, SQL_PORT, SQL_USERNAME, SQL_PASSWORD) auf PostgreSQL umstellen
  4. Diesen PR mergen + deployen
  5. API starten + alle Monitoring-Endpoints prüfen

Rollback:

Env-Vars zurück auf MS SQL, alten Code deployen (revert commit), API starten.

Test plan

  • Azure PostgreSQL Flexible Server provisioniert (DEV + PRD)
  • Daten von MS SQL nach PostgreSQL migriert
  • docker compose up -d → lokaler PostgreSQL startet
  • SQL_SYNCHRONIZE=true → Schema korrekt erstellt
  • API startet ohne Fehler
  • Alle 15 Monitoring-Endpoints antworten
  • Debug SQL Endpoint funktioniert mit PostgreSQL-Syntax
  • Balance History Grouping (hourly/daily) korrekte Ergebnisse
  • Lightning Swaps (submarine + reverse) funktionieren

Switch TypeORM driver from mssql to postgres, convert all entity column types
(datetime2→timestamp, float→double precision, nvarchar→text/varchar),
rewrite 18 migration files from T-SQL to PostgreSQL syntax, update raw SQL
queries (FORMAT→TO_CHAR), replace MssqlDebugConfig with PostgresDebugConfig,
and swap docker-compose from MS SQL Server to PostgreSQL 17.
@TaprootFreak TaprootFreak force-pushed the feat/mssql-to-postgres branch from f3dd06d to d0ded02 Compare April 16, 2026 13:40
@TaprootFreak TaprootFreak marked this pull request as ready for review April 16, 2026 13:43
- Fix ALTER COLUMN syntax in setupFrankencoinPay migration (DROP/SET NOT NULL)
- Convert SELECT TOP N to LIMIT N in db-debug.sh script
- Add pg_temp to blocked schemas in debug config
- Add missing dangerous functions (dblink_exec, dblink_connect, pg_sleep, pg_execute_server_program)
@davidleomay davidleomay merged commit 2ca68fe into develop Apr 17, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants