更新了all/not all原来的错误判定

This commit is contained in:
Xu Chang 2025-02-14 18:19:13 +08:00
parent 7c8368c6d2
commit f84ef1724d
3 changed files with 67 additions and 89 deletions

View File

@ -791,8 +791,8 @@ export default class TreeStore extends CascadeStore {
/**
* in代表外键连接后至少有一行数据
* not in代表外键连接后一行也不能有
* all代表反外键连接条件的一行也不能有符合的是否至少要有一行直觉上没这个限制
* not all 代表反外键连接条件的至少有一行
* all代表反连接条件的一行也不能有符合的是否至少要有一行直觉上没这个限制
* not all 代表反连接条件的至少有一行
*
* 此时还没有确定父行只有查询中明确带有id的查询可以先执行否则不执行暂先这个逻辑 by Xc 20230725
*/
@ -805,24 +805,20 @@ export default class TreeStore extends CascadeStore {
/**
* in代表外键连接后至少有一行数据
* not in代表外键连接后一行也不能有
* all代表反外键连接条件的一行也不能有符合的是否至少要有一行直觉上没这个限制
* not all 代表反外键连接条件的至少有一行
* all代表反连接条件的一行也不能有符合的是否至少要有一行直觉上没这个限制
* not all 代表反连接条件的至少有一行
*/
const otmFilter = !otmForeignKey ? Object.assign({
const otmOriginFilter = !otmForeignKey ? Object.assign({
entity,
}, filter[attr]) : cloneDeep(filter[attr]);
if (['noobscuret in', 'in'].includes(predicate)) {
Object.assign(otmFilter, {
}, cloneDeep(filter[attr])) : cloneDeep(filter[attr]);
const otmFilter = ['not in', 'in'].includes(predicate) ? combineFilters(otmEntity, this.getSchema(), [
otmOriginFilter, {
[fk]: row.id,
});
}
else {
Object.assign(otmFilter, {
[fk]: {
$ne: row.id,
}
});
}
}
]) : {
$not: otmOriginFilter,
[fk]: row.id,
};
const subQuerySet = (this.selectAbjointRow(otmEntity, {
data: otmProjection,
filter: otmFilter,
@ -852,21 +848,17 @@ export default class TreeStore extends CascadeStore {
});
};
if (filter.id && typeof filter.id === 'string') {
const otmFilter = !otmForeignKey ? Object.assign({
const otmOriginFilter = !otmForeignKey ? Object.assign({
entity,
}, filter[attr]) : cloneDeep(filter[attr]);
if (['not in', 'in'].includes(predicate)) {
Object.assign(otmFilter, {
}, cloneDeep(filter[attr])) : cloneDeep(filter[attr]);
const otmFilter = ['not in', 'in'].includes(predicate) ? combineFilters(otmEntity, this.getSchema(), [
otmOriginFilter, {
[fk]: filter.id,
});
}
else {
Object.assign(otmFilter, {
[fk]: {
$ne: filter.id,
}
});
}
}
]) : {
$not: otmOriginFilter,
[fk]: filter.id,
};
try {
const subQuerySet = (this.selectAbjointRow(otmEntity, {
data: otmProjection,

View File

@ -793,8 +793,8 @@ class TreeStore extends CascadeStore_1.CascadeStore {
/**
* in代表外键连接后至少有一行数据
* not in代表外键连接后一行也不能有
* all代表反外键连接条件的一行也不能有符合的是否至少要有一行直觉上没这个限制
* not all 代表反外键连接条件的至少有一行
* all代表反连接条件的一行也不能有符合的是否至少要有一行直觉上没这个限制
* not all 代表反连接条件的至少有一行
*
* 此时还没有确定父行只有查询中明确带有id的查询可以先执行否则不执行暂先这个逻辑 by Xc 20230725
*/
@ -807,24 +807,20 @@ class TreeStore extends CascadeStore_1.CascadeStore {
/**
* in代表外键连接后至少有一行数据
* not in代表外键连接后一行也不能有
* all代表反外键连接条件的一行也不能有符合的是否至少要有一行直觉上没这个限制
* not all 代表反外键连接条件的至少有一行
* all代表反连接条件的一行也不能有符合的是否至少要有一行直觉上没这个限制
* not all 代表反连接条件的至少有一行
*/
const otmFilter = !otmForeignKey ? Object.assign({
const otmOriginFilter = !otmForeignKey ? Object.assign({
entity,
}, filter[attr]) : (0, lodash_1.cloneDeep)(filter[attr]);
if (['noobscuret in', 'in'].includes(predicate)) {
Object.assign(otmFilter, {
}, (0, lodash_1.cloneDeep)(filter[attr])) : (0, lodash_1.cloneDeep)(filter[attr]);
const otmFilter = ['not in', 'in'].includes(predicate) ? (0, filter_1.combineFilters)(otmEntity, this.getSchema(), [
otmOriginFilter, {
[fk]: row.id,
});
}
else {
Object.assign(otmFilter, {
[fk]: {
$ne: row.id,
}
});
}
}
]) : {
$not: otmOriginFilter,
[fk]: row.id,
};
const subQuerySet = (this.selectAbjointRow(otmEntity, {
data: otmProjection,
filter: otmFilter,
@ -854,21 +850,17 @@ class TreeStore extends CascadeStore_1.CascadeStore {
});
};
if (filter.id && typeof filter.id === 'string') {
const otmFilter = !otmForeignKey ? Object.assign({
const otmOriginFilter = !otmForeignKey ? Object.assign({
entity,
}, filter[attr]) : (0, lodash_1.cloneDeep)(filter[attr]);
if (['not in', 'in'].includes(predicate)) {
Object.assign(otmFilter, {
}, (0, lodash_1.cloneDeep)(filter[attr])) : (0, lodash_1.cloneDeep)(filter[attr]);
const otmFilter = ['not in', 'in'].includes(predicate) ? (0, filter_1.combineFilters)(otmEntity, this.getSchema(), [
otmOriginFilter, {
[fk]: filter.id,
});
}
else {
Object.assign(otmFilter, {
[fk]: {
$ne: filter.id,
}
});
}
}
]) : {
$not: otmOriginFilter,
[fk]: filter.id,
};
try {
const subQuerySet = (this.selectAbjointRow(otmEntity, {
data: otmProjection,

View File

@ -973,8 +973,8 @@ export default class TreeStore<ED extends EntityDict & BaseEntityDict> extends C
/**
* in代表外键连接后至少有一行数据
* not in代表外键连接后一行也不能有
* all代表反外键连接条件的一行也不能有
* not all
* all代表反连接条件的一行也不能有
* not all
*
* id的查询可以先执行 by Xc 20230725
*/
@ -987,23 +987,20 @@ export default class TreeStore<ED extends EntityDict & BaseEntityDict> extends C
/**
* in代表外键连接后至少有一行数据
* not in代表外键连接后一行也不能有
* all代表反外键连接条件的一行也不能有
* not all
* all代表反连接条件的一行也不能有
* not all
*/
const otmFilter = !otmForeignKey ? Object.assign({
const otmOriginFilter = !otmForeignKey ? Object.assign({
entity,
}, filter[attr]) : cloneDeep(filter[attr]);
if (['noobscuret in', 'in'].includes(predicate)) {
Object.assign(otmFilter, {
}, cloneDeep(filter[attr])) : cloneDeep(filter[attr]);
const otmFilter = ['not in', 'in'].includes(predicate) ? combineFilters(otmEntity, this.getSchema(), [
otmOriginFilter, {
[fk]: row.id,
});
}
else {
Object.assign(otmFilter, {
[fk]: {
$ne: row.id,
}
});
}
]) : {
$not: otmOriginFilter,
[fk]: row.id,
}
const subQuerySet = (this.selectAbjointRow(otmEntity, {
data: otmProjection,
@ -1036,21 +1033,18 @@ export default class TreeStore<ED extends EntityDict & BaseEntityDict> extends C
});
};
if (filter.id && typeof filter.id === 'string') {
const otmFilter = !otmForeignKey ? Object.assign({
if (filter.id && typeof filter.id === 'string') {
const otmOriginFilter = !otmForeignKey ? Object.assign({
entity,
}, filter[attr]) : cloneDeep(filter[attr]);
if (['not in', 'in'].includes(predicate)) {
Object.assign(otmFilter, {
}, cloneDeep(filter[attr])) : cloneDeep(filter[attr]);
const otmFilter = ['not in', 'in'].includes(predicate) ? combineFilters(otmEntity, this.getSchema(), [
otmOriginFilter, {
[fk]: filter.id,
});
}
else {
Object.assign(otmFilter, {
[fk]: {
$ne: filter.id,
}
});
}
]) : {
$not: otmOriginFilter,
[fk]: filter.id,
}
try {
const subQuerySet = (this.selectAbjointRow(otmEntity, {