Merge branch 'release'
This commit is contained in:
commit
28ec0fff14
16
es/store.js
16
es/store.js
|
|
@ -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;
|
||||||
|
|
|
||||||
16
lib/store.js
16
lib/store.js
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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": {
|
||||||
|
|
|
||||||
16
src/store.ts
16
src/store.ts
|
|
@ -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];
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue