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.

191 lines (174 loc) 6.5 kB
/* import { ListaExpressClasse } from "./express/classe.express"; import { ListaMeta } from "./metadata/classe.metadata"; export const targetTerminale = { name: 'Terminale' }; export type switchMetaKey = 'metadata' | 'express' | 'postgres'; export function GetListaClasseMetaData() { let tmp: ListaMeta | undefined = undefined; tmp = Reflect.getMetadata(ListaMeta.nomeMetadataKeyTargetFor_Metadata, targetTerminale); if (tmp == undefined) { tmp = new ListaMeta(); } return tmp; } export function GetListaClasseExpress() { let tmp: ListaExpressClasse | undefined = undefined; tmp = Reflect.getMetadata(ListaExpressClasse.nomeMetadataKeyTargetFor_Express, targetTerminale); if (tmp == undefined) { tmp = new ListaExpressClasse(); } return tmp; } export function SalvaListaClasseMetaData(tmp: ListaMeta) { Reflect.defineMetadata(ListaMeta.nomeMetadataKeyTargetFor_Metadata, tmp, targetTerminale); } export function SalvaListaClasseExpress(tmp: ListaExpressClasse) { Reflect.defineMetadata(ListaExpressClasse.nomeMetadataKeyTargetFor_Express, tmp, targetTerminale); } */ export type tipo = /* "number" | */ //number 'decimal' | 'smallint' | 'integer' | 'numeric' | 'real' | 'smallserial' | 'serial' | //text "text" | "varchar(n)" | "character(n)" | //date "date" | "timestamptz" | "array" | "json" | "boolean" | "any" | //"object" ORMObject; export class ORMObject { tipo: 'object'; colonnaRiferimento: tipo; tabellaRiferimento: string; onDelete?: 'NO ACTION' | 'RESTRICT' | 'CASCADE' | 'SET NULL' | 'SET DEFAULT'; onUpdate?: 'NO ACTION' | 'RESTRICT' | 'CASCADE' | 'SET NULL' | 'SET DEFAULT' constructor(colonnaRiferimento: tipo, tabellaRiferimento: string, onDelete?: 'NO ACTION' | 'RESTRICT' | 'CASCADE' | 'SET NULL' | 'SET DEFAULT', onUpdate?: 'NO ACTION' | 'RESTRICT' | 'CASCADE' | 'SET NULL' | 'SET DEFAULT') { this.tipo = 'object'; this.colonnaRiferimento = colonnaRiferimento; this.tabellaRiferimento = tabellaRiferimento; this.onDelete = onDelete; this.onUpdate = onUpdate } } export interface ICommentato { descrizione: string; sommario: string; } export const targetTerminale = { name: 'Terminale' }; export const targetExpress = { name: 'ExpressS' }; import os from "os"; import valid from "validator"; export function StartMonitoring() { try { const used = process.memoryUsage(); const partizionamentoMemoriaProcesso: { rss: string, heapTotale: string, heapUsed: string, external: string, cpuMedia: any, totalMemo: string, freeMemo: string } = { rss: '', heapTotale: '', heapUsed: '', external: '', cpuMedia: '', totalMemo: '', freeMemo: '' }; // eslint-disable-next-line prefer-const for (let key in used) { switch (key) { case 'rss': partizionamentoMemoriaProcesso.rss = `${key} ${Math.round((<any>used)[key] / 1024 / 1024 * 100) / 100} MB`; break; case 'heapTotal': partizionamentoMemoriaProcesso.heapTotale = `${key} ${Math.round((<any>used)[key] / 1024 / 1024 * 100) / 100} MB`; break; case 'heapUsed': partizionamentoMemoriaProcesso.heapUsed = `${key} ${Math.round((<any>used)[key] / 1024 / 1024 * 100) / 100} MB`; break; case 'external': partizionamentoMemoriaProcesso.external = `${key} ${Math.round((<any>used)[key] / 1024 / 1024 * 100) / 100} MB`; break; default: break; } } partizionamentoMemoriaProcesso.cpuMedia = os.cpus(); partizionamentoMemoriaProcesso.totalMemo = os.totalmem().toString(); partizionamentoMemoriaProcesso.freeMemo = os.freemem().toString(); console.log(":-Data" + new Date().toISOString() + ' - ' + partizionamentoMemoriaProcesso.rss + ' - ' + partizionamentoMemoriaProcesso.heapTotale + ' - ' + partizionamentoMemoriaProcesso.heapUsed + ' - ' + partizionamentoMemoriaProcesso.external + ' - ' + '\n'); setTimeout(() => { StartMonitoring(); }, (5) * 1000); } catch (error) { setTimeout(() => { StartMonitoring(); }, (5) * 1000); } } export function GenerateID() { return `==${(Math.random() * 100).toFixed(0)}::${(Math.random() * 1000).toFixed(0)}::${new Date().getTime()}==`; } export function VerificaGenerica(tipo: tipo, valore: any): boolean { try { let risultato = false; switch (tipo) { case 'array': Array(valore); risultato = true; //risultato = valid.is(valore); break; case 'boolean': //Boolean(valore); risultato = valid.isBoolean(valore); break; case 'date': case 'timestamptz': //new Date(valore); risultato = valid.isDate(valore); break; case 'decimal': case 'smallint': case 'integer': case 'numeric': case 'real': case 'smallserial': case 'serial': //Number(valore); risultato = valid.isNumeric(valore); break; case 'object': Object(valore); risultato = true; //risultato = valid.isO(valore); break; case 'text': case 'varchar(n)': case 'character(n)': //String(valore); risultato = valid.isAscii(valore); break; case 'any': risultato = valore; break; default: break; } if (risultato) return true; else return false; } catch (error) { return false; } }