适配框架为集群环境的变动

This commit is contained in:
Xu Chang 2023-12-13 11:48:20 +08:00
parent b1f0eba288
commit 70f1d01fd9
27 changed files with 119 additions and 50 deletions

View File

@ -1,7 +1,7 @@
import { Style } from '../../../../types/Style';
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../../oak-app-domain").EntityDict, keyof import("../../../../oak-app-domain").EntityDict, false, {
style: Style;
entity: "application" | "platform" | "system";
entity: "application" | "system" | "platform";
entityId: string;
name: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;

View File

@ -1,7 +1,7 @@
import { Config } from '../../../types/Config';
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, keyof import("../../../oak-app-domain").EntityDict, false, {
config: Config;
entity: "platform" | "system";
entity: "system" | "platform";
name: string;
entityId: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;

View File

@ -12,9 +12,9 @@ declare const _default: <ED2 extends EntityDict & BaseEntityDict, T2 extends key
type?: ButtonProps['type'] | AmButtonProps['type'];
executeText?: string | undefined;
buttonProps?: (ButtonProps & {
color?: "success" | "default" | "warning" | "primary" | "danger" | undefined;
color?: "default" | "success" | "primary" | "warning" | "danger" | undefined;
fill?: "none" | "solid" | "outline" | undefined;
size?: "small" | "middle" | "large" | "mini" | undefined;
size?: "small" | "large" | "middle" | "mini" | undefined;
block?: boolean | undefined;
loading?: boolean | "auto" | undefined;
loadingText?: string | undefined;
@ -24,7 +24,7 @@ declare const _default: <ED2 extends EntityDict & BaseEntityDict, T2 extends key
type?: "button" | "reset" | "submit" | undefined;
shape?: "default" | "rounded" | "rectangular" | undefined;
children?: import("react").ReactNode;
} & Pick<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement>, "id" | "onMouseDown" | "onMouseUp" | "onTouchStart" | "onTouchEnd"> & {
} & Pick<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement>, "id" | "onMouseUp" | "onMouseDown" | "onTouchStart" | "onTouchEnd"> & {
className?: string | undefined;
style?: (import("react").CSSProperties & Partial<Record<"--text-color" | "--background-color" | "--border-radius" | "--border-width" | "--border-style" | "--border-color", string>>) | undefined;
tabIndex?: number | undefined;

View File

@ -1,6 +1,6 @@
import { EntityDict } from '../../../oak-app-domain';
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<EntityDict, keyof EntityDict, false, {
type: "bind" | "login";
type: "login" | "bind";
url: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
export default _default;

View File

@ -9,7 +9,7 @@ import { GAD, GFD } from './types/Page';
import type GeneralAspectDict from './aspects/AspectDict';
import { AppType } from './oak-app-domain/Application/Schema';
import { InitializeOptions } from 'oak-frontend-base';
export declare function initialize<ED extends EntityDict & BaseEntityDict, Cxt extends BackendRuntimeContext<ED>, AD extends Record<string, Aspect<ED, Cxt>>, FrontCxt extends FrontendRuntimeContext<ED, Cxt, AD & GAD<ED, Cxt>>>(type: AppType, domain: string, storageSchema: StorageSchema<ED>, frontendContextBuilder: () => (store: CacheStore<ED, FrontCxt>) => FrontCxt, backendContextBuilder: (contextStr?: string) => (store: AsyncRowStore<ED, Cxt>) => Promise<Cxt>, aspectDict: AD, triggers: Array<Trigger<ED, keyof ED, Cxt>>, checkers: Array<Checker<ED, keyof ED, FrontCxt | Cxt>>, watchers: Array<Watcher<ED, keyof ED, Cxt>>, timers: Array<Timer<ED, Cxt>>, startRoutines: Array<Routine<ED, Cxt>>, initialData: {
export declare function initialize<ED extends EntityDict & BaseEntityDict, Cxt extends BackendRuntimeContext<ED>, AD extends Record<string, Aspect<ED, Cxt>>, FrontCxt extends FrontendRuntimeContext<ED, Cxt, AD & GAD<ED, Cxt>>>(type: AppType, domain: string, storageSchema: StorageSchema<ED>, frontendContextBuilder: () => (store: CacheStore<ED, FrontCxt>) => FrontCxt, backendContextBuilder: (contextStr?: string) => (store: AsyncRowStore<ED, Cxt>) => Promise<Cxt>, aspectDict: AD, triggers: Array<Trigger<ED, keyof ED, Cxt>>, checkers: Array<Checker<ED, keyof ED, FrontCxt | Cxt>>, watchers: Array<Watcher<ED, keyof ED, Cxt>>, timers: Array<Timer<ED, keyof ED, Cxt>>, startRoutines: Array<Routine<ED, keyof ED, Cxt>>, initialData: {
[T in keyof ED]?: Array<ED[T]['OpSchema']>;
}, option: InitializeOptions<ED, Cxt>): {
features: GFD<ED, Cxt, FrontCxt, AD & GeneralAspectDict<ED, Cxt> & import("oak-common-aspect").CommonAspectDict<ED, Cxt>>;

View File

@ -2,5 +2,5 @@ import { Routine } from 'oak-domain/lib/types/Timer';
import { EntityDict } from 'oak-domain/lib/types/Entity';
import { EntityDict as BaseEntityDict } from '../oak-app-domain';
import { BackendRuntimeContext } from '../context/BackendRuntimeContext';
declare const startRoutines: Array<Routine<EntityDict & BaseEntityDict, BackendRuntimeContext<EntityDict & BaseEntityDict>>>;
declare const startRoutines: Array<Routine<EntityDict & BaseEntityDict, keyof EntityDict & BaseEntityDict, BackendRuntimeContext<EntityDict & BaseEntityDict>>>;
export default startRoutines;

View File

@ -2,10 +2,10 @@ import { rewriteOperation, rewriteSelection } from '../utils/selectionRewriter';
const startRoutines = [
{
name: '注入对合并的user的selection的改写',
fn: async (context) => {
routine: async (context) => {
context.rowStore.registerSelectionRewriter(rewriteSelection);
context.rowStore.registerOperationRewriter(rewriteOperation);
return '注入成功';
return {};
},
}
];

View File

@ -39,8 +39,18 @@ const triggers = [
strict: 'makeSure',
entity: 'extraFile',
action: 'remove',
fn: async ({ rows }, context) => {
fn: async ({ ids }, context) => {
let number = 0;
const rows = await context.select('extraFile', {
data: {
id: 1,
origin: 1,
objectId: 1,
},
filter: {
id: { $in: ids },
},
}, {});
for (const extraFile of rows) {
const { origin, objectId } = extraFile;
// 用objectId来去重只有当没有还有效的objectId方可删除

View File

@ -1,2 +1,2 @@
declare const _default: (import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "account", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>>)[];
declare const _default: (import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "account", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>>)[];
export default _default;

View File

@ -238,10 +238,23 @@ const triggers = [
action: 'create',
when: 'commit',
strict: 'takeEasy',
fn: async ({ rows }, context) => {
fn: async ({ ids }, context) => {
const closeRootMode = context.openRootMode();
try {
for (const row of rows) {
for (const id of ids) {
const [row] = await context.select('notification', {
data: {
id: 1,
data: 1,
templateId: 1,
channel: 1,
messageSystemId: 1,
data1: 1,
},
filter: {
id,
},
}, {});
await sendNotification(row, context);
}
}

View File

@ -53,11 +53,10 @@ const triggers = [
action: 'create',
when: 'commit',
strict: 'takeEasy',
fn: async ({ rows }, context) => {
fn: async ({ ids }, context) => {
const closeRootMode = context.openRootMode();
try {
for (const row of rows) {
const { id } = row;
for (const id of ids) {
const [currentSessionMessage] = await context.select('sessionMessage', {
data: {
id: 1,

View File

@ -1,5 +1,5 @@
import { EntityDict as BaseEntityDict } from 'oak-domain/lib/types/Entity';
import { EntityDict } from '../oak-app-domain';
import { StorageSchema } from 'oak-domain/lib/types';
export declare function rewriteSelection<ED extends EntityDict & BaseEntityDict, T extends keyof ED>(schema: StorageSchema<ED>, entity: T, selection: ED[T]['Selection']): void;
export declare function rewriteSelection<ED extends EntityDict & BaseEntityDict, T extends keyof ED>(schema: StorageSchema<ED>, entity: T, selection: ED[T]['Selection'] | ED[T]['Aggregation']): void;
export declare function rewriteOperation<ED extends EntityDict & BaseEntityDict, T extends keyof ED>(schema: StorageSchema<ED>, entity: T, operation: ED[T]['Operation']): void;

View File

@ -1,2 +1,2 @@
declare const checkers: (import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "token", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "mobile", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "message", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "parasite", import("..").RuntimeCxt>)[];
declare const checkers: (import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "mobile", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "token", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "message", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "parasite", import("..").RuntimeCxt>)[];
export default checkers;

View File

@ -9,7 +9,7 @@ import { GAD, GFD } from './types/Page';
import type GeneralAspectDict from './aspects/AspectDict';
import { AppType } from './oak-app-domain/Application/Schema';
import { InitializeOptions } from 'oak-frontend-base';
export declare function initialize<ED extends EntityDict & BaseEntityDict, Cxt extends BackendRuntimeContext<ED>, AD extends Record<string, Aspect<ED, Cxt>>, FrontCxt extends FrontendRuntimeContext<ED, Cxt, AD & GAD<ED, Cxt>>>(type: AppType, domain: string, storageSchema: StorageSchema<ED>, frontendContextBuilder: () => (store: CacheStore<ED, FrontCxt>) => FrontCxt, backendContextBuilder: (contextStr?: string) => (store: AsyncRowStore<ED, Cxt>) => Promise<Cxt>, aspectDict: AD, triggers: Array<Trigger<ED, keyof ED, Cxt>>, checkers: Array<Checker<ED, keyof ED, FrontCxt | Cxt>>, watchers: Array<Watcher<ED, keyof ED, Cxt>>, timers: Array<Timer<ED, Cxt>>, startRoutines: Array<Routine<ED, Cxt>>, initialData: {
export declare function initialize<ED extends EntityDict & BaseEntityDict, Cxt extends BackendRuntimeContext<ED>, AD extends Record<string, Aspect<ED, Cxt>>, FrontCxt extends FrontendRuntimeContext<ED, Cxt, AD & GAD<ED, Cxt>>>(type: AppType, domain: string, storageSchema: StorageSchema<ED>, frontendContextBuilder: () => (store: CacheStore<ED, FrontCxt>) => FrontCxt, backendContextBuilder: (contextStr?: string) => (store: AsyncRowStore<ED, Cxt>) => Promise<Cxt>, aspectDict: AD, triggers: Array<Trigger<ED, keyof ED, Cxt>>, checkers: Array<Checker<ED, keyof ED, FrontCxt | Cxt>>, watchers: Array<Watcher<ED, keyof ED, Cxt>>, timers: Array<Timer<ED, keyof ED, Cxt>>, startRoutines: Array<Routine<ED, keyof ED, Cxt>>, initialData: {
[T in keyof ED]?: Array<ED[T]['OpSchema']>;
}, option: InitializeOptions<ED, Cxt>): {
features: GFD<ED, Cxt, FrontCxt, AD & GeneralAspectDict<ED, Cxt> & import("oak-common-aspect").CommonAspectDict<ED, Cxt>>;

View File

@ -2,5 +2,5 @@ import { Routine } from 'oak-domain/lib/types/Timer';
import { EntityDict } from 'oak-domain/lib/types/Entity';
import { EntityDict as BaseEntityDict } from '../oak-app-domain';
import { BackendRuntimeContext } from '../context/BackendRuntimeContext';
declare const startRoutines: Array<Routine<EntityDict & BaseEntityDict, BackendRuntimeContext<EntityDict & BaseEntityDict>>>;
declare const startRoutines: Array<Routine<EntityDict & BaseEntityDict, keyof EntityDict & BaseEntityDict, BackendRuntimeContext<EntityDict & BaseEntityDict>>>;
export default startRoutines;

View File

@ -4,10 +4,10 @@ const selectionRewriter_1 = require("../utils/selectionRewriter");
const startRoutines = [
{
name: '注入对合并的user的selection的改写',
fn: async (context) => {
routine: async (context) => {
context.rowStore.registerSelectionRewriter(selectionRewriter_1.rewriteSelection);
context.rowStore.registerOperationRewriter(selectionRewriter_1.rewriteOperation);
return '注入成功';
return {};
},
}
];

View File

@ -41,8 +41,18 @@ const triggers = [
strict: 'makeSure',
entity: 'extraFile',
action: 'remove',
fn: async ({ rows }, context) => {
fn: async ({ ids }, context) => {
let number = 0;
const rows = await context.select('extraFile', {
data: {
id: 1,
origin: 1,
objectId: 1,
},
filter: {
id: { $in: ids },
},
}, {});
for (const extraFile of rows) {
const { origin, objectId } = extraFile;
// 用objectId来去重只有当没有还有效的objectId方可删除

View File

@ -1,2 +1,2 @@
declare const _default: (import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "account", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>>)[];
declare const _default: (import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "account", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>>)[];
export default _default;

View File

@ -240,10 +240,23 @@ const triggers = [
action: 'create',
when: 'commit',
strict: 'takeEasy',
fn: async ({ rows }, context) => {
fn: async ({ ids }, context) => {
const closeRootMode = context.openRootMode();
try {
for (const row of rows) {
for (const id of ids) {
const [row] = await context.select('notification', {
data: {
id: 1,
data: 1,
templateId: 1,
channel: 1,
messageSystemId: 1,
data1: 1,
},
filter: {
id,
},
}, {});
await sendNotification(row, context);
}
}

View File

@ -55,11 +55,10 @@ const triggers = [
action: 'create',
when: 'commit',
strict: 'takeEasy',
fn: async ({ rows }, context) => {
fn: async ({ ids }, context) => {
const closeRootMode = context.openRootMode();
try {
for (const row of rows) {
const { id } = row;
for (const id of ids) {
const [currentSessionMessage] = await context.select('sessionMessage', {
data: {
id: 1,

View File

@ -1,5 +1,5 @@
import { EntityDict as BaseEntityDict } from 'oak-domain/lib/types/Entity';
import { EntityDict } from '../oak-app-domain';
import { StorageSchema } from 'oak-domain/lib/types';
export declare function rewriteSelection<ED extends EntityDict & BaseEntityDict, T extends keyof ED>(schema: StorageSchema<ED>, entity: T, selection: ED[T]['Selection']): void;
export declare function rewriteSelection<ED extends EntityDict & BaseEntityDict, T extends keyof ED>(schema: StorageSchema<ED>, entity: T, selection: ED[T]['Selection'] | ED[T]['Aggregation']): void;
export declare function rewriteOperation<ED extends EntityDict & BaseEntityDict, T extends keyof ED>(schema: StorageSchema<ED>, entity: T, operation: ED[T]['Operation']): void;

View File

@ -43,8 +43,8 @@ export function initialize<
triggers: Array<Trigger<ED, keyof ED, Cxt>>,
checkers: Array<Checker<ED, keyof ED, FrontCxt | Cxt>>,
watchers: Array<Watcher<ED, keyof ED, Cxt>>,
timers: Array<Timer<ED, Cxt>>,
startRoutines: Array<Routine<ED, Cxt>>,
timers: Array<Timer<ED, keyof ED, Cxt>>,
startRoutines: Array<Routine<ED, keyof ED, Cxt>>,
initialData: {
[T in keyof ED]?: Array<ED[T]['OpSchema']>;
},
@ -61,7 +61,7 @@ export function initialize<
const checkers2 = (generalCheckers as Array<Checker<ED, keyof ED, FrontCxt | Cxt>>).concat(checkers || []);
const triggers2 = (generalTriggers as Array<Trigger<ED, keyof ED, Cxt>>).concat(triggers || []);
const watchers2 = (generalWatchers as Array<Watcher<ED, keyof ED, Cxt>>).concat(watchers || []);
const startRoutines2 = (generalStartRoutines as Array<Routine<ED, Cxt>>).concat(startRoutines || []);
const startRoutines2 = (generalStartRoutines as Array<Routine<ED, keyof ED, Cxt>>).concat(startRoutines || []);
const data2 = Object.assign({}, generalData, initialData);
if (initialData) {

View File

@ -5,13 +5,13 @@ import { BackendRuntimeContext } from '../context/BackendRuntimeContext';
import { rewriteOperation, rewriteSelection } from '../utils/selectionRewriter';
const startRoutines: Array<Routine<EntityDict & BaseEntityDict, BackendRuntimeContext<EntityDict & BaseEntityDict>>> = [
const startRoutines: Array<Routine<EntityDict & BaseEntityDict, keyof EntityDict & BaseEntityDict, BackendRuntimeContext<EntityDict & BaseEntityDict>>> = [
{
name: '注入对合并的user的selection的改写',
fn: async (context) => {
routine: async (context) => {
context.rowStore.registerSelectionRewriter(rewriteSelection);
context.rowStore.registerOperationRewriter(rewriteOperation);
return '注入成功';
return {};
},
}
];

View File

@ -48,8 +48,18 @@ const triggers: Trigger<EntityDict, 'extraFile', BackendRuntimeContext<EntityDic
strict: 'makeSure',
entity: 'extraFile',
action: 'remove',
fn: async ({ rows }, context) => {
fn: async ({ ids }, context) => {
let number = 0;
const rows = await context.select('extraFile', {
data: {
id: 1,
origin: 1,
objectId: 1,
},
filter: {
id: { $in: ids },
},
}, {});
for (const extraFile of rows) {
const { origin, objectId } = extraFile;

View File

@ -276,11 +276,24 @@ const triggers: Trigger<EntityDict, 'notification', BackendRuntimeContext<Entity
action: 'create',
when: 'commit',
strict: 'takeEasy',
fn: async ({ rows }, context) => {
fn: async ({ ids }, context) => {
const closeRootMode = context.openRootMode();
try {
for (const row of rows) {
await sendNotification(row, context);
for (const id of ids) {
const [row] = await context.select('notification', {
data: {
id: 1,
data: 1,
templateId: 1,
channel: 1,
messageSystemId: 1,
data1: 1,
},
filter: {
id,
},
}, {});
await sendNotification(row as EntityDict['notification']['OpSchema'], context);
}
} catch (err) {
closeRootMode();

View File

@ -85,12 +85,10 @@ const triggers: Trigger<
action: 'create',
when: 'commit',
strict: 'takeEasy',
fn: async ({ rows }, context) => {
fn: async ({ ids }, context) => {
const closeRootMode = context.openRootMode();
try {
for (const row of rows) {
const { id } = row;
for (const id of ids) {
const [currentSessionMessage] = await context.select(
'sessionMessage',
{

View File

@ -152,7 +152,11 @@ function rewriteFilter<ED extends EntityDict & BaseEntityDict, T extends keyof E
return filter2;
}
export function rewriteSelection<ED extends EntityDict & BaseEntityDict, T extends keyof ED>(schema: StorageSchema<ED>, entity: T, selection: ED[T]['Selection']) {
export function rewriteSelection<ED extends EntityDict & BaseEntityDict, T extends keyof ED>(
schema: StorageSchema<ED>,
entity: T,
selection: ED[T]['Selection'] | ED[T]['Aggregation']
) {
const { filter, data } = selection;
if (filter && !filter['#oak-general-business--rewrited']) {
const filter2 = rewriteFilter(schema, entity, filter as NonNullable<ED[T]['Selection']['filter']>);
@ -163,17 +167,17 @@ export function rewriteSelection<ED extends EntityDict & BaseEntityDict, T exten
selection.filter = filter2;
}
// RewriteSelection只在入口处调用一次因此需要在这里处理一对多的projection
const rewriteProjection = (e: keyof ED, d: ED[keyof ED]['Selection']['data']) => {
const rewriteProjection = (e: keyof ED, d: ED[keyof ED]['Selection']['data'] | ED[keyof ED]['Aggregation']['data']) => {
for (const attr in d) {
const rel = judgeRelation(schema, e, attr);
if (rel === 2) {
rewriteProjection(attr, d[attr]);
rewriteProjection(attr, (d as ED[keyof ED]['Selection']['data'])[attr]);
}
else if (typeof rel === 'string') {
rewriteProjection(rel, d[attr]);
rewriteProjection(rel, (d as ED[keyof ED]['Selection']['data'])[attr]);
}
else if (typeof rel === 'object' && rel instanceof Array) {
rewriteSelection(schema, rel[0], d[attr]);
rewriteSelection(schema, rel[0], (d as ED[keyof ED]['Selection']['data'])[attr]);
}
}
}