@medusajs/index
Version:
Medusa Index module
132 lines • 5.26 kB
TypeScript
import { Context, Event, IndexTypes, RemoteQueryFunction, Subscriber } from "@medusajs/framework/types";
import { MikroOrmBaseRepository as BaseRepository, ContainerRegistrationKeys } from "@medusajs/framework/utils";
import { EntityManager, SqlEntityManager } from "@mikro-orm/postgresql";
type InjectedDependencies = {
manager: EntityManager;
[ContainerRegistrationKeys.QUERY]: RemoteQueryFunction;
baseRepository: BaseRepository;
};
export declare class PostgresProvider implements IndexTypes.StorageProvider {
#private;
protected readonly eventActionToMethodMap_: {
created: string;
updated: string;
deleted: string;
attached: string;
detached: string;
};
protected container_: InjectedDependencies;
protected readonly schemaObjectRepresentation_: IndexTypes.SchemaObjectRepresentation;
protected readonly schemaEntitiesMap_: Record<string, any>;
protected readonly moduleOptions_: IndexTypes.IndexModuleOptions;
protected readonly manager_: SqlEntityManager;
protected readonly query_: RemoteQueryFunction;
protected baseRepository_: BaseRepository;
constructor(container: InjectedDependencies, options: {
schemaObjectRepresentation: IndexTypes.SchemaObjectRepresentation;
entityMap: Record<string, any>;
}, moduleOptions: IndexTypes.IndexModuleOptions);
onApplicationStart(): Promise<void>;
protected static parseData<TData extends {
id: string;
[key: string]: unknown;
}>(data: TData | TData[], schemaEntityObjectRepresentation: IndexTypes.SchemaObjectEntityRepresentation): {
data: TData[];
entityProperties: string[];
parentsProperties: {
[entity: string]: string[];
};
};
protected static parseMessageData<TData extends {
id: string | string[];
}>(message?: Event): {
action: string;
data: TData[];
ids: string[];
} | void;
consumeEvent(schemaEntityObjectRepresentation: IndexTypes.SchemaObjectEntityRepresentation): Subscriber<{
id: string | string[];
}>;
query<const TEntry extends string>(config: IndexTypes.IndexQueryConfig<TEntry>, sharedContext?: Context): Promise<IndexTypes.QueryResultSet<TEntry>>;
/**
* Create the index entry and the index relation entry when this event is emitted.
* @param entity
* @param data
* @param schemaEntityObjectRepresentation
* @param sharedContext
* @protected
*/
onCreate<TData extends {
id: string;
[key: string]: unknown;
}>({ entity, data, schemaEntityObjectRepresentation, }: {
entity: string;
data: TData | TData[];
schemaEntityObjectRepresentation: IndexTypes.SchemaObjectEntityRepresentation;
}, sharedContext?: Context<SqlEntityManager>): Promise<void>;
/**
* Update the index entry when this event is emitted.
* @param entity
* @param data
* @param schemaEntityObjectRepresentation
* @param sharedContext
* @protected
*/
onUpdate<TData extends {
id: string;
[key: string]: unknown;
}>({ entity, data, schemaEntityObjectRepresentation, }: {
entity: string;
data: TData | TData[];
schemaEntityObjectRepresentation: IndexTypes.SchemaObjectEntityRepresentation;
}, sharedContext?: Context<SqlEntityManager>): Promise<void>;
/**
* Delete the index entry when this event is emitted.
* @param entity
* @param data
* @param schemaEntityObjectRepresentation
* @param sharedContext
* @protected
*/
onDelete<TData extends {
id: string;
[key: string]: unknown;
}>({ entity, data, schemaEntityObjectRepresentation, }: {
entity: string;
data: TData | TData[];
schemaEntityObjectRepresentation: IndexTypes.SchemaObjectEntityRepresentation;
}, sharedContext?: Context<SqlEntityManager>): Promise<void>;
/**
* event emitted from the link modules to attach a link entity to its parent and child entities from the linked modules.
* @param entity
* @param data
* @param schemaEntityObjectRepresentation
* @protected
*/
onAttach<TData extends {
id: string;
[key: string]: unknown;
}>({ entity, data, schemaEntityObjectRepresentation, }: {
entity: string;
data: TData | TData[];
schemaEntityObjectRepresentation: IndexTypes.SchemaObjectEntityRepresentation;
}, sharedContext?: Context<SqlEntityManager>): Promise<void>;
/**
* Event emitted from the link modules to detach a link entity from its parent and child entities from the linked modules.
* @param entity
* @param data
* @param schemaEntityObjectRepresentation
* @param sharedContext
* @protected
*/
onDetach<TData extends {
id: string;
[key: string]: unknown;
}>({ entity, data, schemaEntityObjectRepresentation, }: {
entity: string;
data: TData | TData[];
schemaEntityObjectRepresentation: IndexTypes.SchemaObjectEntityRepresentation;
}, sharedContext?: Context<SqlEntityManager>): Promise<void>;
}
export {};
//# sourceMappingURL=postgres-provider.d.ts.map