Skip to content

Commit dedebf7

Browse files
Improve filter detection and ID generation based on code review
- Make filter detection in count() more robust by explicitly checking for UnifiedQuery properties - Add DEFAULT_ID_LENGTH constant to make ID length configurable Co-authored-by: xuyushun441-sys <255036401+xuyushun441-sys@users.noreply.github.com>
1 parent 17e2b33 commit dedebf7

2 files changed

Lines changed: 16 additions & 4 deletions

File tree

packages/drivers/sql/src/index.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ import { Driver, IntrospectedSchema, IntrospectedTable, IntrospectedColumn, Intr
1515
import knex, { Knex } from 'knex';
1616
import { nanoid } from 'nanoid';
1717

18+
/**
19+
* Default ID length for auto-generated IDs
20+
*/
21+
const DEFAULT_ID_LENGTH = 16;
22+
1823
/**
1924
* Command interface for executeCommand method
2025
*/
@@ -274,7 +279,7 @@ export class SqlDriver implements Driver {
274279
toInsert.id = _id;
275280
} else if (toInsert.id === undefined) {
276281
// Auto-generate ID if not provided
277-
toInsert.id = nanoid(16);
282+
toInsert.id = nanoid(DEFAULT_ID_LENGTH);
278283
}
279284

280285
// Knex insert returns Result array (e.g. ids)

packages/foundation/core/src/repository.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -315,12 +315,19 @@ export class ObjectRepository {
315315

316316
async count(filters: any): Promise<number> {
317317
// Normalize filters to UnifiedQuery format
318-
// If filters is an array or Filter object, wrap it in a query object
318+
// If filters is an array, wrap it in a query object
319+
// If filters is already a UnifiedQuery (has UnifiedQuery-specific properties), use it as-is
319320
let query: UnifiedQuery;
320-
if (Array.isArray(filters) || (filters && typeof filters === 'object' && !filters.fields && !filters.sort && !filters.limit)) {
321+
if (Array.isArray(filters)) {
322+
query = { filters };
323+
} else if (filters && typeof filters === 'object' && (filters.fields || filters.sort || filters.limit !== undefined || filters.skip !== undefined)) {
324+
// It's already a UnifiedQuery object
325+
query = filters;
326+
} else if (filters) {
327+
// It's a raw filter object, wrap it
321328
query = { filters };
322329
} else {
323-
query = filters || {};
330+
query = {};
324331
}
325332

326333
const hookCtx: RetrievalHookContext = {

0 commit comments

Comments
 (0)