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.
56 lines (47 loc) • 2.63 kB
text/typescript
import { GetListaClasseMeta, SalvaListaMetaClasse } from "../metadata";
import { ListaMetadataClasse, MetadataClasse } from "../metadata/classe.metadata";
import { IMetaProprieta, MetadataProprieta } from "../metadata/proprieta.metadata";
import { ListaPostgresClasse, PostgresClasse } from "../postgres/classe.postgres";
import { IPostgresProprieta, PostgresProprieta } from "../postgres/proprieta.postgres";
export type TypeDecoratoreProprieta = {
itemMetaProprieta?: IMetaProprieta,
itemPostgresProprieta?: IPostgresProprieta,
};
export function decoratoreProprieta(item: TypeDecoratoreProprieta) {
return (target: any, propertyKey: PropertyKey): any => {
const nomeClasse = target.constructor.name;
const nomeProprieta = propertyKey.toString();
DecoratoreProprieta(nomeClasse, nomeProprieta, item);
};
}
export function DecoratoreProprieta(nomeClasse: string, nomeProprieta: string, item: TypeDecoratoreProprieta) {
try {
if (item) {
if (item.itemMetaProprieta) {
const list: ListaMetadataClasse = GetListaClasseMeta<ListaMetadataClasse>('nomeMetadataKeyTargetFor_Metadata', () => { return new ListaMetadataClasse(); });
const classe = list.CercaSeNoAggiungi(new MetadataClasse({ nomeOriginale: nomeClasse }));
const proprieta = classe.listaProprieta.CercaSeNoAggiungi(new MetadataProprieta(item.itemMetaProprieta));
proprieta.nome = nomeProprieta;
SalvaListaMetaClasse('nomeMetadataKeyTargetFor_Metadata', list);
}
if (item.itemPostgresProprieta) {
const list: ListaPostgresClasse = GetListaClasseMeta<ListaPostgresClasse>('nomeMetadataKeyTargetFor_Postgres', () => { return new ListaPostgresClasse(); });
const classe = list.CercaSeNoAggiungi(new PostgresClasse(
{
nomeOriginale: nomeClasse,
creaId: true,
abilitaUpdatedAt: true,
abilitaDeletedAt: true,
abilitaCreatedAt: true,
nomeTabella: nomeClasse
}));
const proprieta = classe.listaProprieta.CercaSeNoAggiungi(new PostgresProprieta(item.itemPostgresProprieta));
proprieta.nome = nomeProprieta;
SalvaListaMetaClasse('nomeMetadataKeyTargetFor_Postgres', list);
}
}
} catch (error) {
console.log(error);
throw error;
}
}