处理aggr的reinforce有小问题

This commit is contained in:
Xu Chang 2023-12-13 19:10:43 +08:00
parent 2fc2bdeb8f
commit b8c5fbe46e
2 changed files with 21 additions and 21 deletions

View File

@ -21,20 +21,24 @@ class CascadeStore extends RowStore_1.RowStore {
selectionRewriters = [];
operationRewriters = [];
async reinforceSelectionAsync(entity, selection, context, option, isAggr) {
this.reinforceSelectionInner(entity, selection, context, isAggr);
if (!isAggr) {
this.reinforceSelectionInner(entity, selection, context);
}
const rewriterPromises = this.selectionRewriters.map(ele => ele(this.getSchema(), entity, selection, context, option, isAggr));
if (rewriterPromises.length > 0) {
await Promise.all(rewriterPromises);
}
}
reinforceSelectionSync(entity, selection, context, option, isAggr) {
this.reinforceSelectionInner(entity, selection, context, isAggr);
if (!isAggr) {
this.reinforceSelectionInner(entity, selection, context);
}
this.selectionRewriters.forEach(ele => {
const result = ele(this.getSchema(), entity, selection, context, option);
(0, assert_1.default)(!(result instanceof Promise));
});
}
reinforceSelectionInner(entity, selection, context, isAggr) {
reinforceSelectionInner(entity, selection, context) {
const { filter, data, sorter } = selection;
const assignNecessaryProjectionAttrs = (projectionNode, attrs) => {
attrs.forEach((attr) => {
@ -294,10 +298,7 @@ class CascadeStore extends RowStore_1.RowStore {
}
}
};
if (!isAggr) {
// aggr的projetion不能改动
checkProjectionNode(entity, data);
}
if (!sorter && relevantIds.length === 0) {
// 如果没有sorter就给予一个按createAt逆序的sorter
Object.assign(selection, {

View File

@ -36,8 +36,9 @@ export abstract class CascadeStore<ED extends EntityDict & BaseEntityDict> exten
option: Op,
isAggr?: true) {
this.reinforceSelectionInner(entity, selection, context, isAggr);
if (!isAggr) {
this.reinforceSelectionInner(entity, selection, context);
}
const rewriterPromises = this.selectionRewriters.map(
ele => ele(this.getSchema(), entity, selection, context, option, isAggr)
@ -55,7 +56,9 @@ export abstract class CascadeStore<ED extends EntityDict & BaseEntityDict> exten
option: Op,
isAggr?: true
) {
this.reinforceSelectionInner(entity, selection, context, isAggr);
if (!isAggr) {
this.reinforceSelectionInner(entity, selection, context);
}
this.selectionRewriters.forEach(
ele => {
@ -69,7 +72,6 @@ export abstract class CascadeStore<ED extends EntityDict & BaseEntityDict> exten
entity: keyof ED,
selection: ED[keyof ED]['Selection'] | ED[keyof ED]['Aggregation'],
context: Cxt,
isAggr?: true,
) {
const { filter, data, sorter } = selection;
@ -357,10 +359,7 @@ export abstract class CascadeStore<ED extends EntityDict & BaseEntityDict> exten
}
}
};
if (!isAggr) {
// aggr的projetion不能改动
checkProjectionNode(entity, data);
}
if (!sorter && relevantIds.length === 0) {
// 如果没有sorter就给予一个按createAt逆序的sorter