Merge branch 'auth' of codeup.aliyun.com:61c14a7efa282c88e103c23f/oak-backend-base into auth
This commit is contained in:
commit
80e51d39ef
|
|
@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
|
||||||
const fs_1 = require("fs");
|
const fs_1 = require("fs");
|
||||||
const path_1 = require("path");
|
const path_1 = require("path");
|
||||||
const node_schedule_1 = require("node-schedule");
|
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 actionDef_1 = require("oak-domain/lib/store/actionDef");
|
||||||
const lodash_1 = require("oak-domain/lib/utils/lodash");
|
const lodash_1 = require("oak-domain/lib/utils/lodash");
|
||||||
const uuid_1 = require("oak-domain/lib/utils/uuid");
|
const uuid_1 = require("oak-domain/lib/utils/uuid");
|
||||||
|
|
@ -73,10 +74,10 @@ class AppLoader extends types_1.AppLoader {
|
||||||
constructor(path, contextBuilder, dbConfig) {
|
constructor(path, contextBuilder, dbConfig) {
|
||||||
super(path);
|
super(path);
|
||||||
const { storageSchema } = require(`${path}/lib/oak-app-domain/Storage`);
|
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(`${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.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;
|
this.contextBuilder = contextBuilder;
|
||||||
}
|
}
|
||||||
initTriggers() {
|
initTriggers() {
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import { AsyncContext, AsyncRowStore } from 'oak-domain/lib/store/AsyncRowStore'
|
||||||
export declare class DbStore<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> extends MysqlStore<ED, Cxt> implements AsyncRowStore<ED, Cxt> {
|
export declare class DbStore<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> extends MysqlStore<ED, Cxt> implements AsyncRowStore<ED, Cxt> {
|
||||||
private executor;
|
private executor;
|
||||||
private relationAuth;
|
private relationAuth;
|
||||||
constructor(storageSchema: StorageSchema<ED>, contextBuilder: (scene?: string) => (store: DbStore<ED, Cxt>) => Promise<Cxt>, mysqlConfiguration: MySQLConfiguration, actionCascadeGraph: AuthCascadePath<ED>[], relationCascadeGraph: AuthCascadePath<ED>[], authDeduceRelationMap: AuthDeduceRelationMap<ED>, selectFreeEntities: (keyof ED)[]);
|
constructor(storageSchema: StorageSchema<ED>, contextBuilder: (scene?: string) => (store: DbStore<ED, Cxt>) => Promise<Cxt>, mysqlConfiguration: MySQLConfiguration, actionCascadeGraph: AuthCascadePath<ED>[], relationCascadeGraph: AuthCascadePath<ED>[], authDeduceRelationMap: AuthDeduceRelationMap<ED>, selectFreeEntities?: (keyof ED)[], createFreeEntities?: (keyof ED)[], updateFreeEntities?: (keyof ED)[]);
|
||||||
protected cascadeUpdateAsync<T extends keyof ED>(entity: T, operation: ED[T]['Operation'], context: AsyncContext<ED>, option: MysqlOperateOption): Promise<import("oak-domain/lib/types").OperationResult<ED>>;
|
protected cascadeUpdateAsync<T extends keyof ED>(entity: T, operation: ED[T]['Operation'], context: AsyncContext<ED>, option: MysqlOperateOption): Promise<import("oak-domain/lib/types").OperationResult<ED>>;
|
||||||
operate<T extends keyof ED>(entity: T, operation: ED[T]['Operation'], context: Cxt, option: MysqlOperateOption): Promise<import("oak-domain/lib/types").OperationResult<ED>>;
|
operate<T extends keyof ED>(entity: T, operation: ED[T]['Operation'], context: Cxt, option: MysqlOperateOption): Promise<import("oak-domain/lib/types").OperationResult<ED>>;
|
||||||
select<T extends keyof ED>(entity: T, selection: ED[T]['Selection'], context: Cxt, option: MySqlSelectOption): Promise<Partial<ED[T]["Schema"]>[]>;
|
select<T extends keyof ED>(entity: T, selection: ED[T]['Selection'], context: Cxt, option: MySqlSelectOption): Promise<Partial<ED[T]["Schema"]>[]>;
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,10 @@ const RelationAuth_1 = require("oak-domain/lib/store/RelationAuth");
|
||||||
class DbStore extends oak_db_1.MysqlStore {
|
class DbStore extends oak_db_1.MysqlStore {
|
||||||
executor;
|
executor;
|
||||||
relationAuth;
|
relationAuth;
|
||||||
constructor(storageSchema, contextBuilder, mysqlConfiguration, actionCascadeGraph, relationCascadeGraph, authDeduceRelationMap, selectFreeEntities) {
|
constructor(storageSchema, contextBuilder, mysqlConfiguration, actionCascadeGraph, relationCascadeGraph, authDeduceRelationMap, selectFreeEntities = [], createFreeEntities = [], updateFreeEntities = []) {
|
||||||
super(storageSchema, mysqlConfiguration);
|
super(storageSchema, mysqlConfiguration);
|
||||||
this.executor = new TriggerExecutor_1.TriggerExecutor((scene) => contextBuilder(scene)(this));
|
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) {
|
async cascadeUpdateAsync(entity, operation, context, option) {
|
||||||
// 如果是在modi处理过程中,所有的trigger也可以延时到apply时再处理(这时候因为modi中的数据并不实际存在,处理会有问题)
|
// 如果是在modi处理过程中,所有的trigger也可以延时到apply时再处理(这时候因为modi中的数据并不实际存在,处理会有问题)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "oak-backend-base",
|
"name": "oak-backend-base",
|
||||||
"version": "2.4.3",
|
"version": "3.0.1",
|
||||||
"description": "oak-backend-base",
|
"description": "oak-backend-base",
|
||||||
"main": "lib/index",
|
"main": "lib/index",
|
||||||
"author": {
|
"author": {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import { existsSync } from 'fs';
|
import { existsSync } from 'fs';
|
||||||
import { join } from 'path';
|
import { join } from 'path';
|
||||||
import { scheduleJob } from 'node-schedule';
|
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 { makeIntrinsicCTWs } from "oak-domain/lib/store/actionDef";
|
||||||
import { intersection } from 'oak-domain/lib/utils/lodash';
|
import { intersection } from 'oak-domain/lib/utils/lodash';
|
||||||
import { createDynamicCheckers } from 'oak-domain/lib/checkers';
|
import { createDynamicCheckers } from 'oak-domain/lib/checkers';
|
||||||
|
|
@ -93,10 +94,11 @@ export class AppLoader<ED extends EntityDict & BaseEntityDict, Cxt extends Async
|
||||||
constructor(path: string, contextBuilder: (scene?: string) => (store: DbStore<ED, Cxt>) => Promise<Cxt>, dbConfig: MySQLConfiguration) {
|
constructor(path: string, contextBuilder: (scene?: string) => (store: DbStore<ED, Cxt>) => Promise<Cxt>, dbConfig: MySQLConfiguration) {
|
||||||
super(path);
|
super(path);
|
||||||
const { storageSchema } = require(`${path}/lib/oak-app-domain/Storage`);
|
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(`${path}/lib/config/externalDependencies`).default;
|
this.externalDependencies = require(OAK_EXTERNAL_LIBS_FILEPATH(join(path, 'lib')));
|
||||||
this.aspectDict = Object.assign({}, generalAspectDict, this.requireSth('lib/aspects/index'));
|
this.aspectDict = Object.assign({}, generalAspectDict, this.requireSth('lib/aspects/index'));
|
||||||
this.dbStore = new DbStore<ED, Cxt>(storageSchema, contextBuilder, dbConfig, ActionCascadePathGraph, RelationCascadePathGraph, deducedRelationMap, selectFreeEntities);
|
this.dbStore = new DbStore<ED, Cxt>(storageSchema, contextBuilder, dbConfig, ActionCascadePathGraph, RelationCascadePathGraph, deducedRelationMap,
|
||||||
|
selectFreeEntities, createFreeEntities, updateFreeEntities);
|
||||||
this.contextBuilder = contextBuilder;
|
this.contextBuilder = contextBuilder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,10 +18,13 @@ export class DbStore<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncCo
|
||||||
actionCascadeGraph: AuthCascadePath<ED>[],
|
actionCascadeGraph: AuthCascadePath<ED>[],
|
||||||
relationCascadeGraph: AuthCascadePath<ED>[],
|
relationCascadeGraph: AuthCascadePath<ED>[],
|
||||||
authDeduceRelationMap: AuthDeduceRelationMap<ED>,
|
authDeduceRelationMap: AuthDeduceRelationMap<ED>,
|
||||||
selectFreeEntities: (keyof ED)[]) {
|
selectFreeEntities: (keyof ED)[] = [],
|
||||||
|
createFreeEntities: (keyof ED)[] = [],
|
||||||
|
updateFreeEntities: (keyof ED)[] = []) {
|
||||||
super(storageSchema, mysqlConfiguration);
|
super(storageSchema, mysqlConfiguration);
|
||||||
this.executor = new TriggerExecutor((scene) => contextBuilder(scene)(this));
|
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<T extends keyof ED>(entity: T, operation: ED[T]['Operation'], context: AsyncContext<ED>, option: MysqlOperateOption) {
|
protected async cascadeUpdateAsync<T extends keyof ED>(entity: T, operation: ED[T]['Operation'], context: AsyncContext<ED>, option: MysqlOperateOption) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue