UNPKG

mp-holistic

Version:

si prefigge l'umile compito di aiutare nella creazione di : - un server API REST mediante express - un semplice ORM per Postgres Questo tramite decoratori o classi particolari.

392 lines 18.6 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.MainPostgres = exports.EseguiQueryControllata = void 0; const pg_1 = require("pg"); const metadata_1 = require("../metadata"); const classe_postgres_1 = require("./classe.postgres"); const policy_1 = require("./policy"); const fs_1 = __importDefault(require("fs")); function EseguiQueryControllata(client, query) { return __awaiter(this, void 0, void 0, function* () { try { if (query != "") { yield client.query(query); console.log('ESEGUITOO : \n' + query); return { index: 0, errore: undefined, risultato: query }; } return { index: 0, errore: undefined, risultato: query }; } catch (error) { console.log('\n\nINIZIO Errroe : \n**********************\n\n'); console.log('-Query:\n' + query + '\n\n'); console.log('-Error:\n' + error); console.log('\n\nFINE Errroe : \n**********************\n\n'); return { index: 0, errore: { query: query, errore: '' + error }, risultato: undefined }; } }); } exports.EseguiQueryControllata = EseguiQueryControllata; class MainPostgres { constructor() { this.listaRuoli = []; this.listaUser = []; this.elencoQuery = []; this.listaRuoli = []; this.listaUser = []; this.listaClassi = (0, metadata_1.GetListaClasseMeta)('nomeMetadataKeyTargetFor_Postgres', () => { return new classe_postgres_1.ListaPostgresClasse(); }); } InizializzaORM(item) { var _a, _b, _c, _d; try { if (item == undefined) item = {}; const ritorno = ''; this.elencoQuery.push(`CREATE EXTENSION plv8;`); if (item.dropAllTable == undefined || item.dropAllTable == true) { this.elencoQuery.push((0, classe_postgres_1.DropAllTable)()); } this.elencoQuery.push((0, classe_postgres_1.TriggerUpdate_updated_at_column)()); this.InizializzaRuoli(this.elencoQuery, (_a = item.listaRuoli) !== null && _a !== void 0 ? _a : []); this.InizializzaUser(this.elencoQuery, (_b = item.listaUser) !== null && _b !== void 0 ? _b : []); /* */ for (const element of this.listaClassi) { element.CostruisciCreazioneDB(this.elencoQuery, true); } /* for (const element of this.listaClassi) { (<PostgresClasse>element).CostruisciCreazioneDB(this.elencoQuery, false); } */ for (const element of this.listaClassi) { element.CostruisciRelazioniDB(this.elencoQuery); } for (const element of this.listaClassi) { element.CostruisceGrant((_c = element.grants) !== null && _c !== void 0 ? _c : [], this.elencoQuery); } for (const element of this.listaClassi) { if (element.listaPolicy) { ((_d = element.listaPolicy) !== null && _d !== void 0 ? _d : new policy_1.ListaPolicy()).CostruiscePolicySicurezza(this.elencoQuery); } } this.InizializzaRuoliGrantGenerale(this.elencoQuery, this.listaRuoli); this.InizializzaUserGrantGenerale(this.elencoQuery, this.listaUser); return ritorno; } catch (error) { console.log(''); throw error; } } IstanziaORM(client) { return __awaiter(this, void 0, void 0, function* () { try { yield client.connect(); //console.log('\n!!!!!!?????######\n\n\n\n' + orm + '\n\n\n\n\n\n!!!!!!?????######\n'); const vetRisultatiQuery = []; for (let index = 0; index < this.elencoQuery.length; index++) { const element = this.elencoQuery[index]; const tmp = yield EseguiQueryControllata(client, element); tmp.index = index; vetRisultatiQuery.push(tmp); } console.log('*******'); console.log('\n\n\n'); // console.log(orm); console.log('\n\n\n'); console.log('*******'); let count = 0; const tmp1 = []; for (let index = 0; index < vetRisultatiQuery.length; index++) { const element = vetRisultatiQuery[index]; if (element.errore) { console.log(element.errore); tmp1.push(element.errore); count++; } } console.log('*******'); console.log('\n\n\n'); console.log('Query finiti in errore: \n'); // console.log(orm); console.log(count); console.log('\n\n\n'); console.log('*******'); const tmp2 = []; count = 0; for (let index = 0; index < vetRisultatiQuery.length; index++) { const element = vetRisultatiQuery[index]; if (element.risultato) { console.log(element.risultato); tmp2.push(element.risultato); count++; } } console.log('*******'); console.log('\n\n\n'); console.log('Query finiti in eseguite: \n'); // console.log(orm); console.log(count); console.log('\n\n\n'); console.log('*******'); count = 0; } catch (error) { console.log(error); } }); } IstanziaTutto(client) { return __awaiter(this, void 0, void 0, function* () { this.InizializzaORM(); yield this.IstanziaORM(client); }); } EseguiListaQuery(clientConnection, querys) { return __awaiter(this, void 0, void 0, function* () { const tmp = yield this.EseguiQueryControllata(clientConnection, querys); return tmp; }); } InizializzaRuoli(/* client: Client */ elencoQuery, listaRuoli) { let ritornoTmp = ''; if (listaRuoli) { for (let index = 0; index < listaRuoli.length; index++) { const element = listaRuoli[index]; const faxs = `CREATE ROLE "${element.nome}" WITH ${element.option.isSuperUser != undefined && element.option.isSuperUser == true ? 'SUPERUSER' : 'NOSUPERUSER'} ${element.option.creaDB != undefined && element.option.creaDB == true ? 'CREATEDB' : 'NOCREATEDB'} ${element.option.creaUser != undefined && element.option.creaUser == true ? 'CREATEROLE' : 'NOCREATEROLE'} INHERIT ${element.option.login != undefined && element.option.login == true ? 'LOGIN' : 'NOLOGIN'} NOREPLICATION NOBYPASSRLS ENCRYPTED PASSWORD '${element.password}' ${element.connectionLimit != undefined ? 'CONNECTION LIMIT ' + element.connectionLimit : ''} ; \n`; const faxsDrop = `DROP ROLE IF EXISTS "${element.nome}";`; elencoQuery.push(faxsDrop); elencoQuery.push(faxs); ritornoTmp = faxs; this.listaRuoli.push(element); } } return ritornoTmp; } InizializzaRuoliGrantGenerale(/* client: Client */ elencoQuery, listaRuoli) { let ritornoTmp = ''; if (listaRuoli) { for (let index = 0; index < listaRuoli.length; index++) { const element = listaRuoli[index]; const faxSchema = `GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO "${element.nome}";`; elencoQuery.push(faxSchema); const faxFunction = `GRANT EXECUTE ON ALL functions IN SCHEMA public TO "${element.nome}";`; elencoQuery.push(faxFunction); ritornoTmp = faxSchema; } } return ritornoTmp; } InizializzaUser(/* client: Client */ elencoQuery, listaUser) { let ritornoTmp = ''; if (listaUser) { for (let index = 0; index < listaUser.length; index++) { const element = listaUser[index]; const costruisciRuoli = this.CostruisciRuoli(element.inRole); const faxs = `CREATE USER "${element.nome}" WITH ${element.option.isSuperUser != undefined && element.option.isSuperUser == true ? 'SUPERUSER' : 'NOSUPERUSER'} ${element.option.creaDB != undefined && element.option.creaDB == true ? 'CREATEDB' : 'NOCREATEDB'} ${element.option.creaUser != undefined && element.option.creaUser == true ? 'CREATEROLE' : 'NOCREATEROLE'} INHERIT ${element.option.login != undefined && element.option.login == true ? 'LOGIN' : 'NOLOGIN'} NOREPLICATION NOBYPASSRLS PASSWORD '${element.password}' ${element.connectionLimit != undefined ? 'CONNECTION LIMIT ' + element.connectionLimit : ''} IN ROLE ${costruisciRuoli} ; \n`; const faxsDrop = `DROP USER IF EXISTS "${element.nome}";`; elencoQuery.push(faxsDrop); elencoQuery.push(faxs); this.listaUser.push(element); ritornoTmp = ritornoTmp + faxs; } } return ritornoTmp; } InizializzaUserGrantGenerale(/* client: Client */ elencoQuery, listaUser) { let ritornoTmp = ''; if (listaUser) { for (let index = 0; index < listaUser.length; index++) { const element = listaUser[index]; const faxSchema = `GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO "${element.nome}";`; elencoQuery.push(faxSchema); const faxFunction = `GRANT EXECUTE ON ALL functions IN SCHEMA public TO "${element.nome}";`; elencoQuery.push(faxFunction); ritornoTmp = ritornoTmp + faxSchema; } } return ritornoTmp; } CostruisciRuoli(item) { let ritorno = ''; for (let index = 0; index < item.length; index++) { const element = item[index]; if (index + 1 <= item.length && index != 0) ritorno = ritorno + ', ' + element; else ritorno = ritorno + ' ' + element; } return ritorno; } EseguiQueryControllata(clientConnection, querys) { return __awaiter(this, void 0, void 0, function* () { try { const db = new pg_1.Client({ host: clientConnection.host, port: clientConnection.port, user: clientConnection.user, password: clientConnection.password, database: clientConnection.database }); yield db.connect(); const vetRisultatiQuery = []; for (let index = 0; index < querys.length; index++) { const element = querys[index]; try { /* const result = */ yield db.query(element); console.log('ESEGUITOO : \n' + element); vetRisultatiQuery.push({ index: index, errore: undefined, risultato: element }); } catch (error) { console.log('\n\nINIZIO Errroe : \n**********************\n\n'); console.log('-Query:\n' + element + '\n\n'); console.log('-Error:\n' + error); console.log('\n\nFINE Errroe : \n**********************\n\n'); vetRisultatiQuery.push({ index: index, errore: { query: element, errore: '' + error }, risultato: undefined }); } } return vetRisultatiQuery; } catch (err) { console.log(err); throw err; } }); } ScriviFile(pathDoveScrivereFile) { var _a, _b, _c, _d, _e; try { try { fs_1.default.rmSync(pathDoveScrivereFile + '/FileGenerati_MP/postgres', { recursive: true }); } catch (error) { console.log("..."); } fs_1.default.mkdirSync(pathDoveScrivereFile + '/FileGenerati_MP/postgres', { recursive: true }); try { const path = pathDoveScrivereFile + '/FileGenerati_MP' + '/postgres'; let query = []; fs_1.default.mkdirSync(path + '/Generici', { recursive: true }); for (let index = 0; index < this.elencoQuery.length; index++) { const element = this.elencoQuery[index]; //fs.writeFileSync(path + '/exe.dump', element.toString()); fs_1.default.appendFileSync(path + '/exe.dump', '\n' + element.toString()); } for (const element of this.listaClassi) { element.CostruisciCreazioneDB(query, false); } //fs.writeFileSync(path + '/Generici/relazioni.generale', query.toString()); fs_1.default.appendFileSync(path + '/Generici/relazioni.generale', '\n' + query.toString()); query = []; for (const element of this.listaClassi) { element.CostruisceGrant((_a = element.grants) !== null && _a !== void 0 ? _a : [], query); } //fs.writeFileSync(path + '/Generici/grant.generale', query.toString()); fs_1.default.appendFileSync(path + '/Generici/grant.generale', '\n' + query.toString()); query = []; for (const element of this.listaClassi) { if (element.listaPolicy) { ((_b = element.listaPolicy) !== null && _b !== void 0 ? _b : new policy_1.ListaPolicy()).CostruiscePolicySicurezza(query); //fs.writeFileSync(path + '/Generici/policy.generale', query.toString()); fs_1.default.appendFileSync(path + '/Generici/policy.generale', '\n' + query.toString()); } } /* */ query = []; fs_1.default.mkdirSync(path + '/Specifici', { recursive: true }); for (const element of this.listaClassi) { const pathSpec = path + '/Specifici/' + element.nomeOriginale; fs_1.default.mkdirSync(pathSpec, { recursive: true }); query = []; element.CostruisciCreazioneDB(query, false); //fs.writeFileSync(pathSpec + '/relazioni.' + element.nomeOriginale, query.toString()); fs_1.default.appendFileSync(pathSpec + '/relazioni.' + element.nomeOriginale, '\n' + query.toString()); query = []; element.CostruisceGrant((_c = element.grants) !== null && _c !== void 0 ? _c : [], query); //fs.writeFileSync(pathSpec + '/grant.' + element.nomeOriginale, query.toString()); fs_1.default.appendFileSync(pathSpec + '/grant.' + element.nomeOriginale, '\n' + query.toString()); if (element.listaPolicy) { query = []; ((_d = element.listaPolicy) !== null && _d !== void 0 ? _d : new policy_1.ListaPolicy()).CostruiscePolicySicurezza(query); //fs.writeFileSync(pathSpec + '/policy.' + element.nomeOriginale, query.toString()); fs_1.default.appendFileSync(pathSpec + '/policy.' + element.nomeOriginale, '\n' + query.toString()); } } } catch (error) { console.log(error); } return ''; } catch (error) { console.log(error); return (_e = error.message) !== null && _e !== void 0 ? _e : ''; } } } exports.MainPostgres = MainPostgres; //# sourceMappingURL=main.postgres.js.map