Merge branch 'release'

This commit is contained in:
Xu Chang 2025-03-17 14:37:43 +08:00
commit 28ec0fff14
4 changed files with 32 additions and 20 deletions

View File

@ -1460,7 +1460,7 @@ export default class TreeStore extends CascadeStore {
else { else {
assert([0, 1].includes(rel)); assert([0, 1].includes(rel));
result2[k] = row2[k]; result2[k] = row2[k];
assert(['string', 'number', 'boolean'].includes(typeof row2[k])); assert(['string', 'number', 'boolean'].includes(typeof row2[k]) || row2[k] === null);
key += `${row2[k]}`; key += `${row2[k]}`;
values.push(row2[k]); values.push(row2[k]);
} }
@ -1558,8 +1558,9 @@ export default class TreeStore extends CascadeStore {
result[op] = 0; result[op] = 0;
const data = distinct ? uniq(results[op]) : results[op]; const data = distinct ? uniq(results[op]) : results[op];
data.forEach((ele) => { data.forEach((ele) => {
assert(typeof ele === 'number', '只有number类型的属性才可以计算sum'); if (typeof ele === 'number') {
result[op] += ele; result[op] += ele;
}
}); });
} }
else if (op.startsWith('#count')) { else if (op.startsWith('#count')) {
@ -1574,11 +1575,14 @@ export default class TreeStore extends CascadeStore {
else if (op.startsWith('#avg')) { else if (op.startsWith('#avg')) {
result[op] = 0; result[op] = 0;
const data = (distinct ? uniq(results[op]) : results[op]).filter(ele => ![undefined, null].includes(ele)); const data = (distinct ? uniq(results[op]) : results[op]).filter(ele => ![undefined, null].includes(ele));
let count = 0;
data.forEach((ele) => { data.forEach((ele) => {
assert(typeof ele === 'number', '只有number类型的属性才可以计算avg'); if (typeof ele === 'number') {
result[op] += ele; result[op] += ele;
count += 1;
}
}); });
result[op] = result[op] / data.length; result[op] = result[op] / count;
} }
} }
return result; return result;

View File

@ -1462,7 +1462,7 @@ class TreeStore extends CascadeStore_1.CascadeStore {
else { else {
(0, assert_1.assert)([0, 1].includes(rel)); (0, assert_1.assert)([0, 1].includes(rel));
result2[k] = row2[k]; result2[k] = row2[k];
(0, assert_1.assert)(['string', 'number', 'boolean'].includes(typeof row2[k])); (0, assert_1.assert)(['string', 'number', 'boolean'].includes(typeof row2[k]) || row2[k] === null);
key += `${row2[k]}`; key += `${row2[k]}`;
values.push(row2[k]); values.push(row2[k]);
} }
@ -1560,8 +1560,9 @@ class TreeStore extends CascadeStore_1.CascadeStore {
result[op] = 0; result[op] = 0;
const data = distinct ? (0, lodash_1.uniq)(results[op]) : results[op]; const data = distinct ? (0, lodash_1.uniq)(results[op]) : results[op];
data.forEach((ele) => { data.forEach((ele) => {
(0, assert_1.assert)(typeof ele === 'number', '只有number类型的属性才可以计算sum'); if (typeof ele === 'number') {
result[op] += ele; result[op] += ele;
}
}); });
} }
else if (op.startsWith('#count')) { else if (op.startsWith('#count')) {
@ -1576,11 +1577,14 @@ class TreeStore extends CascadeStore_1.CascadeStore {
else if (op.startsWith('#avg')) { else if (op.startsWith('#avg')) {
result[op] = 0; result[op] = 0;
const data = (distinct ? (0, lodash_1.uniq)(results[op]) : results[op]).filter(ele => ![undefined, null].includes(ele)); const data = (distinct ? (0, lodash_1.uniq)(results[op]) : results[op]).filter(ele => ![undefined, null].includes(ele));
let count = 0;
data.forEach((ele) => { data.forEach((ele) => {
(0, assert_1.assert)(typeof ele === 'number', '只有number类型的属性才可以计算avg'); if (typeof ele === 'number') {
result[op] += ele; result[op] += ele;
count += 1;
}
}); });
result[op] = result[op] / data.length; result[op] = result[op] / count;
} }
} }
return result; return result;

View File

@ -1,6 +1,6 @@
{ {
"name": "oak-memory-tree-store", "name": "oak-memory-tree-store",
"version": "3.3.10", "version": "3.3.11",
"description": "oak框架中内存级store的实现", "description": "oak框架中内存级store的实现",
"author": { "author": {
"name": "XuChang" "name": "XuChang"
@ -10,7 +10,7 @@
"es/**/*" "es/**/*"
], ],
"dependencies": { "dependencies": {
"oak-domain": "^5.1.20", "oak-domain": "^5.1.21",
"uuid": "^8.3.2" "uuid": "^8.3.2"
}, },
"scripts": { "scripts": {

View File

@ -1749,7 +1749,7 @@ export default class TreeStore<ED extends EntityDict & BaseEntityDict> extends C
else { else {
assert([0, 1].includes(rel as number)); assert([0, 1].includes(rel as number));
(result2 as any)[k] = row2[k]; (result2 as any)[k] = row2[k];
assert(['string', 'number', 'boolean'].includes(typeof row2[k])); assert(['string', 'number', 'boolean'].includes(typeof row2[k]) || row2[k] === null);
key += `${row2[k]}`; key += `${row2[k]}`;
values.push(row2[k]); values.push(row2[k]);
} }
@ -1860,8 +1860,9 @@ export default class TreeStore<ED extends EntityDict & BaseEntityDict> extends C
const data = distinct ? uniq(results[op]) : results[op]; const data = distinct ? uniq(results[op]) : results[op];
data.forEach( data.forEach(
(ele) => { (ele) => {
assert(typeof ele === 'number', '只有number类型的属性才可以计算sum'); if (typeof ele === 'number') {
result[op] += ele; result[op] += ele;
}
} }
); );
} }
@ -1881,13 +1882,16 @@ export default class TreeStore<ED extends EntityDict & BaseEntityDict> extends C
const data = (distinct ? uniq(results[op]) : results[op]).filter( const data = (distinct ? uniq(results[op]) : results[op]).filter(
ele => ![undefined, null].includes(ele) ele => ![undefined, null].includes(ele)
); );
let count = 0;
data.forEach( data.forEach(
(ele) => { (ele) => {
assert(typeof ele === 'number', '只有number类型的属性才可以计算avg'); if (typeof ele === 'number') {
result[op] += ele; result[op] += ele;
count += 1;
}
} }
); );
result[op] = result[op]/data.length; result[op] = result[op]/count;
} }
} }
return result as AggregationResult<ED[T]['Schema']>[number]; return result as AggregationResult<ED[T]['Schema']>[number];