处理aggr的reinforce有小问题
This commit is contained in:
parent
2fc2bdeb8f
commit
b8c5fbe46e
|
|
@ -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, {
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue