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

View File

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