Merge branch 'release'
This commit is contained in:
commit
033a0e0fb9
|
|
@ -8,7 +8,7 @@ export type OpSchema = EntityShape & {
|
|||
targetEntity: String<32>;
|
||||
entity: String<32>;
|
||||
entityId: String<64>;
|
||||
action: String<16>;
|
||||
action: String<24>;
|
||||
data: Object;
|
||||
filter?: Object | null;
|
||||
extra?: Object | null;
|
||||
|
|
@ -19,7 +19,7 @@ export type Schema = EntityShape & {
|
|||
targetEntity: String<32>;
|
||||
entity: String<32>;
|
||||
entityId: String<64>;
|
||||
action: String<16>;
|
||||
action: String<24>;
|
||||
data: Object;
|
||||
filter?: Object | null;
|
||||
extra?: Object | null;
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ exports.desc = {
|
|||
notNull: true,
|
||||
type: "varchar",
|
||||
params: {
|
||||
length: 16
|
||||
length: 24
|
||||
}
|
||||
},
|
||||
data: {
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import { String, Datetime } from "../../types/DataType";
|
|||
import * as User from "../User/Schema";
|
||||
import * as OperEntity from "../OperEntity/Schema";
|
||||
export type OpSchema = EntityShape & {
|
||||
action: String<16>;
|
||||
action: String<24>;
|
||||
data: Object;
|
||||
filter?: Object | null;
|
||||
extra?: Object | null;
|
||||
|
|
@ -17,7 +17,7 @@ export type OpSchema = EntityShape & {
|
|||
};
|
||||
export type OpAttr = keyof OpSchema;
|
||||
export type Schema = EntityShape & {
|
||||
action: String<16>;
|
||||
action: String<24>;
|
||||
data: Object;
|
||||
filter?: Object | null;
|
||||
extra?: Object | null;
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ exports.desc = {
|
|||
notNull: true,
|
||||
type: "varchar",
|
||||
params: {
|
||||
length: 16
|
||||
length: 24
|
||||
}
|
||||
},
|
||||
data: {
|
||||
|
|
|
|||
|
|
@ -966,6 +966,8 @@ function analyzeEntity(filename, path, program, relativePath) {
|
|||
(0, assert_1.default)(typeArguments.length === 2);
|
||||
const [actionNode, stateNode] = typeArguments;
|
||||
(0, assert_1.default)(ts.isTypeReferenceNode(actionNode));
|
||||
// 这里有可能引用的Action不是本文件的定义,要调用这个函数加到importFrom中
|
||||
tryGetStringLiteralValues(moduleName, filename, 'action', actionNode, program);
|
||||
(0, assert_1.default)(ts.isTypeReferenceNode(stateNode));
|
||||
const enumStateValues = tryGetStringLiteralValues(moduleName, filename, 'state', stateNode, program);
|
||||
(0, assert_1.default)(enumStateValues.length > 0, `文件${filename}中的state${stateNode.typeName.text}定义不是字符串类型`);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ export interface Schema extends EntityShape {
|
|||
targetEntity: String<32>;
|
||||
entity: String<32>;
|
||||
entityId: String<64>;
|
||||
action: String<16>;
|
||||
action: String<24>;
|
||||
data: Object;
|
||||
filter?: Object;
|
||||
extra?: Object;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import { String, Datetime } from '../types/DataType';
|
|||
import { EntityShape } from '../types/Entity';
|
||||
import { Schema as User } from './User';
|
||||
export interface Schema extends EntityShape {
|
||||
action: String<16>;
|
||||
action: String<24>;
|
||||
data: Object;
|
||||
filter?: Object;
|
||||
extra?: Object;
|
||||
|
|
|
|||
|
|
@ -1163,7 +1163,7 @@ class CascadeStore extends RowStore_1.RowStore {
|
|||
data,
|
||||
operatorId,
|
||||
targetEntity: entity,
|
||||
bornAt,
|
||||
bornAt: bornAt || now,
|
||||
operEntity$oper: data instanceof Array ? {
|
||||
id: 'dummy',
|
||||
action: 'create',
|
||||
|
|
@ -1317,7 +1317,7 @@ class CascadeStore extends RowStore_1.RowStore {
|
|||
action,
|
||||
data,
|
||||
targetEntity: entity,
|
||||
bornAt,
|
||||
bornAt: bornAt || now,
|
||||
operatorId,
|
||||
operEntity$oper: {
|
||||
id: 'dummy',
|
||||
|
|
|
|||
|
|
@ -1,10 +1,8 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.createDynamicTriggers = void 0;
|
||||
const tslib_1 = require("tslib");
|
||||
const assert_1 = tslib_1.__importDefault(require("assert"));
|
||||
const modi_1 = require("../store/modi");
|
||||
function createOperTriggers() {
|
||||
/* function createOperTriggers<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED> | SyncContext<ED>>() {
|
||||
return [
|
||||
{
|
||||
name: 'assign initial bornAt for local oper',
|
||||
|
|
@ -13,16 +11,16 @@ function createOperTriggers() {
|
|||
when: 'before',
|
||||
fn({ operation }) {
|
||||
const { data } = operation;
|
||||
(0, assert_1.default)(!(data instanceof Array));
|
||||
assert(!(data instanceof Array));
|
||||
if (!data.bornAt) {
|
||||
data.bornAt = Date.now();
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
];
|
||||
}
|
||||
} as CreateTrigger<ED, 'oper', Cxt>
|
||||
] as Trigger<ED, keyof ED, Cxt>[];
|
||||
} */
|
||||
function createDynamicTriggers(schema) {
|
||||
return (0, modi_1.createModiRelatedTriggers)(schema).concat(createOperTriggers());
|
||||
return (0, modi_1.createModiRelatedTriggers)(schema);
|
||||
}
|
||||
exports.createDynamicTriggers = createDynamicTriggers;
|
||||
|
|
|
|||
|
|
@ -79,9 +79,9 @@ export declare function isRefAttrNode<A>(node: any): node is RefAttr<A>;
|
|||
export type JsonFilter<O extends any> = O extends Array<infer P> ? (JsonFilter<P> | undefined)[] | {
|
||||
$contains?: P | P[];
|
||||
$overlaps?: P | P[];
|
||||
} : O extends number ? Q_NumberValue : O extends string ? Q_StringValue : O extends boolean ? Q_BooleanValue : O extends Record<string, any> ? {
|
||||
} | Q_ExistsValue : O extends number ? Q_NumberValue : O extends string ? Q_StringValue : O extends boolean ? Q_BooleanValue : O extends Record<string, any> ? {
|
||||
[A in keyof O]?: JsonFilter<O[A]>;
|
||||
} : never;
|
||||
} | Q_ExistsValue : never;
|
||||
export type SubQueryPredicateMetadata = {
|
||||
'#sqp'?: 'in' | 'not in' | 'all' | 'not all';
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "oak-domain",
|
||||
"version": "4.2.6",
|
||||
"version": "4.2.7",
|
||||
"author": {
|
||||
"name": "XuChang"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1315,6 +1315,8 @@ function analyzeEntity(filename: string, path: string, program: ts.Program, rela
|
|||
const [actionNode, stateNode] = typeArguments!;
|
||||
|
||||
assert(ts.isTypeReferenceNode(actionNode));
|
||||
// 这里有可能引用的Action不是本文件的定义,要调用这个函数加到importFrom中
|
||||
tryGetStringLiteralValues(moduleName, filename, 'action', actionNode, program);
|
||||
assert(ts.isTypeReferenceNode(stateNode));
|
||||
const enumStateValues = tryGetStringLiteralValues(moduleName, filename, 'state', stateNode, program);
|
||||
assert(enumStateValues.length > 0, `文件${filename}中的state${(<ts.Identifier>stateNode.typeName).text}定义不是字符串类型`)
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ export interface Schema extends EntityShape {
|
|||
targetEntity: String<32>; // 要操作的目标对象
|
||||
entity: String<32>; // 关联的目标对象
|
||||
entityId: String<64>; // 关联的目标对象id
|
||||
action: String<16>;
|
||||
action: String<24>;
|
||||
data: Object;
|
||||
filter?: Object;
|
||||
extra?: Object;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import { Schema as User } from './User';
|
|||
import { EntityDesc } from '../types/EntityDesc';
|
||||
|
||||
export interface Schema extends EntityShape {
|
||||
action: String<16>;
|
||||
action: String<24>;
|
||||
data: Object;
|
||||
filter?: Object;
|
||||
extra?: Object;
|
||||
|
|
|
|||
|
|
@ -1432,7 +1432,7 @@ export abstract class CascadeStore<ED extends EntityDict & BaseEntityDict> exten
|
|||
data,
|
||||
operatorId,
|
||||
targetEntity: entity as string,
|
||||
bornAt,
|
||||
bornAt: bornAt || now,
|
||||
operEntity$oper: data instanceof Array ? {
|
||||
id: 'dummy',
|
||||
action: 'create',
|
||||
|
|
@ -1595,7 +1595,7 @@ export abstract class CascadeStore<ED extends EntityDict & BaseEntityDict> exten
|
|||
action,
|
||||
data,
|
||||
targetEntity: entity as string,
|
||||
bornAt,
|
||||
bornAt: bornAt || now,
|
||||
operatorId,
|
||||
operEntity$oper: {
|
||||
id: 'dummy',
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import { createModiRelatedTriggers } from '../store/modi';
|
|||
import { AsyncContext } from '../store/AsyncRowStore';
|
||||
import { SyncContext } from '../store/SyncRowStore';
|
||||
|
||||
function createOperTriggers<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED> | SyncContext<ED>>() {
|
||||
/* function createOperTriggers<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED> | SyncContext<ED>>() {
|
||||
return [
|
||||
{
|
||||
name: 'assign initial bornAt for local oper',
|
||||
|
|
@ -22,8 +22,8 @@ function createOperTriggers<ED extends EntityDict & BaseEntityDict, Cxt extends
|
|||
}
|
||||
} as CreateTrigger<ED, 'oper', Cxt>
|
||||
] as Trigger<ED, keyof ED, Cxt>[];
|
||||
}
|
||||
} */
|
||||
|
||||
export function createDynamicTriggers<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED> | SyncContext<ED>>(schema: StorageSchema<ED>) {
|
||||
return createModiRelatedTriggers<ED, Cxt>(schema).concat(createOperTriggers());
|
||||
return createModiRelatedTriggers<ED, Cxt>(schema);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -112,12 +112,12 @@ export function isRefAttrNode<A>(node: any): node is RefAttr<A> {
|
|||
export type JsonFilter<O extends any> = O extends Array<infer P> ? (JsonFilter<P> | undefined)[] | {
|
||||
$contains?: P | P[];
|
||||
$overlaps?: P | P[];
|
||||
} : O extends number ? Q_NumberValue
|
||||
} | Q_ExistsValue : O extends number ? Q_NumberValue
|
||||
: O extends string ? Q_StringValue
|
||||
: O extends boolean ? Q_BooleanValue
|
||||
: O extends Record<string, any> ? {
|
||||
[A in keyof O]?: JsonFilter<O[A]>;
|
||||
} : never;
|
||||
} | Q_ExistsValue: never;
|
||||
|
||||
export type SubQueryPredicateMetadata = {
|
||||
'#sqp'?: 'in' | 'not in' | 'all' | 'not all';
|
||||
|
|
|
|||
Loading…
Reference in New Issue