Merge branch 'release'

This commit is contained in:
Xu Chang 2024-03-13 20:50:03 +08:00
commit 033a0e0fb9
17 changed files with 32 additions and 30 deletions

View File

@ -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;

View File

@ -29,7 +29,7 @@ exports.desc = {
notNull: true,
type: "varchar",
params: {
length: 16
length: 24
}
},
data: {

View File

@ -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;

View File

@ -8,7 +8,7 @@ exports.desc = {
notNull: true,
type: "varchar",
params: {
length: 16
length: 24
}
},
data: {

View File

@ -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}定义不是字符串类型`);

View File

@ -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;

View File

@ -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;

View File

@ -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',

View File

@ -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;

View File

@ -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';
};

View File

@ -1,6 +1,6 @@
{
"name": "oak-domain",
"version": "4.2.6",
"version": "4.2.7",
"author": {
"name": "XuChang"
},

View File

@ -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}定义不是字符串类型`)

View File

@ -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;

View File

@ -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;

View File

@ -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',

View File

@ -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);
}

View File

@ -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';