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.

140 lines (128 loc) 5.23 kB
/* import { ExpressParametro } from "../express/parametro.express"; */ import { ICommentato, tipo } from "../utility"; import { IMeta, ListaMeta, Meta } from "../metadata"; export interface IMetaParametroBesa { nomeVariante?: string; tipo?: tipo; descrizione?: string; sommario?: string; obbligatorio?: boolean; } export interface IMetaParametro extends IMeta { /** tipo di dato da trattare valore, da ricordarsi che vi sara il controllo sul tipo con le modalita classiche di comparazione base gia presenti in js */ tipo?: tipo; /** parametro che rappresenta la sua posizione, viene impostato automaticamente, è coninvolto nel nome del parametro nella rotta */ indexParameter?: number; /** fondamentalmente è rappresentativo del parametro e sara poi messo in documentazione,, questo sara il commento lungo presente nella descrizione. */ descrizione?: string; /** altro compo che sara poi utile nella creazione della documentazione, questo sara il commento breve presente in intestazione*/ sommario?: string; /**parametro che determina se obbligare la sua presenza, puo far terminare la chiamata con codice differenti da quelli previsti. */ obbligatorio?: boolean; /* parametroExpress?: ExpressParametro; */ } export class MetadataParametro extends Meta implements IMetaParametro, ICommentato { tipo: tipo = 'any'; indexParameter = -1; descrizione = ''; sommario = ''; obbligatorio = false; /* parametroExpress = new ExpressParametro(); */ constructor(item: IMetaParametro) { super(item); if (item.tipo != undefined) this.tipo = item.tipo; if (item.indexParameter != undefined) this.indexParameter = item.indexParameter ?? -1; if (item.descrizione != undefined) this.descrizione = item.descrizione; if (item.sommario != undefined) this.sommario = item.sommario; if (item.obbligatorio != undefined) this.obbligatorio = item.obbligatorio ?? false; } Mergia(item: MetadataParametro) { super.Mergia(item) if (item.tipo != undefined) this.tipo = item.tipo; if (item.indexParameter != undefined) this.indexParameter = item.indexParameter ?? -1; if (item.descrizione != undefined) this.descrizione = item.descrizione; if (item.sommario != undefined) this.sommario = item.sommario; if (item.obbligatorio != undefined) this.obbligatorio = item.obbligatorio ?? false; } GetThis() { return this; } } export interface IListaMetadataParametro extends Array<IMetaParametro> { length: number; } export class ListaMetadataParametro extends ListaMeta { constructor(item?: ListaMetadataParametro) { super(); if (item) for (let index = 0; index < item.length; index++) { const element = new MetadataParametro(item[index]); const tmp = this.Cerca(element); if (tmp) tmp.Mergia(element); } } Mergia(item: ListaMetadataParametro) { const t = super.Mergia(item); return t; /* for (let index = 0; index < item.length; index++) { const element = item[index]; const elementoCercato = this.Cerca(element); if (elementoCercato == undefined) { const tmp = element; this.push(tmp); } else { elementoCercato.Mergia(elementoCercato); } } */ } CercaSeNoAggiungi(item: MetadataParametro) { const t = super.CercaSeNoAggiungi(item); return t; /* let parametro = undefined; for (let index = 0; index < this.length && parametro == undefined; index++) { const element = this[index]; if (Meta.Compara(element, item) == 0) parametro = element; } if (parametro == undefined) { if (item.GetThis) { parametro = <ExpressParametro>item.GetThis(item); } else { parametro = new MetadataParametro(item); } this.AggiungiElemento(parametro); } return parametro; */ } Cerca(item: MetadataParametro): MetadataParametro | undefined { const t = super.Cerca(item); return <MetadataParametro>t; /* for (let index = 0; index < this.length; index++) { const element = this[index]; if (Meta.Compara(element, item) == 0) return element; } return undefined; */ } AggiungiElemento(item: MetadataParametro) { const t = super.AggiungiElemento(item); return t; /* for (let index = 0; index < this.length; index++) { const element = this[index]; if (Meta.Compara(element, item) == 0) { this[index].Mergia(item); return this[index]; } } this.push(item); return item; */ } }