把select和operate的option改成了泛型

This commit is contained in:
Xu Chang 2022-08-10 12:20:25 +08:00
parent 8099fc4e25
commit 7448f291a3
7 changed files with 19 additions and 19 deletions

View File

@ -6,9 +6,9 @@ export declare class CacheStore<ED extends EntityDict, Cxt extends Context<ED>>
private executor;
private getFullDataFn?;
constructor(storageSchema: StorageSchema<ED>, contextBuilder: (cxtString: string) => (store: CacheStore<ED, Cxt>) => Cxt, getFullDataFn?: () => any);
operate<T extends keyof ED>(entity: T, operation: ED[T]['Operation'], context: Cxt, option?: OperateOption): Promise<OperationResult<ED>>;
operate<T extends keyof ED, OP extends OperateOption>(entity: T, operation: ED[T]['Operation'], context: Cxt, option?: OP): Promise<OperationResult<ED>>;
sync(opRecords: Array<OpRecord<ED>>, context: Cxt): Promise<void>;
select<T extends keyof ED, S extends ED[T]['Selection']>(entity: T, selection: S, context: Cxt, option?: SelectOption): Promise<import("oak-domain/lib/types").SelectionResult<ED[T]["Schema"], S["data"]>>;
select<T extends keyof ED, S extends ED[T]['Selection'], OP extends SelectOption>(entity: T, selection: S, context: Cxt, option?: OP): Promise<import("oak-domain/lib/types").SelectionResult<ED[T]["Schema"], S["data"]>>;
registerChecker<T extends keyof ED>(checker: Checker<ED, T, Cxt>): void;
/**
* debug下用来获取debugStore的数据release下不能使用

View File

@ -19,10 +19,10 @@ export declare class DebugStore<ED extends EntityDict, Cxt extends Context<ED>>
remove: number;
commit: number;
});
protected cascadeUpdate<T extends keyof ED>(entity: T, operation: DeduceCreateOperation<ED[T]["Schema"]> | DeduceUpdateOperation<ED[T]["Schema"]> | DeduceRemoveOperation<ED[T]["Schema"]>, context: Cxt, option?: OperateOption): Promise<import("oak-domain/lib/types").OperationResult<ED>>;
protected cascadeSelect<T extends keyof ED, S extends ED[T]["Selection"]>(entity: T, selection: S, context: Cxt, option?: DebugStoreSelectOption): Promise<SelectRowShape<ED[T]['Schema'], S['data']>[]>;
operate<T extends keyof ED>(entity: T, operation: ED[T]['Operation'], context: Cxt, option?: DebugStoreOperateOption): Promise<import("oak-domain/lib/types").OperationResult<ED>>;
select<T extends keyof ED, S extends ED[T]['Selection']>(entity: T, selection: S, context: Cxt, option?: DebugStoreSelectOption): Promise<SelectionResult<ED[T]["Schema"], S["data"]>>;
protected cascadeUpdate<T extends keyof ED, OP extends DebugStoreOperateOption>(entity: T, operation: DeduceCreateOperation<ED[T]["Schema"]> | DeduceUpdateOperation<ED[T]["Schema"]> | DeduceRemoveOperation<ED[T]["Schema"]>, context: Cxt, option?: OP): Promise<import("oak-domain/lib/types").OperationResult<ED>>;
protected cascadeSelect<T extends keyof ED, S extends ED[T]["Selection"], OP extends DebugStoreSelectOption>(entity: T, selection: S, context: Cxt, option?: OP): Promise<SelectRowShape<ED[T]['Schema'], S['data']>[]>;
operate<T extends keyof ED, OP extends DebugStoreOperateOption>(entity: T, operation: ED[T]['Operation'], context: Cxt, option?: OP): Promise<import("oak-domain/lib/types").OperationResult<ED>>;
select<T extends keyof ED, S extends ED[T]['Selection'], OP extends DebugStoreSelectOption>(entity: T, selection: S, context: Cxt, option?: OP): Promise<SelectionResult<ED[T]["Schema"], S["data"]>>;
registerTrigger<T extends keyof ED>(trigger: Trigger<ED, T, Cxt>): void;
registerChecker<T extends keyof ED>(checker: Checker<ED, T, Cxt>): void;
startInitializing(): void;

View File

@ -7,7 +7,7 @@ export declare class Cache<ED extends EntityDict, Cxt extends Context<ED>, AD ex
context: Cxt;
private syncEventsCallbacks;
constructor(aspectWrapper: AspectWrapper<ED, Cxt, AD>, context: Cxt, cacheStore: CacheStore<ED, Cxt>);
refresh<T extends keyof ED>(entity: T, selection: ED[T]['Selection'], option?: SelectOption, getCount?: true): Promise<{
refresh<T extends keyof ED, OP extends SelectOption>(entity: T, selection: ED[T]['Selection'], option?: OP, getCount?: true): Promise<{
data: import("oak-domain/lib/types").SelectRowShape<ED[keyof ED]["Schema"], ED[keyof ED]["Selection"]["data"]>[];
count?: number | undefined;
}>;

View File

@ -14,11 +14,11 @@ export class CacheStore<ED extends EntityDict, Cxt extends Context<ED>> extends
this.getFullDataFn = getFullDataFn;
}
async operate<T extends keyof ED>(
async operate<T extends keyof ED, OP extends OperateOption>(
entity: T,
operation: ED[T]['Operation'],
context: Cxt,
option?: OperateOption
option?: OP
): Promise<OperationResult<ED>> {
const autoCommit = !context.getCurrentTxnId();
let result;
@ -60,11 +60,11 @@ export class CacheStore<ED extends EntityDict, Cxt extends Context<ED>> extends
return result;
}
async select<T extends keyof ED, S extends ED[T]['Selection']>(
async select<T extends keyof ED, S extends ED[T]['Selection'], OP extends SelectOption>(
entity: T,
selection: S,
context: Cxt,
option?: SelectOption
option?: OP
) {
const autoCommit = !context.getCurrentTxnId();
if (autoCommit) {

View File

@ -24,14 +24,14 @@ export class DebugStore<ED extends EntityDict, Cxt extends Context<ED>> extends
this.rwLock = new RWLock();
}
protected async cascadeUpdate<T extends keyof ED>(entity: T, operation: DeduceCreateOperation<ED[T]["Schema"]> | DeduceUpdateOperation<ED[T]["Schema"]> | DeduceRemoveOperation<ED[T]["Schema"]>, context: Cxt, option?: OperateOption) {
protected async cascadeUpdate<T extends keyof ED, OP extends DebugStoreOperateOption>(entity: T, operation: DeduceCreateOperation<ED[T]["Schema"]> | DeduceUpdateOperation<ED[T]["Schema"]> | DeduceRemoveOperation<ED[T]["Schema"]>, context: Cxt, option?: OP) {
await this.executor.preOperation(entity, operation, context, option);
const result = super.cascadeUpdate(entity, operation, context, option);
await this.executor.postOperation(entity, operation, context, option);
return result;
}
protected async cascadeSelect<T extends keyof ED, S extends ED[T]["Selection"]>(entity: T, selection: S, context: Cxt, option?: DebugStoreSelectOption): Promise<SelectRowShape<ED[T]['Schema'], S['data']>[]> {
protected async cascadeSelect<T extends keyof ED, S extends ED[T]["Selection"], OP extends DebugStoreSelectOption>(entity: T, selection: S, context: Cxt, option?: OP): Promise<SelectRowShape<ED[T]['Schema'], S['data']>[]> {
const selection2 = Object.assign({
action: 'select',
}, selection) as ED[T]['Operation'];
@ -46,11 +46,11 @@ export class DebugStore<ED extends EntityDict, Cxt extends Context<ED>> extends
return result;
}
async operate<T extends keyof ED>(
async operate<T extends keyof ED, OP extends DebugStoreOperateOption>(
entity: T,
operation: ED[T]['Operation'],
context: Cxt,
option?: DebugStoreOperateOption
option?: OP
) {
if (!option || !option.noLock) {
await this.rwLock.acquire('S');
@ -77,11 +77,11 @@ export class DebugStore<ED extends EntityDict, Cxt extends Context<ED>> extends
return result;
}
async select<T extends keyof ED, S extends ED[T]['Selection']>(
async select<T extends keyof ED, S extends ED[T]['Selection'], OP extends DebugStoreSelectOption>(
entity: T,
selection: S,
context: Cxt,
option?: DebugStoreSelectOption
option?: OP
) {
if (!option || !option.noLock) {
await this.rwLock.acquire('S');

View File

@ -29,7 +29,7 @@ export class Cache<ED extends EntityDict, Cxt extends Context<ED>, AD extends Co
@Action
async refresh<T extends keyof ED>(entity: T, selection: ED[T]['Selection'], option?: SelectOption, getCount?: true) {
async refresh<T extends keyof ED, OP extends SelectOption>(entity: T, selection: ED[T]['Selection'], option?: OP, getCount?: true) {
const { result } = await this.getAspectWrapper().exec('select', {
entity,
selection,

View File

@ -2,4 +2,4 @@ import { OakException } from 'oak-domain/lib/types/Exception';
const e = new OakException('ddddd');
console.log(e.constructor.name);
console.log(e.name);