From 8c3b74cb89fc75c670f2aae1dfa130736af1416d Mon Sep 17 00:00:00 2001 From: Xc Date: Mon, 11 Aug 2025 15:42:22 +0800 Subject: [PATCH] =?UTF-8?q?DbStore=E5=A2=9E=E5=8A=A0=E4=BA=86checkRelation?= =?UTF-8?q?Async=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/DbStore.d.ts | 1 + lib/DbStore.js | 3 +++ src/DbStore.ts | 14 +++++++++----- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/lib/DbStore.d.ts b/lib/DbStore.d.ts index 12fbe19..67e3a0e 100644 --- a/lib/DbStore.d.ts +++ b/lib/DbStore.d.ts @@ -8,6 +8,7 @@ export declare class DbStore, contextBuilder: () => Cxt, mysqlConfiguration: MySQLConfiguration, authDeduceRelationMap: AuthDeduceRelationMap, selectFreeEntities?: SelectFreeEntities, updateFreeDict?: UpdateFreeDict, onVolatileTrigger?: (entity: T, trigger: VolatileTrigger, ids: string[], cxtStr: string, option: OperateOption) => Promise); + checkRelationAsync>(entity: T, operation: Omit, context: Cxt): Promise; protected cascadeUpdateAsync(entity: T, operation: ED[T]['Operation'], context: AsyncContext, option: MysqlOperateOption): Promise>; operate(entity: T, operation: ED[T]['Operation'], context: Cxt, option: MysqlOperateOption): Promise>; select(entity: T, selection: ED[T]['Selection'], context: Cxt, option: MySqlSelectOption): Promise[]>; diff --git a/lib/DbStore.js b/lib/DbStore.js index 12d5c6b..058172f 100644 --- a/lib/DbStore.js +++ b/lib/DbStore.js @@ -12,6 +12,9 @@ class DbStore extends oak_db_1.MysqlStore { this.executor = new TriggerExecutor_1.TriggerExecutor(contextBuilder, undefined, onVolatileTrigger); this.relationAuth = new RelationAuth_1.RelationAuth(storageSchema, authDeduceRelationMap, selectFreeEntities, updateFreeDict); } + checkRelationAsync(entity, operation, context) { + return this.relationAuth.checkRelationAsync(entity, operation, context); + } async cascadeUpdateAsync(entity, operation, context, option) { // 如果是在modi处理过程中,所有的trigger也可以延时到apply时再处理(这时候因为modi中的数据并不实际存在,处理会有问题) if (!option.blockTrigger) { diff --git a/src/DbStore.ts b/src/DbStore.ts index 4deb729..acd2eda 100644 --- a/src/DbStore.ts +++ b/src/DbStore.ts @@ -13,8 +13,8 @@ export class DbStore; constructor( - storageSchema: StorageSchema, - contextBuilder: () => Cxt, + storageSchema: StorageSchema, + contextBuilder: () => Cxt, mysqlConfiguration: MySQLConfiguration, authDeduceRelationMap: AuthDeduceRelationMap, selectFreeEntities: SelectFreeEntities = [], @@ -25,6 +25,10 @@ export class DbStore>(entity: T, operation: Omit, context: Cxt): Promise { + return this.relationAuth.checkRelationAsync(entity, operation, context); + } + protected async cascadeUpdateAsync(entity: T, operation: ED[T]['Operation'], context: AsyncContext, option: MysqlOperateOption) { // 如果是在modi处理过程中,所有的trigger也可以延时到apply时再处理(这时候因为modi中的数据并不实际存在,处理会有问题) if (!option.blockTrigger) { @@ -89,7 +93,7 @@ export class DbStore( entity: T, - trigger: VolatileTrigger, - ids: string[], + trigger: VolatileTrigger, + ids: string[], cxtStr: string, option: OperateOption) => Promise ) {