From 70f1d01fd95233a80cc0f21fbdadc406e28214da Mon Sep 17 00:00:00 2001 From: "Xc@centOs" Date: Wed, 13 Dec 2023 11:48:20 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=82=E9=85=8D=E6=A1=86=E6=9E=B6=E4=B8=BA?= =?UTF-8?q?=E9=9B=86=E7=BE=A4=E7=8E=AF=E5=A2=83=E7=9A=84=E5=8F=98=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/style/platform/index.d.ts | 2 +- es/components/config/upsert/index.d.ts | 2 +- es/components/extraFile/commit/index.d.ts | 6 +++--- es/components/wechatLogin/qrCode/index.d.ts | 2 +- es/initialize.dev.d.ts | 2 +- es/routines/start.d.ts | 2 +- es/routines/start.js | 4 ++-- es/triggers/extraFile.js | 12 +++++++++++- es/triggers/index.d.ts | 2 +- es/triggers/notification.js | 17 +++++++++++++++-- es/triggers/sessionMessage.js | 5 ++--- es/utils/selectionRewriter.d.ts | 2 +- lib/checkers/index.d.ts | 2 +- lib/initialize.dev.d.ts | 2 +- lib/routines/start.d.ts | 2 +- lib/routines/start.js | 4 ++-- lib/triggers/extraFile.js | 12 +++++++++++- lib/triggers/index.d.ts | 2 +- lib/triggers/notification.js | 17 +++++++++++++++-- lib/triggers/sessionMessage.js | 5 ++--- lib/utils/selectionRewriter.d.ts | 2 +- src/initialize.dev.ts | 6 +++--- src/routines/start.ts | 6 +++--- src/triggers/extraFile.ts | 12 +++++++++++- src/triggers/notification.ts | 19 ++++++++++++++++--- src/triggers/sessionMessage.ts | 6 ++---- src/utils/selectionRewriter.ts | 14 +++++++++----- 27 files changed, 119 insertions(+), 50 deletions(-) diff --git a/es/components/config/style/platform/index.d.ts b/es/components/config/style/platform/index.d.ts index 0017a6f93..bd3579c54 100644 --- a/es/components/config/style/platform/index.d.ts +++ b/es/components/config/style/platform/index.d.ts @@ -1,7 +1,7 @@ import { Style } from '../../../../types/Style'; declare const _default: (props: import("oak-frontend-base").ReactComponentProps) => import("react").ReactElement>; diff --git a/es/components/config/upsert/index.d.ts b/es/components/config/upsert/index.d.ts index 26655e31f..6a8e95a3d 100644 --- a/es/components/config/upsert/index.d.ts +++ b/es/components/config/upsert/index.d.ts @@ -1,7 +1,7 @@ import { Config } from '../../../types/Config'; declare const _default: (props: import("oak-frontend-base").ReactComponentProps) => import("react").ReactElement>; diff --git a/es/components/extraFile/commit/index.d.ts b/es/components/extraFile/commit/index.d.ts index 6ae0fa0ba..dbf84b41c 100644 --- a/es/components/extraFile/commit/index.d.ts +++ b/es/components/extraFile/commit/index.d.ts @@ -12,9 +12,9 @@ declare const _default: & import("react").ButtonHTMLAttributes, "id" | "onMouseDown" | "onMouseUp" | "onTouchStart" | "onTouchEnd"> & { + } & Pick & import("react").ButtonHTMLAttributes, "id" | "onMouseUp" | "onMouseDown" | "onTouchStart" | "onTouchEnd"> & { className?: string | undefined; style?: (import("react").CSSProperties & Partial>) | undefined; tabIndex?: number | undefined; diff --git a/es/components/wechatLogin/qrCode/index.d.ts b/es/components/wechatLogin/qrCode/index.d.ts index 69727bd4d..8a45a21cf 100644 --- a/es/components/wechatLogin/qrCode/index.d.ts +++ b/es/components/wechatLogin/qrCode/index.d.ts @@ -1,6 +1,6 @@ import { EntityDict } from '../../../oak-app-domain'; declare const _default: (props: import("oak-frontend-base").ReactComponentProps) => import("react").ReactElement>; export default _default; diff --git a/es/initialize.dev.d.ts b/es/initialize.dev.d.ts index 0d00b06ba..903369348 100644 --- a/es/initialize.dev.d.ts +++ b/es/initialize.dev.d.ts @@ -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, AD extends Record>, FrontCxt extends FrontendRuntimeContext>>(type: AppType, domain: string, storageSchema: StorageSchema, frontendContextBuilder: () => (store: CacheStore) => FrontCxt, backendContextBuilder: (contextStr?: string) => (store: AsyncRowStore) => Promise, aspectDict: AD, triggers: Array>, checkers: Array>, watchers: Array>, timers: Array>, startRoutines: Array>, initialData: { +export declare function initialize, AD extends Record>, FrontCxt extends FrontendRuntimeContext>>(type: AppType, domain: string, storageSchema: StorageSchema, frontendContextBuilder: () => (store: CacheStore) => FrontCxt, backendContextBuilder: (contextStr?: string) => (store: AsyncRowStore) => Promise, aspectDict: AD, triggers: Array>, checkers: Array>, watchers: Array>, timers: Array>, startRoutines: Array>, initialData: { [T in keyof ED]?: Array; }, option: InitializeOptions): { features: GFD & import("oak-common-aspect").CommonAspectDict>; diff --git a/es/routines/start.d.ts b/es/routines/start.d.ts index de4c97f24..ea1b15306 100644 --- a/es/routines/start.d.ts +++ b/es/routines/start.d.ts @@ -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>>; +declare const startRoutines: Array>>; export default startRoutines; diff --git a/es/routines/start.js b/es/routines/start.js index afdd3446c..ae593f923 100644 --- a/es/routines/start.js +++ b/es/routines/start.js @@ -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 {}; }, } ]; diff --git a/es/triggers/extraFile.js b/es/triggers/extraFile.js index 0a7f6e8b1..cb8c535af 100644 --- a/es/triggers/extraFile.js +++ b/es/triggers/extraFile.js @@ -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方可删除 diff --git a/es/triggers/index.d.ts b/es/triggers/index.d.ts index 0770eae70..19089c4f8 100644 --- a/es/triggers/index.d.ts +++ b/es/triggers/index.d.ts @@ -1,2 +1,2 @@ -declare const _default: (import("oak-domain").Trigger> | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger>)[]; +declare const _default: (import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger>)[]; export default _default; diff --git a/es/triggers/notification.js b/es/triggers/notification.js index ecc5694ad..66525c261 100644 --- a/es/triggers/notification.js +++ b/es/triggers/notification.js @@ -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); } } diff --git a/es/triggers/sessionMessage.js b/es/triggers/sessionMessage.js index c80da8a26..c8446bf3b 100644 --- a/es/triggers/sessionMessage.js +++ b/es/triggers/sessionMessage.js @@ -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, diff --git a/es/utils/selectionRewriter.d.ts b/es/utils/selectionRewriter.d.ts index 17fa42174..7681c41af 100644 --- a/es/utils/selectionRewriter.d.ts +++ b/es/utils/selectionRewriter.d.ts @@ -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(schema: StorageSchema, entity: T, selection: ED[T]['Selection']): void; +export declare function rewriteSelection(schema: StorageSchema, entity: T, selection: ED[T]['Selection'] | ED[T]['Aggregation']): void; export declare function rewriteOperation(schema: StorageSchema, entity: T, operation: ED[T]['Operation']): void; diff --git a/lib/checkers/index.d.ts b/lib/checkers/index.d.ts index 46b6c8266..1c141fe16 100644 --- a/lib/checkers/index.d.ts +++ b/lib/checkers/index.d.ts @@ -1,2 +1,2 @@ -declare const checkers: (import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker)[]; +declare const checkers: (import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker | import("oak-domain").Checker)[]; export default checkers; diff --git a/lib/initialize.dev.d.ts b/lib/initialize.dev.d.ts index 0d00b06ba..903369348 100644 --- a/lib/initialize.dev.d.ts +++ b/lib/initialize.dev.d.ts @@ -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, AD extends Record>, FrontCxt extends FrontendRuntimeContext>>(type: AppType, domain: string, storageSchema: StorageSchema, frontendContextBuilder: () => (store: CacheStore) => FrontCxt, backendContextBuilder: (contextStr?: string) => (store: AsyncRowStore) => Promise, aspectDict: AD, triggers: Array>, checkers: Array>, watchers: Array>, timers: Array>, startRoutines: Array>, initialData: { +export declare function initialize, AD extends Record>, FrontCxt extends FrontendRuntimeContext>>(type: AppType, domain: string, storageSchema: StorageSchema, frontendContextBuilder: () => (store: CacheStore) => FrontCxt, backendContextBuilder: (contextStr?: string) => (store: AsyncRowStore) => Promise, aspectDict: AD, triggers: Array>, checkers: Array>, watchers: Array>, timers: Array>, startRoutines: Array>, initialData: { [T in keyof ED]?: Array; }, option: InitializeOptions): { features: GFD & import("oak-common-aspect").CommonAspectDict>; diff --git a/lib/routines/start.d.ts b/lib/routines/start.d.ts index de4c97f24..ea1b15306 100644 --- a/lib/routines/start.d.ts +++ b/lib/routines/start.d.ts @@ -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>>; +declare const startRoutines: Array>>; export default startRoutines; diff --git a/lib/routines/start.js b/lib/routines/start.js index 2d9281110..15a066bb3 100644 --- a/lib/routines/start.js +++ b/lib/routines/start.js @@ -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 {}; }, } ]; diff --git a/lib/triggers/extraFile.js b/lib/triggers/extraFile.js index 19e3d2ef3..c98c618fa 100644 --- a/lib/triggers/extraFile.js +++ b/lib/triggers/extraFile.js @@ -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方可删除 diff --git a/lib/triggers/index.d.ts b/lib/triggers/index.d.ts index 6fb3c0b29..a77ccbaf9 100644 --- a/lib/triggers/index.d.ts +++ b/lib/triggers/index.d.ts @@ -1,2 +1,2 @@ -declare const _default: (import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger>)[]; +declare const _default: (import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger> | import("oak-domain").Trigger>)[]; export default _default; diff --git a/lib/triggers/notification.js b/lib/triggers/notification.js index a7970e581..8e9a0cf38 100644 --- a/lib/triggers/notification.js +++ b/lib/triggers/notification.js @@ -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); } } diff --git a/lib/triggers/sessionMessage.js b/lib/triggers/sessionMessage.js index 8b0d20a28..342d1a61e 100644 --- a/lib/triggers/sessionMessage.js +++ b/lib/triggers/sessionMessage.js @@ -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, diff --git a/lib/utils/selectionRewriter.d.ts b/lib/utils/selectionRewriter.d.ts index 17fa42174..7681c41af 100644 --- a/lib/utils/selectionRewriter.d.ts +++ b/lib/utils/selectionRewriter.d.ts @@ -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(schema: StorageSchema, entity: T, selection: ED[T]['Selection']): void; +export declare function rewriteSelection(schema: StorageSchema, entity: T, selection: ED[T]['Selection'] | ED[T]['Aggregation']): void; export declare function rewriteOperation(schema: StorageSchema, entity: T, operation: ED[T]['Operation']): void; diff --git a/src/initialize.dev.ts b/src/initialize.dev.ts index 0dd0e1f5b..a4ee3bcc4 100644 --- a/src/initialize.dev.ts +++ b/src/initialize.dev.ts @@ -43,8 +43,8 @@ export function initialize< triggers: Array>, checkers: Array>, watchers: Array>, - timers: Array>, - startRoutines: Array>, + timers: Array>, + startRoutines: Array>, initialData: { [T in keyof ED]?: Array; }, @@ -61,7 +61,7 @@ export function initialize< const checkers2 = (generalCheckers as Array>).concat(checkers || []); const triggers2 = (generalTriggers as Array>).concat(triggers || []); const watchers2 = (generalWatchers as Array>).concat(watchers || []); - const startRoutines2 = (generalStartRoutines as Array>).concat(startRoutines || []); + const startRoutines2 = (generalStartRoutines as Array>).concat(startRoutines || []); const data2 = Object.assign({}, generalData, initialData); if (initialData) { diff --git a/src/routines/start.ts b/src/routines/start.ts index 1689782db..dc1ab4407 100644 --- a/src/routines/start.ts +++ b/src/routines/start.ts @@ -5,13 +5,13 @@ import { BackendRuntimeContext } from '../context/BackendRuntimeContext'; import { rewriteOperation, rewriteSelection } from '../utils/selectionRewriter'; -const startRoutines: Array>> = [ +const startRoutines: Array>> = [ { name: '注入对合并的user的selection的改写', - fn: async (context) => { + routine: async (context) => { context.rowStore.registerSelectionRewriter(rewriteSelection); context.rowStore.registerOperationRewriter(rewriteOperation); - return '注入成功'; + return {}; }, } ]; diff --git a/src/triggers/extraFile.ts b/src/triggers/extraFile.ts index 7bdc37fda..85ecf5c1f 100644 --- a/src/triggers/extraFile.ts +++ b/src/triggers/extraFile.ts @@ -48,8 +48,18 @@ const triggers: Trigger { + 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; diff --git a/src/triggers/notification.ts b/src/triggers/notification.ts index f17fe3e41..cb32bd636 100644 --- a/src/triggers/notification.ts +++ b/src/triggers/notification.ts @@ -276,11 +276,24 @@ const triggers: Trigger { + 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(); diff --git a/src/triggers/sessionMessage.ts b/src/triggers/sessionMessage.ts index 288259bc0..f4e443858 100644 --- a/src/triggers/sessionMessage.ts +++ b/src/triggers/sessionMessage.ts @@ -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', { diff --git a/src/utils/selectionRewriter.ts b/src/utils/selectionRewriter.ts index 01fbe6f17..5b77271e8 100644 --- a/src/utils/selectionRewriter.ts +++ b/src/utils/selectionRewriter.ts @@ -152,7 +152,11 @@ function rewriteFilter(schema: StorageSchema, entity: T, selection: ED[T]['Selection']) { +export function rewriteSelection( + schema: StorageSchema, + 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); @@ -163,17 +167,17 @@ export function rewriteSelection { + 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]); } } }