geco_managedb v1.5.2
UpgradeDB
Abstract
questo progetto è un sistema automatico di allineamento del database
Esegue l'esecuzione di tutti gli script DB presenti nella cartella src/db/migrate/sql e nelle sue sottocartelle che che non sono ancora stati eseguiti.
Gli script già eseguiti vengono memorizzati nella tablella definita nella function migrateDb
(il nome attualmente previsto è script_db), quindi il codice eseguirà solo i file presenti nel path indicato e non ancora applicati nel DB a cui si collega.
Errori bloccanti non bloccanti
L'esecuzione di uno script può fallire, in questo caso occorre prevedere come si deve comportare l'algoritmo. Ossia se deve bloccare l'esecuzione o ignorare l'errore. A tale scopo è stato decido di utilizzare un commento (SQL) opportunamente codificato, se la prima riga del codice inzia con:
-- TCMN_CODE:
Allora il codice controlla la seconda parte:
- se è presente la stringa NoBlockingError allora l'errore è NON bloccante
- se è presente la stringa BlockingError allora l'errore è bloccante
- se nella prima riga non è presente il commento
-- TCMN_CODE:<code>
allora lo script viene considerato non bloccante
Eempio di script:
-- TCMN_CODE:BlockingError - Questo è bloccante perché ......
create table pippo;
Nomenclatura dei file
Per un'esecuzione ordinata dei file questi devono avere un nome che ci consenta di ordinarli, a tale proposito è stato previsto che i file presenti nella suddetta directory sql
siano nominati nel seguente modo:
yyyy_mm_dd-nn-<nome_file>.sql
Note
- Se lo script è un insieme di istruzioni (ad esempio insert) verranno eseguite solo quelle possibili
- se si vuole che un determinato script venga eseguito indipendentemente da quelli che lo precedono, va messo in file a parte.
Run manuale
node runUpgardeDB.js
Nota: -p va dopo run perché è un option e va prima dell'immagine