oak-common-aspect/es/AspectDict.d.ts

68 lines
2.9 KiB
TypeScript

import { EntityDict, OperateOption, SelectOption, OperationResult, AggregationResult } from "oak-domain/lib/types";
import { AmapInstance } from "oak-external-sdk/lib/service/amap/Amap";
import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain';
import { AsyncContext } from "oak-domain/lib/store/AsyncRowStore";
import { MapService } from "./types/Map";
import { GeoApi } from "./geo";
export declare type AspectDict<ED extends EntityDict & BaseEntityDict> = {
operate: <T extends keyof ED, OP extends OperateOption>(params: {
entity: T;
operation: ED[T]['Operation'] | ED[T]['Operation'][];
option?: OP;
}, context: AsyncContext<ED>) => Promise<OperationResult<ED>[] | OperationResult<ED>>;
select: <T extends keyof ED, OP extends SelectOption>(params: {
entity: T;
selection: ED[T]['Selection'];
option?: OP;
getCount?: true;
}, context: AsyncContext<ED>) => Promise<{
data: Record<string, any>;
total?: number;
}>;
aggregate: <T extends keyof ED, OP extends SelectOption>(params: {
entity: T;
aggregation: ED[T]['Aggregation'];
option?: OP;
}, context: AsyncContext<ED>) => Promise<AggregationResult<ED[T]['Schema']>>;
count: <T extends keyof ED, OP extends SelectOption>(params: {
entity: T;
selection: Pick<ED[T]['Selection'], 'filter'>;
option?: OP;
}, context: AsyncContext<ED>) => Promise<number>;
fetchRows: <OP extends SelectOption>(params: Array<{
entity: keyof ED;
selection: ED[keyof ED]['Selection'];
option?: OP;
}>, context: AsyncContext<ED>) => Promise<void>;
amap: <T extends 'getDrivingPath' | 'regeo' | 'ipLoc' | 'getDistrict' | 'geocode'>(params: {
key: string;
method: T;
data: Parameters<AmapInstance[T]>[0];
}) => Promise<any>;
getTranslations: (params: {
namespace: string | string[];
locale: string;
}) => Promise<any>;
importEntity: (params: FormData, context: AsyncContext<ED>) => Promise<void | ArrayBuffer>;
exportEntity: <T extends keyof ED>(params: {
entity: T;
id: string;
filter?: ED[T]['Selection']['filter'];
properties?: Record<string, any>;
}, context: AsyncContext<ED>) => Promise<ArrayBuffer>;
getImportationTemplate: (params: {
id: string;
}, context: AsyncContext<ED>) => Promise<ArrayBuffer>;
geoService: <ED extends BaseEntityDict & EntityDict, A extends GeoApi>(options: {
api: A;
params: Parameters<MapService[A]>[0];
}, context: AsyncContext<ED>) => Promise<ReturnType<MapService[A]>>;
loadRelations: (params: {
entities: (keyof ED)[];
}, context: AsyncContext<ED>) => Promise<ED['userRelation']['OpSchema'][]>;
crossBridge: (params: {
url: string;
}) => Promise<ReadableStream<Uint8Array>>;
};
export default AspectDict;