From ef53399fcbd0c1e038f400aa416981302f051360 Mon Sep 17 00:00:00 2001 From: Xc Date: Sat, 12 Aug 2023 18:12:24 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E6=97=B6=E7=9A=84=E4=B8=80=E4=B8=AA=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E8=AF=BB=E5=8F=96=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/AppLoader.js | 3 ++- src/AppLoader.ts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/AppLoader.js b/lib/AppLoader.js index 7f3a9d0..e9386c3 100644 --- a/lib/AppLoader.js +++ b/lib/AppLoader.js @@ -5,6 +5,7 @@ const tslib_1 = require("tslib"); const fs_1 = require("fs"); const path_1 = require("path"); const node_schedule_1 = require("node-schedule"); +const env_1 = require("oak-domain/lib/compiler/env"); const actionDef_1 = require("oak-domain/lib/store/actionDef"); const lodash_1 = require("oak-domain/lib/utils/lodash"); const uuid_1 = require("oak-domain/lib/utils/uuid"); @@ -74,7 +75,7 @@ class AppLoader extends types_1.AppLoader { super(path); const { storageSchema } = require(`${path}/lib/oak-app-domain/Storage`); const { ActionCascadePathGraph, RelationCascadePathGraph, selectFreeEntities, deducedRelationMap } = require(`${path}/lib/oak-app-domain/Relation`); - this.externalDependencies = require(`${path}/lib/config/externalDependencies`).default; + this.externalDependencies = require((0, env_1.OAK_EXTERNAL_LIBS_FILEPATH)((0, path_1.join)(path, 'lib'))); this.aspectDict = Object.assign({}, index_1.default, this.requireSth('lib/aspects/index')); this.dbStore = new DbStore_1.DbStore(storageSchema, contextBuilder, dbConfig, ActionCascadePathGraph, RelationCascadePathGraph, deducedRelationMap, selectFreeEntities); this.contextBuilder = contextBuilder; diff --git a/src/AppLoader.ts b/src/AppLoader.ts index 2d45847..173efe1 100644 --- a/src/AppLoader.ts +++ b/src/AppLoader.ts @@ -1,6 +1,7 @@ import { existsSync } from 'fs'; import { join } from 'path'; import { scheduleJob } from 'node-schedule'; +import { OAK_EXTERNAL_LIBS_FILEPATH } from 'oak-domain/lib/compiler/env'; import { makeIntrinsicCTWs } from "oak-domain/lib/store/actionDef"; import { intersection } from 'oak-domain/lib/utils/lodash'; import { createDynamicCheckers } from 'oak-domain/lib/checkers'; @@ -94,7 +95,7 @@ export class AppLoader(storageSchema, contextBuilder, dbConfig, ActionCascadePathGraph, RelationCascadePathGraph, deducedRelationMap, selectFreeEntities); this.contextBuilder = contextBuilder; From 9f9f0cba048f0b465a2e30ab7489b16b28d0c1d3 Mon Sep 17 00:00:00 2001 From: Xc Date: Sat, 19 Aug 2023 11:28:59 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=AF=B9createF?= =?UTF-8?q?ree=E5=92=8CupdateFree=E7=9A=84=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/AppLoader.js | 4 ++-- lib/DbStore.d.ts | 2 +- lib/DbStore.js | 4 ++-- src/AppLoader.ts | 5 +++-- src/DbStore.ts | 7 +++++-- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/AppLoader.js b/lib/AppLoader.js index e9386c3..d4b4c10 100644 --- a/lib/AppLoader.js +++ b/lib/AppLoader.js @@ -74,10 +74,10 @@ class AppLoader extends types_1.AppLoader { constructor(path, contextBuilder, dbConfig) { super(path); const { storageSchema } = require(`${path}/lib/oak-app-domain/Storage`); - const { ActionCascadePathGraph, RelationCascadePathGraph, selectFreeEntities, deducedRelationMap } = require(`${path}/lib/oak-app-domain/Relation`); + const { ActionCascadePathGraph, RelationCascadePathGraph, selectFreeEntities, createFreeEntities, updateFreeEntities, deducedRelationMap } = require(`${path}/lib/oak-app-domain/Relation`); this.externalDependencies = require((0, env_1.OAK_EXTERNAL_LIBS_FILEPATH)((0, path_1.join)(path, 'lib'))); this.aspectDict = Object.assign({}, index_1.default, this.requireSth('lib/aspects/index')); - this.dbStore = new DbStore_1.DbStore(storageSchema, contextBuilder, dbConfig, ActionCascadePathGraph, RelationCascadePathGraph, deducedRelationMap, selectFreeEntities); + this.dbStore = new DbStore_1.DbStore(storageSchema, contextBuilder, dbConfig, ActionCascadePathGraph, RelationCascadePathGraph, deducedRelationMap, selectFreeEntities, createFreeEntities, updateFreeEntities); this.contextBuilder = contextBuilder; } initTriggers() { diff --git a/lib/DbStore.d.ts b/lib/DbStore.d.ts index b8c0e37..47047c9 100644 --- a/lib/DbStore.d.ts +++ b/lib/DbStore.d.ts @@ -6,7 +6,7 @@ import { AsyncContext, AsyncRowStore } from 'oak-domain/lib/store/AsyncRowStore' export declare class DbStore> extends MysqlStore implements AsyncRowStore { private executor; private relationAuth; - constructor(storageSchema: StorageSchema, contextBuilder: (scene?: string) => (store: DbStore) => Promise, mysqlConfiguration: MySQLConfiguration, actionCascadeGraph: AuthCascadePath[], relationCascadeGraph: AuthCascadePath[], authDeduceRelationMap: AuthDeduceRelationMap, selectFreeEntities: (keyof ED)[]); + constructor(storageSchema: StorageSchema, contextBuilder: (scene?: string) => (store: DbStore) => Promise, mysqlConfiguration: MySQLConfiguration, actionCascadeGraph: AuthCascadePath[], relationCascadeGraph: AuthCascadePath[], authDeduceRelationMap: AuthDeduceRelationMap, selectFreeEntities?: (keyof ED)[], createFreeEntities?: (keyof ED)[], updateFreeEntities?: (keyof ED)[]); 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 c295bb1..07f9539 100644 --- a/lib/DbStore.js +++ b/lib/DbStore.js @@ -7,10 +7,10 @@ const RelationAuth_1 = require("oak-domain/lib/store/RelationAuth"); class DbStore extends oak_db_1.MysqlStore { executor; relationAuth; - constructor(storageSchema, contextBuilder, mysqlConfiguration, actionCascadeGraph, relationCascadeGraph, authDeduceRelationMap, selectFreeEntities) { + constructor(storageSchema, contextBuilder, mysqlConfiguration, actionCascadeGraph, relationCascadeGraph, authDeduceRelationMap, selectFreeEntities = [], createFreeEntities = [], updateFreeEntities = []) { super(storageSchema, mysqlConfiguration); this.executor = new TriggerExecutor_1.TriggerExecutor((scene) => contextBuilder(scene)(this)); - this.relationAuth = new RelationAuth_1.RelationAuth(storageSchema, actionCascadeGraph, relationCascadeGraph, authDeduceRelationMap, selectFreeEntities); + this.relationAuth = new RelationAuth_1.RelationAuth(storageSchema, actionCascadeGraph, relationCascadeGraph, authDeduceRelationMap, selectFreeEntities, createFreeEntities, updateFreeEntities); } async cascadeUpdateAsync(entity, operation, context, option) { // 如果是在modi处理过程中,所有的trigger也可以延时到apply时再处理(这时候因为modi中的数据并不实际存在,处理会有问题) diff --git a/src/AppLoader.ts b/src/AppLoader.ts index 173efe1..5a2952f 100644 --- a/src/AppLoader.ts +++ b/src/AppLoader.ts @@ -94,10 +94,11 @@ export class AppLoader (store: DbStore) => Promise, dbConfig: MySQLConfiguration) { super(path); const { storageSchema } = require(`${path}/lib/oak-app-domain/Storage`); - const { ActionCascadePathGraph, RelationCascadePathGraph, selectFreeEntities, deducedRelationMap } = require(`${path}/lib/oak-app-domain/Relation`); + const { ActionCascadePathGraph, RelationCascadePathGraph, selectFreeEntities, createFreeEntities, updateFreeEntities, deducedRelationMap } = require(`${path}/lib/oak-app-domain/Relation`); this.externalDependencies = require(OAK_EXTERNAL_LIBS_FILEPATH(join(path, 'lib'))); this.aspectDict = Object.assign({}, generalAspectDict, this.requireSth('lib/aspects/index')); - this.dbStore = new DbStore(storageSchema, contextBuilder, dbConfig, ActionCascadePathGraph, RelationCascadePathGraph, deducedRelationMap, selectFreeEntities); + this.dbStore = new DbStore(storageSchema, contextBuilder, dbConfig, ActionCascadePathGraph, RelationCascadePathGraph, deducedRelationMap, + selectFreeEntities, createFreeEntities, updateFreeEntities); this.contextBuilder = contextBuilder; } diff --git a/src/DbStore.ts b/src/DbStore.ts index 4051c61..7caa032 100644 --- a/src/DbStore.ts +++ b/src/DbStore.ts @@ -18,10 +18,13 @@ export class DbStore[], relationCascadeGraph: AuthCascadePath[], authDeduceRelationMap: AuthDeduceRelationMap, - selectFreeEntities: (keyof ED)[]) { + selectFreeEntities: (keyof ED)[] = [], + createFreeEntities: (keyof ED)[] = [], + updateFreeEntities: (keyof ED)[] = []) { super(storageSchema, mysqlConfiguration); this.executor = new TriggerExecutor((scene) => contextBuilder(scene)(this)); - this.relationAuth = new RelationAuth(storageSchema, actionCascadeGraph, relationCascadeGraph, authDeduceRelationMap, selectFreeEntities); + this.relationAuth = new RelationAuth(storageSchema, actionCascadeGraph, relationCascadeGraph, + authDeduceRelationMap, selectFreeEntities, createFreeEntities, updateFreeEntities); } protected async cascadeUpdateAsync(entity: T, operation: ED[T]['Operation'], context: AsyncContext, option: MysqlOperateOption) { From c2f1ec44d63efd3c82f65e60d6f4e2323e2084ed Mon Sep 17 00:00:00 2001 From: Xc Date: Wed, 23 Aug 2023 17:37:13 +0800 Subject: [PATCH 3/4] 3.0.0-publish --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index dff0831..db85224 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "oak-backend-base", - "version": "2.4.3", + "version": "3.0.0", "description": "oak-backend-base", "main": "lib/index", "author": { @@ -20,9 +20,9 @@ "mysql": "^2.18.1", "mysql2": "^2.3.3", "node-schedule": "^2.1.0", - "oak-common-aspect": "file:../oak-common-aspect", - "oak-db": "file:../oak-db", - "oak-domain": "file:../oak-domain", + "oak-common-aspect": "^2.2.1", + "oak-db": "^3.0.0", + "oak-domain": "^3.0.0", "uuid": "^8.3.2" }, "license": "ISC", From c940e7c674907045969cc0b17b4565a2e8189023 Mon Sep 17 00:00:00 2001 From: Xc Date: Wed, 23 Aug 2023 17:37:57 +0800 Subject: [PATCH 4/4] 3.0.1-dev --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index db85224..371901e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "oak-backend-base", - "version": "3.0.0", + "version": "3.0.1", "description": "oak-backend-base", "main": "lib/index", "author": { @@ -20,9 +20,9 @@ "mysql": "^2.18.1", "mysql2": "^2.3.3", "node-schedule": "^2.1.0", - "oak-common-aspect": "^2.2.1", - "oak-db": "^3.0.0", - "oak-domain": "^3.0.0", + "oak-common-aspect": "file:../oak-common-aspect", + "oak-db": "file:../oak-db", + "oak-domain": "file:../oak-domain", "uuid": "^8.3.2" }, "license": "ISC",