@webda/core
Version:
Expose API with Lambda
62 lines (61 loc) • 1.76 kB
TypeScript
import { CoreModel, CoreModelDefinition } from "../models/coremodel.js";
import { Service } from "../services/service.js";
export interface Mapper {
modelAttribute: string;
model: CoreModelDefinition<CoreModel>;
attributes: string[];
attribute: string;
}
interface ModelMapperInfo {
modelAttribute: string;
model: CoreModelDefinition<CoreModel>;
attributes: string[];
attribute: string;
type: "LINK" | "LINKS_MAP" | "LINKS_ARRAY" | "LINKS_SIMPLE_ARRAY";
}
/**
* Mapper service
*
* Ensure each ModelMapped properties is in-sync with their respective model
*/
export declare class ModelMapper extends Service {
mappers: {
[key: string]: ModelMapperInfo[];
};
resolve(): this;
/**
* Get uuids from a ModelLinker
* @param object
* @param mapper
* @returns
*/
getUuidsFromMapper(object: CoreModel, mapper: ModelMapperInfo): any[];
/**
* Handle event
* @param modelName
* @param evt
* @param type
* @returns
*/
handleEvent(modelName: string, evt: any, type: "Store.Saved" | "Store.Deleted" | "Store.Updated" | "Store.PatchUpdated" | "Store.PartialUpdated"): Promise<any[]>;
/**
* Handle partial event to update a mapper
*
* @param modelName
* @param evt
* @param type
* @returns
*/
handlePartialEvent(modelName: string, evt: any, type: "Store.Saved" | "Store.Deleted" | "Store.Updated" | "Store.PatchUpdated" | "Store.PartialUpdated"): Promise<any[]>;
/**
* Get a mapped object based on Mapper
*
* Copy attributes that are supposed to be copied
*
* @param model
* @param mapper
* @returns
*/
getMapped(model: any, mapper: Mapper): any;
}
export {};