import { IAbstractEntity } from '../../domain'; export interface IAbstractServiceModel { } /** * Abstrai uma classe de ServiceModel, a partir de um IAbstractEntity. * Geralmente utilizada por uma camada de 'presentation' através de 'dto' para passar valores para dentro da camada de 'application'/'service', ou 'serviceModel'. * Se na implementação dessa classe abstrata vc implementar o mesmo IAbstractEntity * geralmente a conversão explicita entre os tipos (ex: dto <> serviceModel) será automática */ export declare abstract class AbstractServiceModel implements IAbstractServiceModel { private readonly originalSrc; /** * Inicializa o serviceModel com um Y. O comportamento pode ser alterado fazendo override de 'loadValuesFromEntity' * @param iabstractEntity Geralmente, o DTO para ser convertido em serviceModel. */ constructor(iabstractEntity?: Y); /** * Atribui as properties deste serviceModel com as do IAbstractEntity * Caso algum tratamento seja necessário, é possível fazer override de 'loadValuesFromEntity(...)' */ updateFromEntity(entity: IAbstractEntity): AbstractServiceModel; /** * Por padrão, retorna o serviceModel tipado como (geralmente ideal quando este service model implementa o IAbstractEntity) * Caso não implementar, ou, algum tratamento for necessário ao passar para então * você poderá fazer override de 'buildEntityFromServiceModelValues(): Y' * @returns Y */ toEntity(): Y; protected loadValuesFromEntity(entitchoca: IAbstractEntity): void; protected buildEntityFromServiceModelValues(): Y; getSrcObject(): Y | unknown; } export interface IServiceModel { targetEntity: ObjectLiteral; } export interface ObjectLiteral { [key: string]: any; }