51 lines
4.3 KiB
TypeScript
51 lines
4.3 KiB
TypeScript
import { EntityDict, OperateOption, OperationResult, TxnOption, StorageSchema, SelectOption, AggregationResult } from 'oak-domain/lib/types';
|
||
import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain';
|
||
import { CascadeStore } from 'oak-domain/lib/store/CascadeStore';
|
||
import { MySQLConfiguration } from './types/Configuration';
|
||
import { MySqlConnector } from './connector';
|
||
import { MySqlTranslator, MySqlSelectOption, MysqlOperateOption } from './translator';
|
||
import { AsyncContext } from 'oak-domain/lib/store/AsyncRowStore';
|
||
import { SyncContext } from 'oak-domain/lib/store/SyncRowStore';
|
||
import { CreateEntityOption } from '../types/Translator';
|
||
import { DbStore, Plan } from '../types/dbStore';
|
||
export declare class MysqlStore<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> extends CascadeStore<ED> implements DbStore<ED, Cxt> {
|
||
protected countAbjointRow<T extends keyof ED, OP extends SelectOption, Cxt extends SyncContext<ED>>(entity: T, selection: Pick<ED[T]['Selection'], 'filter' | 'count'>, context: Cxt, option: OP): number;
|
||
protected aggregateAbjointRowSync<T extends keyof ED, OP extends SelectOption, Cxt extends SyncContext<ED>>(entity: T, aggregation: ED[T]['Aggregation'], context: Cxt, option: OP): AggregationResult<ED[T]['Schema']>;
|
||
protected selectAbjointRow<T extends keyof ED, OP extends SelectOption>(entity: T, selection: ED[T]['Selection'], context: SyncContext<ED>, option: OP): Partial<ED[T]['Schema']>[];
|
||
protected updateAbjointRow<T extends keyof ED, OP extends OperateOption>(entity: T, operation: ED[T]['Operation'], context: SyncContext<ED>, option: OP): number;
|
||
exec(script: string, txnId?: string): Promise<void>;
|
||
connector: MySqlConnector;
|
||
translator: MySqlTranslator<ED>;
|
||
constructor(storageSchema: StorageSchema<ED>, configuration: MySQLConfiguration);
|
||
checkRelationAsync<T extends keyof ED, Cxt extends AsyncContext<ED>>(entity: T, operation: Omit<ED[T]['Operation'] | ED[T]['Selection'], 'id'>, context: Cxt): Promise<void>;
|
||
protected aggregateAbjointRowAsync<T extends keyof ED, OP extends SelectOption, Cxt extends AsyncContext<ED>>(entity: T, aggregation: ED[T]['Aggregation'], context: Cxt, option: OP): Promise<AggregationResult<ED[T]['Schema']>>;
|
||
aggregate<T extends keyof ED, OP extends SelectOption>(entity: T, aggregation: ED[T]['Aggregation'], context: Cxt, option: OP): Promise<AggregationResult<ED[T]['Schema']>>;
|
||
protected supportManyToOneJoin(): boolean;
|
||
protected supportMultipleCreate(): boolean;
|
||
private formResult;
|
||
protected selectAbjointRowAsync<T extends keyof ED>(entity: T, selection: ED[T]['Selection'], context: AsyncContext<ED>, option?: MySqlSelectOption): Promise<Partial<ED[T]['Schema']>[]>;
|
||
protected updateAbjointRowAsync<T extends keyof ED>(entity: T, operation: ED[T]['Operation'], context: AsyncContext<ED>, option?: MysqlOperateOption): Promise<number>;
|
||
operate<T extends keyof ED>(entity: T, operation: ED[T]['Operation'], context: Cxt, option: OperateOption): Promise<OperationResult<ED>>;
|
||
select<T extends keyof ED>(entity: T, selection: ED[T]['Selection'], context: Cxt, option: SelectOption): Promise<Partial<ED[T]['Schema']>[]>;
|
||
protected countAbjointRowAsync<T extends keyof ED>(entity: T, selection: Pick<ED[T]['Selection'], 'filter' | 'count'>, context: AsyncContext<ED>, option: SelectOption): Promise<number>;
|
||
count<T extends keyof ED>(entity: T, selection: Pick<ED[T]['Selection'], 'filter' | 'count'>, context: Cxt, option: SelectOption): Promise<number>;
|
||
begin(option?: TxnOption): Promise<string>;
|
||
commit(txnId: string): Promise<void>;
|
||
rollback(txnId: string): Promise<void>;
|
||
connect(): Promise<void>;
|
||
disconnect(): Promise<void>;
|
||
initialize(option: CreateEntityOption): Promise<void>;
|
||
readSchema(): Promise<StorageSchema<ED>>;
|
||
/**
|
||
* 根据载入的dataSchema,和数据库中原来的schema,决定如何来upgrade
|
||
* 制订出来的plan分为两阶段:增加阶段和削减阶段,在两个阶段之间,由用户来修正数据
|
||
*/
|
||
makeUpgradePlan(): Promise<Plan>;
|
||
/**
|
||
* 比较两个schema的不同,这里计算的是new对old的增量
|
||
* @param schemaOld
|
||
* @param SchemaNew
|
||
*/
|
||
diffSchema(schemaOld: StorageSchema<any>, schemaNew: StorageSchema<any>): Plan;
|
||
}
|