处理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);
}
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)
@ -49,13 +50,15 @@ export abstract class CascadeStore<ED extends EntityDict & BaseEntityDict> exten
}
private reinforceSelectionSync<Cxt extends SyncContext<ED>, Op extends SelectOption>(
entity: keyof ED,
selection: ED[keyof ED]['Selection'],
context: Cxt,
entity: keyof ED,
selection: ED[keyof ED]['Selection'],
context: Cxt,
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);
}
checkProjectionNode(entity, data);
if (!sorter && relevantIds.length === 0) {
// 如果没有sorter就给予一个按createAt逆序的sorter
@ -382,8 +381,8 @@ export abstract class CascadeStore<ED extends EntityDict & BaseEntityDict> exten
}
private async reinforceOperation<Cxt extends AsyncContext<ED>, Op extends OperateOption>(
entity: keyof ED,
operation: ED[keyof ED]['Operation'],
entity: keyof ED,
operation: ED[keyof ED]['Operation'],
context: Cxt,
option: Op) {
await Promise.all(this.operationRewriters.map(
@ -420,7 +419,7 @@ export abstract class CascadeStore<ED extends EntityDict & BaseEntityDict> exten
protected abstract countAsync<T extends keyof ED, OP extends SelectOption, Cxt extends AsyncContext<ED>>(
entity: T,
selection: Pick<ED[T]['Selection'], 'filter' | 'count'>,
context: Cxt,
context: Cxt,
option: OP
): Promise<number>;