Sari la conținutul principal

Configurarea Datelor

Introducere​

Cu Netuno, dezvoltarea aplicațiilor trece mai întâi prin construirea bazei de date, prin construirea formularelor și câmpurilor.

Și când se lucrează în echipă sau este necesar să se transfere dezvoltarea aplicației într-un alt mediu, este necesar să se creeze o copie de siguranță a bazei de date împreună cu codul.

Astfel, la destinație va fi necesar să se reconfigureze baza de date și astfel aplicația va putea fi executată așa cum a fost dezvoltată la origine.

Problema acestui proces este efortul de a-ți aminti mereu să creezi o nouă copie de siguranță de fiecare dată când apare o modificare în baza de date. Și cu cât mai multe persoane sunt implicate în dezvoltare și/sau cu cât mai multe medii există pentru publicarea aplicației, cu atât acest proces devine mai complicat.

Așadar, Netuno, pentru a rezolva această problemă, aduce un sistem de setup al aplicațiilor, care generează automat structura bazei de date (schema) și, în plus, permite programarea manuală a încărcării datelor inițiale prin scripturi suplimentare.

De asemenea, permite schimbarea tipului de server de bază de date, garantând că setup-ul va fi executat în mod normal și aplicația fără nicio problemă. Aceasta înseamnă că aplicația poate fi dezvoltată în H2DataBase și, cu schemele generate automat, vei putea schimba conexiunea bazei de date a aplicației la PostgreSQL sau MariaDB. La prima execuție a aplicației pe noua bază de date, totul va fi reconstruit, indiferent de schimbarea tipului de server de bază de date.

Astfel, permite ca baza de date să fie complet schimbată fără a avea impact asupra dezvoltării deja realizate.

Fișierele de programare ale setup-ului se află în dosarul aplicației la:

  • server/setup

Configurarea Setup-ului​

În configurațiile de mediu ale aplicațiilor care se află în:

  • /apps/APP_MEA/config/_development.json
  • /apps/APP_MEA/config/_production.json

Vei putea manipula comportamentul 'setup-ului' prin configurațiile:

...
"setup": {
"enabled": true,
"schema": {
"auto_create": true,
"execution": true
},
"scripts": {
"execution": true
}
},
...
enabled: boolean > implicit true​

Definește dacă setup-ul este activ sau nu și astfel activează sau dezactivează, la prima execuție a aplicației, execuția operațiilor de setup al datelor.

schema.auto_create: boolean > implicit true​

Permite Netuno să știe dacă trebuie sau nu să genereze fișierele de schemă ale bazei de date ori de câte ori este creat sau modificat un formular sau un câmp.

schema.execution: boolean > implicit true​

Controlează dacă schema trebuie executată sau nu în timpul operațiilor de setup realizate la prima execuție a aplicației.

scripts.execution: boolean > implicit true​

Activează sau dezactivează execuția scripturilor suplimentare în timpul operațiilor de setup realizate la prima execuție a aplicației.

Schemă​

În timpul creării sau modificării formularelor și câmpurilor în interfața web Netuno, vor fi generate fișierele de schemă în dosarul setup, după cum urmează:

  • server/setup/_schema-NUME_FORMULAR.js

Unde va exista un fișier _schema-*** pentru fiecare formular existent în aplicație.

Aceste fișiere nu trebuie modificate manual, deoarece sunt generate automat de Netuno.

Astfel, dacă modifici conținutul acestor fișiere, la următoarea generare a schemelor vor fi înlocuite automat, iar modificările făcute direct în fișiere vor fi pierdute.

Pentru ca generarea automată a schemei bazei de date să fie executată, trebuie să te asiguri că configurația schema.auto_create este activă și că dosarul setup există în dosarul server.

Scripturi​

Scripturile de cod programate la comandă sunt fișiere aflate în dosarul setup care nu încep cu _.

Scopul principal al acestor scripturi este să încarce datele, garantând că baza de date conține informația minimă necesară pentru funcționarea corectă a aplicației.

Astfel, când aplicația va fi reconfigurată într-un alt mediu, va fi încărcată automat cu datele inițiale și va fi gata să înceapă utilizarea.

Pentru a realiza aceste operații de încărcare a datelor, va trebui să utilizezi funcțiile resursei _db.

Scripturile sunt executate după execuția schemelor, în ordine alfanumerică a numelui fișierelor care nu încep cu _.

Începerea numelui fișierelor cu o secvență numerică este ideală pentru a defini ordinea de execuție, așadar scripturile personalizate sunt executate în ordinea numelui fișierelor care nu încep cu _.

Inserarea Datelor Personalizate​

Și, pentru a economisi efortul de a face interogări în baza de date pentru a verifica dacă se poate face sau nu inserarea de date, Netuno oferă funcția insertIfNotExists.

Această funcție verifică dacă există datele exact așa cum sunt definite în baza de date; dacă nu există, atunci realizează crearea lor.

Un exemplu de utilizare a sa va fi încărcarea câmpurilor Cod și Nume din formularul Tip de Teritoriu, unde numele tabelului este tip_teritoriu și are coloanele cod și nume; pentru aceasta va fi suficient să creezi fișierul cu următorul conținut:

server/setup/001-tip_teritoriu.js
_db.insertIfNotExists("tip_teritoriu", _val.map()
.set("cod", "1001")
.set("nume", "Continental")
);
_db.insertIfNotExists("tip_teritoriu", _val.map()
.set("cod", "1002")
.set("nume", "Arhipelagic")
);
_db.insertIfNotExists("tip_teritoriu", _val.map()
.set("cod", "2003")
.set("nume", "Maritim")
);
_db.insertIfNotExists("tip_teritoriu", _val.map()
.set("cod", "3004")
.set("nume", "Aerian")
);

Ciclul de Procesare​

După cum s-a explicat deja, setup-ul este executat doar la prima execuție a aplicației.

Iar ordinea de execuție este:

  1. _start - execută fișierul de inițializare care poate conține orice tip de programare personalizată:
    • APP_MEA/server/setup/_start.js
  2. _cleanup - execută eliminarea formularelor, rapoartelor și câmpurilor respective în mod programatic:
    • APP_MEA/server/setup/_cleanup.js
  3. _schema-* - execută toate scripturile cu prefixul _schema-, conține comenzile de creare a formularelor, rapoartelor și câmpurilor respective:
    • APP_MEA/server/setup/_schema-structura_autogenerata.js
    • APP_MEA/server/setup/_schema-categorie.js
    • APP_MEA/server/setup/_schema-produs.js
    • APP_MEA/server/setup/_schema-client.js
  4. 001-alte_scripturi - execută fișierele de scripturi programate la comandă, sunt toate fișierele care nu încep cu _ și care probabil vor conține inserările de date inițiale necesare sau alte dezvoltări personalizate, de exemplu:
    • APP_MEA/server/setup/001-insereaza_date_personalizate.js
    • APP_MEA/server/setup/002-categorie.js
    • APP_MEA/server/setup/003-produs.js
    • APP_MEA/server/setup/004-client.js
  5. _end - execută fișierul de finalizare care poate conține orice tip de programare personalizată:
    • APP_MEA/server/setup/_end.js

Adică este permisă crearea de cod la comandă în scripturile start și end pentru a realiza unele operații care are sens să fie executate înainte de setup sau chiar când acesta este finalizat.

Este bine să reamintim că acest ciclu de procesare este executat de fiecare dată când aplicația este executată pentru prima dată, de aceea este necesar să se garanteze verificarea existenței datelor înainte de a realiza crearea lor.

Asigură-te că următoarele configurații de mediu sunt active pentru a permite execuția acestui proces în fișierele APP_MEA/config/_development.json sau APP_MEA/config/_production.json, în funcție de mediu:

  • Activează sau dezactivează complet execuția oricărei operații de setup:

    setup.enabled = true|false

  • Activează sau dezactivează execuția _schemelor-:

    setup.schema.execution = true|false

  • Activează sau dezactivează execuția scripturilor:

    setup.scripts.execution = true|false

Curățare​

Pentru a programa eliminarea formularelor și câmpurilor, trebuie să utilizăm scriptul _cleanup.js, ceea ce garantează că, în toate mediile care sincronizează fișierele proiectului, la execuția setup-ului structura va fi eliminată, dacă există.

Exemplu de script de curățare:

server/setup/_cleanup.js
// Elimină formularul zona:
_form.dropIfExists("zona");
// Elimină câmpul subarie_id din formularul arie:
_form.dropFieldIfExists("arie", "subarie_id");

DBML​

De fiecare dată când Netuno execută setup-ul datelor, este generat fișierul:

  • server/setup/_db-schema.dbml

Acesta este fișierul cu întreaga structură de date care poate fi utilizat cu Inteligență Artificială.

Pe baza conținutului DBML, Inteligența Artificială înțelege structura de date și poate genera interogări SQL precise.

Încearcă să utilizezi acest fișier ca atașament în prompt și cere să generezi interogări SQL complexe; vei obține rezultate bune.

Concluzie​

Procesul de setup al aplicațiilor în Netuno are ca principale funcții:

  • _schema-: generează automat întreaga structură de formulare și rapoarte cu câmpurile lor respective, care permit garantarea întregii coerențe a structurii bazei de date a aplicației, în special când aplicația este executată cu o nouă bază de date goală.
  • scripturi: realizează operații de bază de date pentru a garanta că aplicația conține datele obligatorii preîncărcate anterior de fiecare dată când este executată pentru prima dată.

În acest fel, Netuno permite ca aplicațiile să funcționeze în medii noi, chiar dacă se schimbă tipul bazei de date, garantând funcționarea corectă a aplicației fără necesitatea de a realiza copii de siguranță și restaurare ale bazelor de date.

Permițând în plus ca tot codul de configurare generat automat și manual să fie versionat cu GIT, de exemplu.