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.

155 lines (141 loc) 6.69 kB
import { IReturn, ConstruisciErrore } from "../utility/utility"; import { Request } from "express"; import fs from 'fs'; import { SanificatoreCampo } from "../utility/SanificatoreCampo"; import { RispostaControllo } from "../utility/RispostaControllo"; import { Risposta } from "../utility/Risposta"; import { IClasseRiferimento, IHtml } from "./utility"; export interface IMetodoVettori { ListaSanificatori?: SanificatoreCampo[]; RisposteDiControllo?: RispostaControllo[]; nomiClasseRiferimento?: IClasseRiferimento[]; listaHtml?: IHtml[]; } export class MetodoVettori implements IMetodoVettori { ListaSanificatori?: SanificatoreCampo[]; RisposteDiControllo?: RispostaControllo[]; nomiClasseRiferimento?: IClasseRiferimento[]; listaHtml: IHtml[] = []; Init(init: IMetodoVettori) { if (init.nomiClasseRiferimento != undefined) this.nomiClasseRiferimento = init.nomiClasseRiferimento; if (init.ListaSanificatori) this.ListaSanificatori = init.ListaSanificatori; if (init.RisposteDiControllo) this.RisposteDiControllo = init.RisposteDiControllo; if (init.listaHtml) { for (let index = 0; index < init.listaHtml.length; index++) { const element = init.listaHtml[index]; if (element.percorsoIndipendente == undefined) element.percorsoIndipendente = false; if (element.html != undefined && element.htmlPath == undefined && this.listaHtml.find(x => { if (x.path == element.path) return true; else return false; }) == undefined) { this.listaHtml.push({ contenuto: element.html, path: element.path, percorsoIndipendente: element.percorsoIndipendente }); // this.listaHtml?.contenuto = element.html; } else if (element.html == undefined && element.htmlPath != undefined && this.listaHtml.find(x => { if (x.path == element.path) return true; else return false; }) == undefined) { this.listaHtml.push({ contenuto: fs.readFileSync(element.htmlPath).toString(), path: element.path, percorsoIndipendente: element.percorsoIndipendente }); // this.listaHtml?.contenuto = fs.readFileSync(element.htmlPath).toString(); } } } } CercaRispostaConTrigger(richiesta: Request): Risposta | undefined { let tmp = undefined; if (this.RisposteDiControllo) { for (let index = 0; index < this.RisposteDiControllo.length; index++) { const element = this.RisposteDiControllo[index].risposta; if (element && element.trigger) { if (element.trigger.posizione == 'body') tmp = richiesta.body[element.trigger.nome]; if (element.trigger.posizione == 'header') tmp = richiesta.headers[element.trigger.nome]; if (element.trigger.posizione == 'query') tmp = richiesta.query[element.trigger.nome]; if (tmp == element.trigger.valore) return element; } } } return undefined; } VerificaPresenzaRispostaControllata(item: IReturn | undefined): boolean { if (this.RisposteDiControllo != undefined) { for (let index = 0; index < this.RisposteDiControllo.length; index++) { const element = this.RisposteDiControllo[index]; if (element.trigger == item?.stato) { return true; } } } return false; } async EseguiRispostaControllata(item: IReturn | undefined): Promise<IReturn> { if (this.RisposteDiControllo != undefined) { for (let index = 0; index < this.RisposteDiControllo.length; index++) { const element = this.RisposteDiControllo[index]; if ((element).trigger == item?.stato) { if (element.onModificaRisposta && element) { const tmp = await element.onModificaRisposta(item); if (tmp) return tmp; else { return ConstruisciErrore('Attenzione errore!'); } } else { return item; } } } } if (item) return item; else { return ConstruisciErrore('Attenzione errore!'); } } VerificaTrigger(richiesta: Request): boolean { let tmp = undefined; if (this.RisposteDiControllo) { for (let index = 0; index < this.RisposteDiControllo.length; index++) { const element = this.RisposteDiControllo[index].risposta; if (element && element.trigger) { if (element.trigger.posizione == 'body') tmp = richiesta.body[element.trigger.nome]; if (element.trigger.posizione == 'header') tmp = richiesta.headers[element.trigger.nome]; if (element.trigger.posizione == 'query') tmp = richiesta.query[element.trigger.nome]; if (tmp == element.trigger.valore) return true; } } } return false; } PrintStruttura() { let ritorno = ''; if (this.ListaSanificatori) ritorno = ritorno + '\nListaSanificatori :' + JSON.stringify(this.ListaSanificatori); if (this.RisposteDiControllo) ritorno = ritorno + '\nRisposteDiControllo :' + JSON.stringify(this.RisposteDiControllo); if (this.nomiClasseRiferimento) ritorno = ritorno + '\nnomiClasseRiferimento :' + JSON.stringify(this.nomiClasseRiferimento); if (this.listaHtml) ritorno = ritorno + '\nlistaHtml :' + JSON.stringify(this.listaHtml); return ritorno; } }