From da4a5b56e5cf7b08f78901b6944eec9d00db8664 Mon Sep 17 00:00:00 2001 From: ChengLei Shao Date: Wed, 11 Sep 2024 14:32:59 +0800 Subject: [PATCH] fix: count of multi filter target keys (#5251) --- .../multi-filter-target-key.test.ts | 54 +++++++++++++++++++ packages/core/database/src/collection.ts | 4 ++ packages/core/database/src/repository.ts | 2 +- 3 files changed, 59 insertions(+), 1 deletion(-) diff --git a/packages/core/database/src/__tests__/filter-target-key/multi-filter-target-key.test.ts b/packages/core/database/src/__tests__/filter-target-key/multi-filter-target-key.test.ts index cfc929298d..aead5d20f5 100644 --- a/packages/core/database/src/__tests__/filter-target-key/multi-filter-target-key.test.ts +++ b/packages/core/database/src/__tests__/filter-target-key/multi-filter-target-key.test.ts @@ -21,6 +21,60 @@ describe('multi filter target key', () => { await db.close(); }); + it('should get count of multi filter target keys', async () => { + const Student = db.collection({ + name: 'students', + autoGenId: false, + filterTargetKey: ['name', 'classId'], + fields: [ + { + name: 'name', + type: 'string', + primaryKey: true, + }, + { + name: 'classId', + type: 'bigInt', + primaryKey: true, + }, + { + name: 'age', + type: 'integer', + }, + ], + }); + + await db.sync(); + + const s1 = await Student.repository.create({ + values: { + name: 's1', + classId: 1, + age: 10, + }, + }); + + const s2 = await Student.repository.create({ + values: { + name: 's1', + classId: 2, + age: 10, + }, + }); + + const s3 = await Student.repository.create({ + values: { + name: 's3', + classId: 2, + age: 10, + }, + }); + + const count = await Student.repository.count({}); + + expect(count).toBe(3); + }); + it('should set multi filter target keys', async () => { const Student = db.collection({ name: 'students', diff --git a/packages/core/database/src/collection.ts b/packages/core/database/src/collection.ts index 059189ed96..9cc17f003f 100644 --- a/packages/core/database/src/collection.ts +++ b/packages/core/database/src/collection.ts @@ -187,6 +187,10 @@ export class Collection< return this.model.primaryKeyAttribute; } + isMultiFilterTargetKey() { + return Array.isArray(this.filterTargetKey) && this.filterTargetKey.length > 1; + } + get name() { return this.options.name; } diff --git a/packages/core/database/src/repository.ts b/packages/core/database/src/repository.ts index c033510077..9de0227551 100644 --- a/packages/core/database/src/repository.ts +++ b/packages/core/database/src/repository.ts @@ -326,7 +326,7 @@ export class Repository