@warlock.js/cascade 4.0.92 → 4.0.93
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/contracts/database-driver.contract.d.ts +118 -0
- package/cjs/contracts/database-driver.contract.d.ts.map +1 -1
- package/cjs/contracts/migration-driver.contract.d.ts +14 -0
- package/cjs/contracts/migration-driver.contract.d.ts.map +1 -1
- package/cjs/contracts/query-builder.contract.d.ts +410 -1
- package/cjs/contracts/query-builder.contract.d.ts.map +1 -1
- package/cjs/data-source/data-source-registry.d.ts +4 -0
- package/cjs/data-source/data-source-registry.d.ts.map +1 -1
- package/cjs/data-source/data-source-registry.js +7 -0
- package/cjs/data-source/data-source-registry.js.map +1 -1
- package/cjs/drivers/mongodb/mongodb-blueprint.d.ts.map +1 -0
- package/cjs/drivers/mongodb/mongodb-blueprint.js.map +1 -0
- package/{esm/drivers/mongo → cjs/drivers/mongodb}/mongodb-driver.d.ts +49 -0
- package/cjs/drivers/mongodb/mongodb-driver.d.ts.map +1 -0
- package/cjs/drivers/{mongo → mongodb}/mongodb-driver.js +125 -8
- package/cjs/drivers/mongodb/mongodb-driver.js.map +1 -0
- package/cjs/drivers/{mongo/mongo-id-generator.d.ts → mongodb/mongodb-id-generator.d.ts} +1 -1
- package/cjs/drivers/mongodb/mongodb-id-generator.d.ts.map +1 -0
- package/cjs/drivers/{mongo/mongo-id-generator.js → mongodb/mongodb-id-generator.js} +1 -1
- package/cjs/drivers/mongodb/mongodb-id-generator.js.map +1 -0
- package/cjs/drivers/{mongo/mongo-migration-driver.d.ts → mongodb/mongodb-migration-driver.d.ts} +10 -1
- package/cjs/drivers/mongodb/mongodb-migration-driver.d.ts.map +1 -0
- package/cjs/drivers/{mongo/mongo-migration-driver.js → mongodb/mongodb-migration-driver.js} +18 -1
- package/cjs/drivers/mongodb/mongodb-migration-driver.js.map +1 -0
- package/cjs/drivers/{mongo/mongo-query-builder.d.ts → mongodb/mongodb-query-builder.d.ts} +172 -4
- package/cjs/drivers/mongodb/mongodb-query-builder.d.ts.map +1 -0
- package/cjs/drivers/{mongo/mongo-query-builder.js → mongodb/mongodb-query-builder.js} +220 -14
- package/cjs/drivers/mongodb/mongodb-query-builder.js.map +1 -0
- package/{esm/drivers/mongo/mongo-query-operations.d.ts → cjs/drivers/mongodb/mongodb-query-operations.d.ts} +16 -16
- package/cjs/drivers/mongodb/mongodb-query-operations.d.ts.map +1 -0
- package/cjs/drivers/{mongo/mongo-query-operations.js → mongodb/mongodb-query-operations.js} +22 -22
- package/cjs/drivers/mongodb/mongodb-query-operations.js.map +1 -0
- package/cjs/drivers/{mongo/mongo-query-parser.d.ts → mongodb/mongodb-query-parser.d.ts} +2 -2
- package/cjs/drivers/mongodb/mongodb-query-parser.d.ts.map +1 -0
- package/cjs/drivers/{mongo/mongo-query-parser.js → mongodb/mongodb-query-parser.js} +87 -87
- package/cjs/drivers/mongodb/mongodb-query-parser.js.map +1 -0
- package/cjs/drivers/{mongo/mongo-sync-adapter.d.ts → mongodb/mongodb-sync-adapter.d.ts} +2 -2
- package/cjs/drivers/mongodb/mongodb-sync-adapter.d.ts.map +1 -0
- package/cjs/drivers/{mongo/mongo-sync-adapter.js → mongodb/mongodb-sync-adapter.js} +2 -2
- package/cjs/drivers/mongodb/mongodb-sync-adapter.js.map +1 -0
- package/{esm/drivers/mongo → cjs/drivers/mongodb}/types.d.ts +2 -2
- package/cjs/drivers/mongodb/types.d.ts.map +1 -0
- package/cjs/drivers/postgres/index.d.ts +16 -0
- package/cjs/drivers/postgres/index.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-blueprint.d.ts +64 -0
- package/cjs/drivers/postgres/postgres-blueprint.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-blueprint.js +121 -0
- package/cjs/drivers/postgres/postgres-blueprint.js.map +1 -0
- package/cjs/drivers/postgres/postgres-dialect.d.ts +135 -0
- package/cjs/drivers/postgres/postgres-dialect.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-dialect.js +245 -0
- package/cjs/drivers/postgres/postgres-dialect.js.map +1 -0
- package/cjs/drivers/postgres/postgres-driver.d.ts +360 -0
- package/cjs/drivers/postgres/postgres-driver.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-driver.js +763 -0
- package/cjs/drivers/postgres/postgres-driver.js.map +1 -0
- package/cjs/drivers/postgres/postgres-migration-driver.d.ts +297 -0
- package/cjs/drivers/postgres/postgres-migration-driver.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-migration-driver.js +578 -0
- package/cjs/drivers/postgres/postgres-migration-driver.js.map +1 -0
- package/cjs/drivers/postgres/postgres-query-builder.d.ts +824 -0
- package/cjs/drivers/postgres/postgres-query-builder.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-query-builder.js +1800 -0
- package/cjs/drivers/postgres/postgres-query-builder.js.map +1 -0
- package/cjs/drivers/postgres/postgres-query-parser.d.ts +308 -0
- package/cjs/drivers/postgres/postgres-query-parser.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-query-parser.js +706 -0
- package/cjs/drivers/postgres/postgres-query-parser.js.map +1 -0
- package/cjs/drivers/postgres/postgres-sync-adapter.d.ts +83 -0
- package/cjs/drivers/postgres/postgres-sync-adapter.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-sync-adapter.js +197 -0
- package/cjs/drivers/postgres/postgres-sync-adapter.js.map +1 -0
- package/cjs/drivers/postgres/types.d.ts +142 -0
- package/cjs/drivers/postgres/types.d.ts.map +1 -0
- package/cjs/drivers/sql/index.d.ts +10 -0
- package/cjs/drivers/sql/index.d.ts.map +1 -0
- package/cjs/drivers/sql/sql-dialect.contract.d.ts +203 -0
- package/cjs/drivers/sql/sql-dialect.contract.d.ts.map +1 -0
- package/cjs/drivers/sql/sql-types.d.ts +202 -0
- package/cjs/drivers/sql/sql-types.d.ts.map +1 -0
- package/cjs/index.d.ts +9 -6
- package/cjs/index.d.ts.map +1 -1
- package/cjs/index.js +1 -1
- package/cjs/migration/migration-runner.d.ts.map +1 -1
- package/cjs/migration/migration-runner.js +3 -0
- package/cjs/migration/migration-runner.js.map +1 -1
- package/cjs/model/model.d.ts +236 -1
- package/cjs/model/model.d.ts.map +1 -1
- package/cjs/model/model.js +203 -4
- package/cjs/model/model.js.map +1 -1
- package/cjs/relations/helpers.d.ts +156 -0
- package/cjs/relations/helpers.d.ts.map +1 -0
- package/cjs/relations/helpers.js +197 -0
- package/cjs/relations/helpers.js.map +1 -0
- package/cjs/relations/index.d.ts +33 -0
- package/cjs/relations/index.d.ts.map +1 -0
- package/cjs/relations/pivot-operations.d.ts +160 -0
- package/cjs/relations/pivot-operations.d.ts.map +1 -0
- package/cjs/relations/pivot-operations.js +293 -0
- package/cjs/relations/pivot-operations.js.map +1 -0
- package/cjs/relations/relation-loader.d.ts +194 -0
- package/cjs/relations/relation-loader.d.ts.map +1 -0
- package/cjs/relations/relation-loader.js +466 -0
- package/cjs/relations/relation-loader.js.map +1 -0
- package/cjs/relations/types.d.ts +280 -0
- package/cjs/relations/types.d.ts.map +1 -0
- package/cjs/sync/model-sync-operation.js +1 -1
- package/cjs/sync/model-sync-operation.js.map +1 -1
- package/cjs/utils/connect-to-database.d.ts.map +1 -1
- package/cjs/utils/connect-to-database.js +15 -3
- package/cjs/utils/connect-to-database.js.map +1 -1
- package/cjs/utils/define-model.d.ts +51 -29
- package/cjs/utils/define-model.d.ts.map +1 -1
- package/cjs/validation/rules/database-model-rule.js +1 -1
- package/cjs/validation/rules/database-model-rule.js.map +1 -1
- package/esm/contracts/database-driver.contract.d.ts +118 -0
- package/esm/contracts/database-driver.contract.d.ts.map +1 -1
- package/esm/contracts/migration-driver.contract.d.ts +14 -0
- package/esm/contracts/migration-driver.contract.d.ts.map +1 -1
- package/esm/contracts/query-builder.contract.d.ts +410 -1
- package/esm/contracts/query-builder.contract.d.ts.map +1 -1
- package/esm/data-source/data-source-registry.d.ts +4 -0
- package/esm/data-source/data-source-registry.d.ts.map +1 -1
- package/esm/data-source/data-source-registry.js +7 -0
- package/esm/data-source/data-source-registry.js.map +1 -1
- package/esm/drivers/mongodb/mongodb-blueprint.d.ts.map +1 -0
- package/esm/drivers/mongodb/mongodb-blueprint.js.map +1 -0
- package/{cjs/drivers/mongo → esm/drivers/mongodb}/mongodb-driver.d.ts +49 -0
- package/esm/drivers/mongodb/mongodb-driver.d.ts.map +1 -0
- package/esm/drivers/{mongo → mongodb}/mongodb-driver.js +121 -4
- package/esm/drivers/mongodb/mongodb-driver.js.map +1 -0
- package/esm/drivers/{mongo/mongo-id-generator.d.ts → mongodb/mongodb-id-generator.d.ts} +1 -1
- package/esm/drivers/mongodb/mongodb-id-generator.d.ts.map +1 -0
- package/esm/drivers/{mongo/mongo-id-generator.js → mongodb/mongodb-id-generator.js} +1 -1
- package/esm/drivers/mongodb/mongodb-id-generator.js.map +1 -0
- package/esm/drivers/{mongo/mongo-migration-driver.d.ts → mongodb/mongodb-migration-driver.d.ts} +10 -1
- package/esm/drivers/mongodb/mongodb-migration-driver.d.ts.map +1 -0
- package/esm/drivers/{mongo/mongo-migration-driver.js → mongodb/mongodb-migration-driver.js} +18 -1
- package/esm/drivers/mongodb/mongodb-migration-driver.js.map +1 -0
- package/esm/drivers/{mongo/mongo-query-builder.d.ts → mongodb/mongodb-query-builder.d.ts} +172 -4
- package/esm/drivers/mongodb/mongodb-query-builder.d.ts.map +1 -0
- package/esm/drivers/{mongo/mongo-query-builder.js → mongodb/mongodb-query-builder.js} +218 -12
- package/esm/drivers/mongodb/mongodb-query-builder.js.map +1 -0
- package/{cjs/drivers/mongo/mongo-query-operations.d.ts → esm/drivers/mongodb/mongodb-query-operations.d.ts} +16 -16
- package/esm/drivers/mongodb/mongodb-query-operations.d.ts.map +1 -0
- package/esm/drivers/{mongo/mongo-query-operations.js → mongodb/mongodb-query-operations.js} +22 -22
- package/esm/drivers/mongodb/mongodb-query-operations.js.map +1 -0
- package/esm/drivers/{mongo/mongo-query-parser.d.ts → mongodb/mongodb-query-parser.d.ts} +2 -2
- package/esm/drivers/mongodb/mongodb-query-parser.d.ts.map +1 -0
- package/esm/drivers/{mongo/mongo-query-parser.js → mongodb/mongodb-query-parser.js} +87 -87
- package/esm/drivers/mongodb/mongodb-query-parser.js.map +1 -0
- package/esm/drivers/{mongo/mongo-sync-adapter.d.ts → mongodb/mongodb-sync-adapter.d.ts} +2 -2
- package/esm/drivers/mongodb/mongodb-sync-adapter.d.ts.map +1 -0
- package/esm/drivers/{mongo/mongo-sync-adapter.js → mongodb/mongodb-sync-adapter.js} +2 -2
- package/esm/drivers/mongodb/mongodb-sync-adapter.js.map +1 -0
- package/{cjs/drivers/mongo → esm/drivers/mongodb}/types.d.ts +2 -2
- package/esm/drivers/mongodb/types.d.ts.map +1 -0
- package/esm/drivers/postgres/index.d.ts +16 -0
- package/esm/drivers/postgres/index.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-blueprint.d.ts +64 -0
- package/esm/drivers/postgres/postgres-blueprint.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-blueprint.js +121 -0
- package/esm/drivers/postgres/postgres-blueprint.js.map +1 -0
- package/esm/drivers/postgres/postgres-dialect.d.ts +135 -0
- package/esm/drivers/postgres/postgres-dialect.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-dialect.js +245 -0
- package/esm/drivers/postgres/postgres-dialect.js.map +1 -0
- package/esm/drivers/postgres/postgres-driver.d.ts +360 -0
- package/esm/drivers/postgres/postgres-driver.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-driver.js +763 -0
- package/esm/drivers/postgres/postgres-driver.js.map +1 -0
- package/esm/drivers/postgres/postgres-migration-driver.d.ts +297 -0
- package/esm/drivers/postgres/postgres-migration-driver.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-migration-driver.js +578 -0
- package/esm/drivers/postgres/postgres-migration-driver.js.map +1 -0
- package/esm/drivers/postgres/postgres-query-builder.d.ts +824 -0
- package/esm/drivers/postgres/postgres-query-builder.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-query-builder.js +1800 -0
- package/esm/drivers/postgres/postgres-query-builder.js.map +1 -0
- package/esm/drivers/postgres/postgres-query-parser.d.ts +308 -0
- package/esm/drivers/postgres/postgres-query-parser.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-query-parser.js +706 -0
- package/esm/drivers/postgres/postgres-query-parser.js.map +1 -0
- package/esm/drivers/postgres/postgres-sync-adapter.d.ts +83 -0
- package/esm/drivers/postgres/postgres-sync-adapter.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-sync-adapter.js +197 -0
- package/esm/drivers/postgres/postgres-sync-adapter.js.map +1 -0
- package/esm/drivers/postgres/types.d.ts +142 -0
- package/esm/drivers/postgres/types.d.ts.map +1 -0
- package/esm/drivers/sql/index.d.ts +10 -0
- package/esm/drivers/sql/index.d.ts.map +1 -0
- package/esm/drivers/sql/sql-dialect.contract.d.ts +203 -0
- package/esm/drivers/sql/sql-dialect.contract.d.ts.map +1 -0
- package/esm/drivers/sql/sql-types.d.ts +202 -0
- package/esm/drivers/sql/sql-types.d.ts.map +1 -0
- package/esm/index.d.ts +9 -6
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -1
- package/esm/migration/migration-runner.d.ts.map +1 -1
- package/esm/migration/migration-runner.js +3 -0
- package/esm/migration/migration-runner.js.map +1 -1
- package/esm/model/model.d.ts +236 -1
- package/esm/model/model.d.ts.map +1 -1
- package/esm/model/model.js +203 -4
- package/esm/model/model.js.map +1 -1
- package/esm/relations/helpers.d.ts +156 -0
- package/esm/relations/helpers.d.ts.map +1 -0
- package/esm/relations/helpers.js +197 -0
- package/esm/relations/helpers.js.map +1 -0
- package/esm/relations/index.d.ts +33 -0
- package/esm/relations/index.d.ts.map +1 -0
- package/esm/relations/pivot-operations.d.ts +160 -0
- package/esm/relations/pivot-operations.d.ts.map +1 -0
- package/esm/relations/pivot-operations.js +293 -0
- package/esm/relations/pivot-operations.js.map +1 -0
- package/esm/relations/relation-loader.d.ts +194 -0
- package/esm/relations/relation-loader.d.ts.map +1 -0
- package/esm/relations/relation-loader.js +466 -0
- package/esm/relations/relation-loader.js.map +1 -0
- package/esm/relations/types.d.ts +280 -0
- package/esm/relations/types.d.ts.map +1 -0
- package/esm/sync/model-sync-operation.js +1 -1
- package/esm/sync/model-sync-operation.js.map +1 -1
- package/esm/utils/connect-to-database.d.ts.map +1 -1
- package/esm/utils/connect-to-database.js +15 -3
- package/esm/utils/connect-to-database.js.map +1 -1
- package/esm/utils/define-model.d.ts +51 -29
- package/esm/utils/define-model.d.ts.map +1 -1
- package/esm/validation/rules/database-model-rule.js +1 -1
- package/esm/validation/rules/database-model-rule.js.map +1 -1
- package/package.json +4 -4
- package/cjs/drivers/mongo/mongo-id-generator.d.ts.map +0 -1
- package/cjs/drivers/mongo/mongo-id-generator.js.map +0 -1
- package/cjs/drivers/mongo/mongo-migration-driver.d.ts.map +0 -1
- package/cjs/drivers/mongo/mongo-migration-driver.js.map +0 -1
- package/cjs/drivers/mongo/mongo-query-builder.d.ts.map +0 -1
- package/cjs/drivers/mongo/mongo-query-builder.js.map +0 -1
- package/cjs/drivers/mongo/mongo-query-operations.d.ts.map +0 -1
- package/cjs/drivers/mongo/mongo-query-operations.js.map +0 -1
- package/cjs/drivers/mongo/mongo-query-parser.d.ts.map +0 -1
- package/cjs/drivers/mongo/mongo-query-parser.js.map +0 -1
- package/cjs/drivers/mongo/mongo-sync-adapter.d.ts.map +0 -1
- package/cjs/drivers/mongo/mongo-sync-adapter.js.map +0 -1
- package/cjs/drivers/mongo/mongodb-blueprint.d.ts.map +0 -1
- package/cjs/drivers/mongo/mongodb-blueprint.js.map +0 -1
- package/cjs/drivers/mongo/mongodb-driver.d.ts.map +0 -1
- package/cjs/drivers/mongo/mongodb-driver.js.map +0 -1
- package/cjs/drivers/mongo/types.d.ts.map +0 -1
- package/esm/drivers/mongo/mongo-id-generator.d.ts.map +0 -1
- package/esm/drivers/mongo/mongo-id-generator.js.map +0 -1
- package/esm/drivers/mongo/mongo-migration-driver.d.ts.map +0 -1
- package/esm/drivers/mongo/mongo-migration-driver.js.map +0 -1
- package/esm/drivers/mongo/mongo-query-builder.d.ts.map +0 -1
- package/esm/drivers/mongo/mongo-query-builder.js.map +0 -1
- package/esm/drivers/mongo/mongo-query-operations.d.ts.map +0 -1
- package/esm/drivers/mongo/mongo-query-operations.js.map +0 -1
- package/esm/drivers/mongo/mongo-query-parser.d.ts.map +0 -1
- package/esm/drivers/mongo/mongo-query-parser.js.map +0 -1
- package/esm/drivers/mongo/mongo-sync-adapter.d.ts.map +0 -1
- package/esm/drivers/mongo/mongo-sync-adapter.js.map +0 -1
- package/esm/drivers/mongo/mongodb-blueprint.d.ts.map +0 -1
- package/esm/drivers/mongo/mongodb-blueprint.js.map +0 -1
- package/esm/drivers/mongo/mongodb-driver.d.ts.map +0 -1
- package/esm/drivers/mongo/mongodb-driver.js.map +0 -1
- package/esm/drivers/mongo/types.d.ts.map +0 -1
- /package/cjs/drivers/{mongo → mongodb}/mongodb-blueprint.d.ts +0 -0
- /package/cjs/drivers/{mongo → mongodb}/mongodb-blueprint.js +0 -0
- /package/esm/drivers/{mongo → mongodb}/mongodb-blueprint.d.ts +0 -0
- /package/esm/drivers/{mongo → mongodb}/mongodb-blueprint.js +0 -0
|
@@ -0,0 +1,824 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostgreSQL Query Builder
|
|
3
|
+
*
|
|
4
|
+
* Implements the QueryBuilderContract for PostgreSQL databases.
|
|
5
|
+
* Provides a fluent API for building SQL queries with proper
|
|
6
|
+
* parameter handling and type safety.
|
|
7
|
+
*
|
|
8
|
+
* @module cascade/drivers/postgres
|
|
9
|
+
*/
|
|
10
|
+
import type { GenericObject } from "@mongez/reinforcements";
|
|
11
|
+
import type { ChunkCallback, CursorPaginationOptions, CursorPaginationResult, GroupByInput, HavingInput, JoinOptions, OrderDirection, PaginationOptions, PaginationResult, QueryBuilderContract, RawExpression, WhereCallback, WhereObject, WhereOperator } from "../../contracts/query-builder.contract";
|
|
12
|
+
import type { DataSource } from "../../data-source/data-source";
|
|
13
|
+
import type { GlobalScopeDefinition, LocalScopeCallback } from "../../model/model";
|
|
14
|
+
import { type PostgresParserOperation } from "./postgres-query-parser";
|
|
15
|
+
/**
|
|
16
|
+
* PostgreSQL Query Builder.
|
|
17
|
+
*
|
|
18
|
+
* Implements the Cascade QueryBuilderContract for PostgreSQL.
|
|
19
|
+
* Collects query operations and delegates to PostgresQueryParser
|
|
20
|
+
* for SQL generation.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const users = await queryBuilder('users')
|
|
25
|
+
* .select(['id', 'name', 'email'])
|
|
26
|
+
* .where('status', 'active')
|
|
27
|
+
* .where('age', '>', 18)
|
|
28
|
+
* .orderBy('createdAt', 'desc')
|
|
29
|
+
* .limit(10)
|
|
30
|
+
* .get();
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare class PostgresQueryBuilder<T = unknown> implements QueryBuilderContract<T> {
|
|
34
|
+
readonly table: string;
|
|
35
|
+
/**
|
|
36
|
+
* Collected operations to be parsed into SQL.
|
|
37
|
+
*/
|
|
38
|
+
operations: PostgresParserOperation[];
|
|
39
|
+
/**
|
|
40
|
+
* Data source instance.
|
|
41
|
+
*/
|
|
42
|
+
readonly dataSource: DataSource;
|
|
43
|
+
/**
|
|
44
|
+
* Hydrate callback for transforming results.
|
|
45
|
+
*/
|
|
46
|
+
hydrateCallback?: (data: unknown, index: number) => unknown;
|
|
47
|
+
/**
|
|
48
|
+
* Callback invoked before query execution.
|
|
49
|
+
*/
|
|
50
|
+
private fetchingCallback?;
|
|
51
|
+
/**
|
|
52
|
+
* Callback invoked after records fetched but before hydration.
|
|
53
|
+
*/
|
|
54
|
+
private hydratingCallback?;
|
|
55
|
+
/**
|
|
56
|
+
* Callback invoked after records fetched and hydrated.
|
|
57
|
+
*/
|
|
58
|
+
private fetchedCallback?;
|
|
59
|
+
/**
|
|
60
|
+
* Pending global scopes.
|
|
61
|
+
*/
|
|
62
|
+
pendingGlobalScopes?: Map<string, GlobalScopeDefinition>;
|
|
63
|
+
/**
|
|
64
|
+
* Available local scopes.
|
|
65
|
+
*/
|
|
66
|
+
availableLocalScopes?: Map<string, LocalScopeCallback>;
|
|
67
|
+
/**
|
|
68
|
+
* Disabled global scope names.
|
|
69
|
+
*/
|
|
70
|
+
disabledGlobalScopes: Set<string>;
|
|
71
|
+
/**
|
|
72
|
+
* Whether scopes have been applied.
|
|
73
|
+
*/
|
|
74
|
+
scopesApplied: boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Create a new query builder.
|
|
77
|
+
*
|
|
78
|
+
* @param table - Target table name
|
|
79
|
+
* @param dataSource - Optional data source (uses default if not provided)
|
|
80
|
+
*/
|
|
81
|
+
constructor(table: string, dataSource?: DataSource);
|
|
82
|
+
/**
|
|
83
|
+
* Get the PostgreSQL driver instance.
|
|
84
|
+
*/
|
|
85
|
+
private get driver();
|
|
86
|
+
/**
|
|
87
|
+
* Add an operation to the operations list.
|
|
88
|
+
*
|
|
89
|
+
* @param type - Operation type
|
|
90
|
+
* @param data - Operation data
|
|
91
|
+
*/
|
|
92
|
+
private addOperation;
|
|
93
|
+
/**
|
|
94
|
+
* Clone this query builder with all current operations.
|
|
95
|
+
*
|
|
96
|
+
* @returns New query builder instance
|
|
97
|
+
*/
|
|
98
|
+
clone(): this;
|
|
99
|
+
/**
|
|
100
|
+
* Set a hydration callback to transform each result row.
|
|
101
|
+
*
|
|
102
|
+
* @param callback - Transform function
|
|
103
|
+
* @returns This builder for chaining
|
|
104
|
+
*/
|
|
105
|
+
hydrate(callback: (data: unknown, index: number) => unknown): this;
|
|
106
|
+
/**
|
|
107
|
+
* Register callback invoked before query execution.
|
|
108
|
+
*
|
|
109
|
+
* @param callback - Callback function
|
|
110
|
+
* @returns Unsubscribe function
|
|
111
|
+
*/
|
|
112
|
+
onFetching(callback: (query: this) => void | Promise<void>): () => void;
|
|
113
|
+
/**
|
|
114
|
+
* Register callback invoked after fetch but before hydration.
|
|
115
|
+
*
|
|
116
|
+
* @param callback - Callback function
|
|
117
|
+
* @returns Unsubscribe function
|
|
118
|
+
*/
|
|
119
|
+
onHydrating(callback: (records: unknown[], context: unknown) => void | Promise<void>): () => void;
|
|
120
|
+
/**
|
|
121
|
+
* Register callback invoked after fetch and hydration.
|
|
122
|
+
*
|
|
123
|
+
* @param callback - Callback function
|
|
124
|
+
* @returns Unsubscribe function
|
|
125
|
+
*/
|
|
126
|
+
onFetched(callback: (records: unknown[], context: unknown) => void | Promise<void>): () => void;
|
|
127
|
+
/**
|
|
128
|
+
* Disable one or more global scopes for this query.
|
|
129
|
+
*
|
|
130
|
+
* @param scopeNames - Scope names to disable
|
|
131
|
+
* @returns This builder for chaining
|
|
132
|
+
*/
|
|
133
|
+
withoutGlobalScope(...scopeNames: string[]): this;
|
|
134
|
+
/**
|
|
135
|
+
* Disable all global scopes for this query.
|
|
136
|
+
*
|
|
137
|
+
* @returns This builder for chaining
|
|
138
|
+
*/
|
|
139
|
+
withoutGlobalScopes(): this;
|
|
140
|
+
/**
|
|
141
|
+
* Apply a local scope to this query.
|
|
142
|
+
*
|
|
143
|
+
* @param scopeName - Name of the local scope
|
|
144
|
+
* @returns This builder for chaining
|
|
145
|
+
*/
|
|
146
|
+
scope(scopeName: string): this;
|
|
147
|
+
/**
|
|
148
|
+
* Apply pending global scopes before query execution.
|
|
149
|
+
*/
|
|
150
|
+
private applyPendingScopes;
|
|
151
|
+
/**
|
|
152
|
+
* Add a WHERE clause to filter records.
|
|
153
|
+
*/
|
|
154
|
+
where(field: string, value: unknown): this;
|
|
155
|
+
where(field: string, operator: WhereOperator, value: unknown): this;
|
|
156
|
+
where(conditions: WhereObject): this;
|
|
157
|
+
where(callback: WhereCallback<T>): this;
|
|
158
|
+
/**
|
|
159
|
+
* Add an OR WHERE clause.
|
|
160
|
+
*/
|
|
161
|
+
orWhere(field: string, value: unknown): this;
|
|
162
|
+
orWhere(field: string, operator: WhereOperator, value: unknown): this;
|
|
163
|
+
orWhere(conditions: WhereObject): this;
|
|
164
|
+
orWhere(callback: WhereCallback<T>): this;
|
|
165
|
+
/**
|
|
166
|
+
* Add a raw WHERE clause.
|
|
167
|
+
*/
|
|
168
|
+
whereRaw(expression: RawExpression, bindings?: unknown[]): this;
|
|
169
|
+
/**
|
|
170
|
+
* Add a raw OR WHERE clause.
|
|
171
|
+
*/
|
|
172
|
+
orWhereRaw(expression: RawExpression, bindings?: unknown[]): this;
|
|
173
|
+
/**
|
|
174
|
+
* Compare two columns.
|
|
175
|
+
*/
|
|
176
|
+
whereColumn(first: string, operator: WhereOperator, second: string): this;
|
|
177
|
+
/**
|
|
178
|
+
* Compare two columns with OR.
|
|
179
|
+
*/
|
|
180
|
+
orWhereColumn(first: string, operator: WhereOperator, second: string): this;
|
|
181
|
+
/**
|
|
182
|
+
* Compare multiple column pairs.
|
|
183
|
+
*/
|
|
184
|
+
whereColumns(comparisons: Array<[left: string, operator: WhereOperator, right: string]>): this;
|
|
185
|
+
/**
|
|
186
|
+
* Check if field is between two columns.
|
|
187
|
+
*/
|
|
188
|
+
whereBetweenColumns(field: string, lowerColumn: string, upperColumn: string): this;
|
|
189
|
+
/**
|
|
190
|
+
* Filter by date (ignoring time).
|
|
191
|
+
*/
|
|
192
|
+
whereDate(field: string, value: Date | string): this;
|
|
193
|
+
/**
|
|
194
|
+
* Alias for whereDate.
|
|
195
|
+
*/
|
|
196
|
+
whereDateEquals(field: string, value: Date | string): this;
|
|
197
|
+
/**
|
|
198
|
+
* Filter for dates before a value.
|
|
199
|
+
*/
|
|
200
|
+
whereDateBefore(field: string, value: Date | string): this;
|
|
201
|
+
/**
|
|
202
|
+
* Filter for dates after a value.
|
|
203
|
+
*/
|
|
204
|
+
whereDateAfter(field: string, value: Date | string): this;
|
|
205
|
+
/**
|
|
206
|
+
* Filter by time.
|
|
207
|
+
*/
|
|
208
|
+
whereTime(field: string, value: string): this;
|
|
209
|
+
/**
|
|
210
|
+
* Filter by day of month.
|
|
211
|
+
*/
|
|
212
|
+
whereDay(field: string, value: number): this;
|
|
213
|
+
/**
|
|
214
|
+
* Filter by month.
|
|
215
|
+
*/
|
|
216
|
+
whereMonth(field: string, value: number): this;
|
|
217
|
+
/**
|
|
218
|
+
* Filter by year.
|
|
219
|
+
*/
|
|
220
|
+
whereYear(field: string, value: number): this;
|
|
221
|
+
/**
|
|
222
|
+
* Check if JSON contains value.
|
|
223
|
+
*/
|
|
224
|
+
whereJsonContains(path: string, value: unknown): this;
|
|
225
|
+
/**
|
|
226
|
+
* Check if JSON doesn't contain value.
|
|
227
|
+
*/
|
|
228
|
+
whereJsonDoesntContain(path: string, value: unknown): this;
|
|
229
|
+
/**
|
|
230
|
+
* Check if JSON contains key.
|
|
231
|
+
*/
|
|
232
|
+
whereJsonContainsKey(path: string): this;
|
|
233
|
+
/**
|
|
234
|
+
* Check JSON array/string length.
|
|
235
|
+
*/
|
|
236
|
+
whereJsonLength(path: string, operator: WhereOperator, value: number): this;
|
|
237
|
+
/**
|
|
238
|
+
* Check if JSON is array.
|
|
239
|
+
*/
|
|
240
|
+
whereJsonIsArray(path: string): this;
|
|
241
|
+
/**
|
|
242
|
+
* Check if JSON is object.
|
|
243
|
+
*/
|
|
244
|
+
whereJsonIsObject(path: string): this;
|
|
245
|
+
/**
|
|
246
|
+
* Check array length.
|
|
247
|
+
*/
|
|
248
|
+
whereArrayLength(field: string, operator: WhereOperator, value: number): this;
|
|
249
|
+
/**
|
|
250
|
+
* Filter by ID.
|
|
251
|
+
*/
|
|
252
|
+
whereId(value: string | number): this;
|
|
253
|
+
/**
|
|
254
|
+
* Filter by multiple IDs.
|
|
255
|
+
*/
|
|
256
|
+
whereIds(values: Array<string | number>): this;
|
|
257
|
+
/**
|
|
258
|
+
* Filter by UUID.
|
|
259
|
+
*/
|
|
260
|
+
whereUuid(value: string): this;
|
|
261
|
+
/**
|
|
262
|
+
* Filter by ULID.
|
|
263
|
+
*/
|
|
264
|
+
whereUlid(value: string): this;
|
|
265
|
+
/**
|
|
266
|
+
* Full-text search.
|
|
267
|
+
*/
|
|
268
|
+
whereFullText(fields: string | string[], query: string): this;
|
|
269
|
+
/**
|
|
270
|
+
* Full-text search with OR.
|
|
271
|
+
*/
|
|
272
|
+
orWhereFullText(fields: string | string[], query: string): this;
|
|
273
|
+
/**
|
|
274
|
+
* Alias for whereFullText.
|
|
275
|
+
*/
|
|
276
|
+
whereSearch(field: string, query: string): this;
|
|
277
|
+
/**
|
|
278
|
+
* Negate conditions.
|
|
279
|
+
*/
|
|
280
|
+
whereNot(callback: WhereCallback<T>): this;
|
|
281
|
+
/**
|
|
282
|
+
* Negate conditions with OR.
|
|
283
|
+
*/
|
|
284
|
+
orWhereNot(callback: WhereCallback<T>): this;
|
|
285
|
+
/**
|
|
286
|
+
* Filter by value in array.
|
|
287
|
+
*/
|
|
288
|
+
whereIn(field: string, values: unknown[]): this;
|
|
289
|
+
/**
|
|
290
|
+
* Filter by value not in array.
|
|
291
|
+
*/
|
|
292
|
+
whereNotIn(field: string, values: unknown[]): this;
|
|
293
|
+
/**
|
|
294
|
+
* Filter by NULL value.
|
|
295
|
+
*/
|
|
296
|
+
whereNull(field: string): this;
|
|
297
|
+
/**
|
|
298
|
+
* Filter by NOT NULL value.
|
|
299
|
+
*/
|
|
300
|
+
whereNotNull(field: string): this;
|
|
301
|
+
/**
|
|
302
|
+
* Filter by range (inclusive).
|
|
303
|
+
*/
|
|
304
|
+
whereBetween(field: string, range: [unknown, unknown]): this;
|
|
305
|
+
/**
|
|
306
|
+
* Filter by not in range.
|
|
307
|
+
*/
|
|
308
|
+
whereNotBetween(field: string, range: [unknown, unknown]): this;
|
|
309
|
+
/**
|
|
310
|
+
* Filter by LIKE pattern (case-insensitive).
|
|
311
|
+
*/
|
|
312
|
+
whereLike(field: string, pattern: RegExp | string): this;
|
|
313
|
+
/**
|
|
314
|
+
* Filter by NOT LIKE pattern.
|
|
315
|
+
*/
|
|
316
|
+
whereNotLike(field: string, pattern: RegExp | string): this;
|
|
317
|
+
/**
|
|
318
|
+
* Filter by prefix.
|
|
319
|
+
*/
|
|
320
|
+
whereStartsWith(field: string, value: string | number): this;
|
|
321
|
+
/**
|
|
322
|
+
* Filter by not starting with prefix.
|
|
323
|
+
*/
|
|
324
|
+
whereNotStartsWith(field: string, value: string | number): this;
|
|
325
|
+
/**
|
|
326
|
+
* Filter by suffix.
|
|
327
|
+
*/
|
|
328
|
+
whereEndsWith(field: string, value: string | number): this;
|
|
329
|
+
/**
|
|
330
|
+
* Filter by not ending with suffix.
|
|
331
|
+
*/
|
|
332
|
+
whereNotEndsWith(field: string, value: string | number): this;
|
|
333
|
+
/**
|
|
334
|
+
* Filter by date range.
|
|
335
|
+
*/
|
|
336
|
+
whereDateBetween(field: string, range: [Date, Date]): this;
|
|
337
|
+
/**
|
|
338
|
+
* Filter by not in date range.
|
|
339
|
+
*/
|
|
340
|
+
whereDateNotBetween(field: string, range: [Date, Date]): this;
|
|
341
|
+
/**
|
|
342
|
+
* Check if field/subquery exists.
|
|
343
|
+
*/
|
|
344
|
+
whereExists(field: string): this;
|
|
345
|
+
whereExists(callback: WhereCallback<T>): this;
|
|
346
|
+
/**
|
|
347
|
+
* Check if field/subquery doesn't exist.
|
|
348
|
+
*/
|
|
349
|
+
whereNotExists(field: string): this;
|
|
350
|
+
whereNotExists(callback: WhereCallback<T>): this;
|
|
351
|
+
/**
|
|
352
|
+
* Check array size.
|
|
353
|
+
*/
|
|
354
|
+
whereSize(field: string, size: number): this;
|
|
355
|
+
whereSize(field: string, operator: WhereOperator, size: number): this;
|
|
356
|
+
/**
|
|
357
|
+
* Perform a full-text search.
|
|
358
|
+
*/
|
|
359
|
+
textSearch(query: string, filters?: WhereObject): this;
|
|
360
|
+
/**
|
|
361
|
+
* Constrain an array field to contain the given value.
|
|
362
|
+
*/
|
|
363
|
+
whereArrayContains(field: string, value: unknown, key?: string): this;
|
|
364
|
+
/**
|
|
365
|
+
* Constrain an array field to not contain the given value.
|
|
366
|
+
*/
|
|
367
|
+
whereArrayNotContains(field: string, value: unknown, key?: string): this;
|
|
368
|
+
/**
|
|
369
|
+
* Constrain an array field to contain the value OR be empty.
|
|
370
|
+
*/
|
|
371
|
+
whereArrayHasOrEmpty(field: string, value: unknown, key?: string): this;
|
|
372
|
+
/**
|
|
373
|
+
* Constrain an array field to not contain the value OR be empty.
|
|
374
|
+
*/
|
|
375
|
+
whereArrayNotHaveOrEmpty(field: string, value: unknown, key?: string): this;
|
|
376
|
+
/**
|
|
377
|
+
* Add a JOIN clause.
|
|
378
|
+
*/
|
|
379
|
+
join(table: string, localField: string, foreignField: string): this;
|
|
380
|
+
join(options: JoinOptions): this;
|
|
381
|
+
/**
|
|
382
|
+
* Add a LEFT JOIN clause.
|
|
383
|
+
*/
|
|
384
|
+
leftJoin(table: string, localField: string, foreignField: string): this;
|
|
385
|
+
leftJoin(options: JoinOptions): this;
|
|
386
|
+
/**
|
|
387
|
+
* Add a RIGHT JOIN clause.
|
|
388
|
+
*/
|
|
389
|
+
rightJoin(table: string, localField: string, foreignField: string): this;
|
|
390
|
+
rightJoin(options: JoinOptions): this;
|
|
391
|
+
/**
|
|
392
|
+
* Add an INNER JOIN clause.
|
|
393
|
+
*/
|
|
394
|
+
innerJoin(table: string, localField: string, foreignField: string): this;
|
|
395
|
+
innerJoin(options: JoinOptions): this;
|
|
396
|
+
/**
|
|
397
|
+
* Add a FULL OUTER JOIN clause.
|
|
398
|
+
*/
|
|
399
|
+
fullJoin(table: string, localField: string, foreignField: string): this;
|
|
400
|
+
fullJoin(options: JoinOptions): this;
|
|
401
|
+
/**
|
|
402
|
+
* Add a CROSS JOIN clause.
|
|
403
|
+
*/
|
|
404
|
+
crossJoin(table: string): this;
|
|
405
|
+
/**
|
|
406
|
+
* Add a raw JOIN clause.
|
|
407
|
+
*/
|
|
408
|
+
joinRaw(expression: RawExpression, bindings?: unknown[]): this;
|
|
409
|
+
/**
|
|
410
|
+
* Select specific columns.
|
|
411
|
+
*/
|
|
412
|
+
select(fields: string[]): this;
|
|
413
|
+
select(fields: Record<string, 0 | 1 | boolean>): this;
|
|
414
|
+
select(...fields: Array<string | string[]>): this;
|
|
415
|
+
/**
|
|
416
|
+
* Select a field with alias.
|
|
417
|
+
*/
|
|
418
|
+
selectAs(field: string, alias: string): this;
|
|
419
|
+
/**
|
|
420
|
+
* Select raw expression.
|
|
421
|
+
*/
|
|
422
|
+
selectRaw(expression: RawExpression, bindings?: unknown[]): this;
|
|
423
|
+
/**
|
|
424
|
+
* Select multiple raw expressions.
|
|
425
|
+
*/
|
|
426
|
+
selectRawMany(definitions: Array<{
|
|
427
|
+
alias: string;
|
|
428
|
+
expression: RawExpression;
|
|
429
|
+
bindings?: unknown[];
|
|
430
|
+
}>): this;
|
|
431
|
+
/**
|
|
432
|
+
* Select subquery.
|
|
433
|
+
*/
|
|
434
|
+
selectSub(expression: RawExpression, alias: string): this;
|
|
435
|
+
/**
|
|
436
|
+
* Add subquery to existing selection.
|
|
437
|
+
*/
|
|
438
|
+
addSelectSub(expression: RawExpression, alias: string): this;
|
|
439
|
+
/**
|
|
440
|
+
* Select aggregate value.
|
|
441
|
+
*/
|
|
442
|
+
selectAggregate(field: string, aggregate: "sum" | "avg" | "min" | "max" | "count" | "first" | "last", alias: string): this;
|
|
443
|
+
/**
|
|
444
|
+
* Select existence check.
|
|
445
|
+
*/
|
|
446
|
+
selectExists(field: string, alias: string): this;
|
|
447
|
+
/**
|
|
448
|
+
* Select count.
|
|
449
|
+
*/
|
|
450
|
+
selectCount(field: string, alias: string): this;
|
|
451
|
+
/**
|
|
452
|
+
* Select CASE expression.
|
|
453
|
+
*/
|
|
454
|
+
selectCase(cases: Array<{
|
|
455
|
+
when: RawExpression;
|
|
456
|
+
then: RawExpression | unknown;
|
|
457
|
+
}>, otherwise: RawExpression | unknown, alias: string): this;
|
|
458
|
+
/**
|
|
459
|
+
* Select conditional (IF/ELSE).
|
|
460
|
+
*/
|
|
461
|
+
selectWhen(condition: RawExpression, thenValue: RawExpression | unknown, elseValue: RawExpression | unknown, alias: string): this;
|
|
462
|
+
/**
|
|
463
|
+
* Direct projection manipulation.
|
|
464
|
+
*/
|
|
465
|
+
selectDriverProjection(callback: (projection: Record<string, unknown>) => void): this;
|
|
466
|
+
/**
|
|
467
|
+
* Select JSON path.
|
|
468
|
+
*/
|
|
469
|
+
selectJson(path: string, alias?: string): this;
|
|
470
|
+
/**
|
|
471
|
+
* Select JSON path with raw expression.
|
|
472
|
+
*/
|
|
473
|
+
selectJsonRaw(path: string, expression: RawExpression, alias: string): this;
|
|
474
|
+
/**
|
|
475
|
+
* Exclude JSON path.
|
|
476
|
+
*/
|
|
477
|
+
deselectJson(path: string): this;
|
|
478
|
+
/**
|
|
479
|
+
* Concatenate fields.
|
|
480
|
+
*/
|
|
481
|
+
selectConcat(fields: Array<string | RawExpression>, alias: string): this;
|
|
482
|
+
/**
|
|
483
|
+
* Coalesce values.
|
|
484
|
+
*/
|
|
485
|
+
selectCoalesce(fields: Array<string | RawExpression>, alias: string): this;
|
|
486
|
+
/**
|
|
487
|
+
* Window function.
|
|
488
|
+
*/
|
|
489
|
+
selectWindow(spec: RawExpression): this;
|
|
490
|
+
/**
|
|
491
|
+
* Exclude columns from projection.
|
|
492
|
+
*/
|
|
493
|
+
deselect(fields: string[]): this;
|
|
494
|
+
/**
|
|
495
|
+
* Clear selection.
|
|
496
|
+
*/
|
|
497
|
+
clearSelect(): this;
|
|
498
|
+
/**
|
|
499
|
+
* Select all columns.
|
|
500
|
+
*/
|
|
501
|
+
selectAll(): this;
|
|
502
|
+
/**
|
|
503
|
+
* Restore default projection.
|
|
504
|
+
*/
|
|
505
|
+
selectDefault(): this;
|
|
506
|
+
/**
|
|
507
|
+
* Select distinct values.
|
|
508
|
+
*/
|
|
509
|
+
distinctValues(fields?: string | string[]): this;
|
|
510
|
+
/**
|
|
511
|
+
* Add additional select fields.
|
|
512
|
+
*/
|
|
513
|
+
addSelect(fields: string[]): this;
|
|
514
|
+
/**
|
|
515
|
+
* Order results.
|
|
516
|
+
*/
|
|
517
|
+
orderBy(field: string, direction?: OrderDirection): this;
|
|
518
|
+
orderBy(fields: Record<string, OrderDirection>): this;
|
|
519
|
+
/**
|
|
520
|
+
* Order descending.
|
|
521
|
+
*/
|
|
522
|
+
orderByDesc(field: string): this;
|
|
523
|
+
/**
|
|
524
|
+
* Order with raw expression.
|
|
525
|
+
*/
|
|
526
|
+
orderByRaw(expression: RawExpression, bindings?: unknown[]): this;
|
|
527
|
+
/**
|
|
528
|
+
* Order randomly.
|
|
529
|
+
*/
|
|
530
|
+
orderByRandom(limit: number): this;
|
|
531
|
+
/**
|
|
532
|
+
* Get latest records.
|
|
533
|
+
*/
|
|
534
|
+
latest(column?: string): Promise<T[]>;
|
|
535
|
+
/**
|
|
536
|
+
* Get oldest records.
|
|
537
|
+
*/
|
|
538
|
+
oldest(column?: string): this;
|
|
539
|
+
/**
|
|
540
|
+
* Limit results.
|
|
541
|
+
*/
|
|
542
|
+
limit(value: number): this;
|
|
543
|
+
/**
|
|
544
|
+
* Skip results.
|
|
545
|
+
*/
|
|
546
|
+
skip(value: number): this;
|
|
547
|
+
/**
|
|
548
|
+
* Offset results.
|
|
549
|
+
*/
|
|
550
|
+
offset(value: number): this;
|
|
551
|
+
/**
|
|
552
|
+
* Take first N results.
|
|
553
|
+
*/
|
|
554
|
+
take(value: number): this;
|
|
555
|
+
/**
|
|
556
|
+
* Apply cursor pagination hints.
|
|
557
|
+
*/
|
|
558
|
+
cursor(after?: unknown, before?: unknown): this;
|
|
559
|
+
/**
|
|
560
|
+
* Group results.
|
|
561
|
+
*/
|
|
562
|
+
groupBy(input: GroupByInput): this;
|
|
563
|
+
/**
|
|
564
|
+
* Raw GROUP BY.
|
|
565
|
+
*/
|
|
566
|
+
groupByRaw(expression: RawExpression, bindings?: unknown[]): this;
|
|
567
|
+
/**
|
|
568
|
+
* HAVING clause.
|
|
569
|
+
*/
|
|
570
|
+
having(field: string, value: unknown): this;
|
|
571
|
+
having(field: string, operator: WhereOperator, value: unknown): this;
|
|
572
|
+
having(condition: HavingInput): this;
|
|
573
|
+
/**
|
|
574
|
+
* Raw HAVING clause.
|
|
575
|
+
*/
|
|
576
|
+
havingRaw(expression: RawExpression, bindings?: unknown[]): this;
|
|
577
|
+
/**
|
|
578
|
+
* Execute query and get all results.
|
|
579
|
+
*/
|
|
580
|
+
get<TResult = T>(): Promise<TResult[]>;
|
|
581
|
+
/**
|
|
582
|
+
* Apply JOIN operations for joinWith() relations.
|
|
583
|
+
*/
|
|
584
|
+
private applyJoinRelations;
|
|
585
|
+
/**
|
|
586
|
+
* Extract joined relation data from raw records.
|
|
587
|
+
* Returns a map of record index to relation data.
|
|
588
|
+
*/
|
|
589
|
+
private extractJoinedRelationData;
|
|
590
|
+
/**
|
|
591
|
+
* Attach joined relations to hydrated models.
|
|
592
|
+
*/
|
|
593
|
+
private attachJoinedRelations;
|
|
594
|
+
/**
|
|
595
|
+
* Get first result.
|
|
596
|
+
*/
|
|
597
|
+
first<TResult = T>(): Promise<TResult | null>;
|
|
598
|
+
/**
|
|
599
|
+
* Get last result.
|
|
600
|
+
*/
|
|
601
|
+
last<TResult = T>(): Promise<TResult | null>;
|
|
602
|
+
/**
|
|
603
|
+
* Get random results.
|
|
604
|
+
*/
|
|
605
|
+
random<TResult = T>(limit?: number): Promise<TResult[]>;
|
|
606
|
+
/**
|
|
607
|
+
* Get first or throw.
|
|
608
|
+
*/
|
|
609
|
+
firstOrFail<TResult = T>(): Promise<TResult>;
|
|
610
|
+
/**
|
|
611
|
+
* Get first or call callback.
|
|
612
|
+
*/
|
|
613
|
+
firstOr<TResult = T>(callback: () => TResult | Promise<TResult>): Promise<TResult>;
|
|
614
|
+
/**
|
|
615
|
+
* Get first or return default.
|
|
616
|
+
*/
|
|
617
|
+
firstOrNull<TResult = T>(): Promise<TResult | null>;
|
|
618
|
+
/**
|
|
619
|
+
* Get first or create new.
|
|
620
|
+
*/
|
|
621
|
+
firstOrNew<TResult = T>(defaults: GenericObject): Promise<TResult>;
|
|
622
|
+
/**
|
|
623
|
+
* Find by ID.
|
|
624
|
+
*/
|
|
625
|
+
find<TResult = T>(id: number | string): Promise<TResult | null>;
|
|
626
|
+
/**
|
|
627
|
+
* Count results.
|
|
628
|
+
*/
|
|
629
|
+
count(): Promise<number>;
|
|
630
|
+
/**
|
|
631
|
+
* Sum of field values.
|
|
632
|
+
*/
|
|
633
|
+
sum(field: string): Promise<number>;
|
|
634
|
+
/**
|
|
635
|
+
* Average of field values.
|
|
636
|
+
*/
|
|
637
|
+
avg(field: string): Promise<number>;
|
|
638
|
+
/**
|
|
639
|
+
* Minimum field value.
|
|
640
|
+
*/
|
|
641
|
+
min(field: string): Promise<number>;
|
|
642
|
+
/**
|
|
643
|
+
* Maximum field value.
|
|
644
|
+
*/
|
|
645
|
+
max(field: string): Promise<number>;
|
|
646
|
+
/**
|
|
647
|
+
* Get distinct values.
|
|
648
|
+
*/
|
|
649
|
+
distinct<TResult = unknown>(field: string): Promise<TResult[]>;
|
|
650
|
+
/**
|
|
651
|
+
* Get array of values for field.
|
|
652
|
+
*/
|
|
653
|
+
pluck(field: string): Promise<unknown[]>;
|
|
654
|
+
/**
|
|
655
|
+
* Get single scalar value.
|
|
656
|
+
*/
|
|
657
|
+
value<TResult = unknown>(field: string): Promise<TResult | null>;
|
|
658
|
+
/**
|
|
659
|
+
* Check if records exist.
|
|
660
|
+
*/
|
|
661
|
+
exists(): Promise<boolean>;
|
|
662
|
+
/**
|
|
663
|
+
* Check if no records exist.
|
|
664
|
+
*/
|
|
665
|
+
notExists(): Promise<boolean>;
|
|
666
|
+
/**
|
|
667
|
+
* Count distinct values.
|
|
668
|
+
*/
|
|
669
|
+
countDistinct(field: string): Promise<number>;
|
|
670
|
+
/**
|
|
671
|
+
* Increment field value.
|
|
672
|
+
*/
|
|
673
|
+
increment(field: string, amount?: number): Promise<number>;
|
|
674
|
+
/**
|
|
675
|
+
* Decrement field value.
|
|
676
|
+
*/
|
|
677
|
+
decrement(field: string, amount?: number): Promise<number>;
|
|
678
|
+
/**
|
|
679
|
+
* Increment for all matching.
|
|
680
|
+
*/
|
|
681
|
+
incrementMany(field: string, amount?: number): Promise<number>;
|
|
682
|
+
/**
|
|
683
|
+
* Decrement for all matching.
|
|
684
|
+
*/
|
|
685
|
+
decrementMany(field: string, amount?: number): Promise<number>;
|
|
686
|
+
/**
|
|
687
|
+
* Process results in chunks.
|
|
688
|
+
*/
|
|
689
|
+
chunk(size: number, callback: ChunkCallback<T>): Promise<void>;
|
|
690
|
+
/**
|
|
691
|
+
* Page-based pagination.
|
|
692
|
+
*/
|
|
693
|
+
paginate(options: PaginationOptions): Promise<PaginationResult<T>>;
|
|
694
|
+
/**
|
|
695
|
+
* Cursor-based pagination.
|
|
696
|
+
*/
|
|
697
|
+
cursorPaginate(options: CursorPaginationOptions): Promise<CursorPaginationResult<T>>;
|
|
698
|
+
/**
|
|
699
|
+
* Delete matching records.
|
|
700
|
+
*/
|
|
701
|
+
delete(): Promise<number>;
|
|
702
|
+
/**
|
|
703
|
+
* Delete first matching record.
|
|
704
|
+
*/
|
|
705
|
+
deleteOne(): Promise<number>;
|
|
706
|
+
/**
|
|
707
|
+
* Update matching records.
|
|
708
|
+
*/
|
|
709
|
+
update(fields: Record<string, unknown>): Promise<number>;
|
|
710
|
+
/**
|
|
711
|
+
* Unset fields from matching records.
|
|
712
|
+
*/
|
|
713
|
+
unset(...fields: string[]): Promise<number>;
|
|
714
|
+
/**
|
|
715
|
+
* Get the raw SQL query.
|
|
716
|
+
*/
|
|
717
|
+
parse(): {
|
|
718
|
+
sql: string;
|
|
719
|
+
params: unknown[];
|
|
720
|
+
};
|
|
721
|
+
/**
|
|
722
|
+
* Get formatted SQL string.
|
|
723
|
+
*/
|
|
724
|
+
pretty(): string;
|
|
725
|
+
/**
|
|
726
|
+
* Get query execution plan.
|
|
727
|
+
*/
|
|
728
|
+
explain(): Promise<unknown>;
|
|
729
|
+
/**
|
|
730
|
+
* Add driver-specific raw modifications to the query.
|
|
731
|
+
*/
|
|
732
|
+
raw(builder: (native: unknown) => unknown): this;
|
|
733
|
+
/**
|
|
734
|
+
* Extend the query builder with driver-specific extensions.
|
|
735
|
+
*/
|
|
736
|
+
extend<R>(extension: string, ..._args: unknown[]): R;
|
|
737
|
+
/**
|
|
738
|
+
* Tap into the query builder for side-effects.
|
|
739
|
+
*/
|
|
740
|
+
tap(callback: (builder: this) => void): this;
|
|
741
|
+
/**
|
|
742
|
+
* Conditionally apply query modifications.
|
|
743
|
+
*/
|
|
744
|
+
when<V>(condition: V | boolean, callback: (builder: this, value: V) => void, otherwise?: (builder: this) => void): this;
|
|
745
|
+
/**
|
|
746
|
+
* Build WHERE clause from current operations.
|
|
747
|
+
*/
|
|
748
|
+
private buildFilter;
|
|
749
|
+
/**
|
|
750
|
+
* Relations to eagerly load.
|
|
751
|
+
*/
|
|
752
|
+
eagerLoadRelations: Map<string, boolean | ((query: QueryBuilderContract) => void)>;
|
|
753
|
+
/**
|
|
754
|
+
* Relations to count.
|
|
755
|
+
*/
|
|
756
|
+
countRelations: string[];
|
|
757
|
+
/**
|
|
758
|
+
* Relations to load via JOIN (single query).
|
|
759
|
+
*/
|
|
760
|
+
joinRelations: Map<string, {
|
|
761
|
+
alias: string;
|
|
762
|
+
type: "belongsTo" | "hasOne" | "hasMany";
|
|
763
|
+
}>;
|
|
764
|
+
/**
|
|
765
|
+
* Relation definitions from the model.
|
|
766
|
+
*/
|
|
767
|
+
relationDefinitions?: Record<string, any>;
|
|
768
|
+
/**
|
|
769
|
+
* Model class reference.
|
|
770
|
+
*/
|
|
771
|
+
modelClass?: any;
|
|
772
|
+
/**
|
|
773
|
+
* Load relations using database JOINs in a single query.
|
|
774
|
+
*
|
|
775
|
+
* Unlike `with()` which uses separate queries, `joinWith()` uses
|
|
776
|
+
* LEFT JOIN to fetch related data in a single query.
|
|
777
|
+
*
|
|
778
|
+
* @param relations - Relation names to load via JOIN
|
|
779
|
+
* @returns This builder for chaining
|
|
780
|
+
*/
|
|
781
|
+
joinWith(...relations: string[]): this;
|
|
782
|
+
/**
|
|
783
|
+
* Eagerly load one or more relations.
|
|
784
|
+
*
|
|
785
|
+
* Supported patterns:
|
|
786
|
+
* - `with("posts")` - Load relation
|
|
787
|
+
* - `with("posts", "comments")` - Load multiple relations
|
|
788
|
+
* - `with("posts", callback)` - Load relation with constraint
|
|
789
|
+
* - `with({ posts: true, comments: callback })` - Object configuration
|
|
790
|
+
*
|
|
791
|
+
* @param args - Relation name(s), callbacks, or configuration object
|
|
792
|
+
*/
|
|
793
|
+
with(...args: (string | Record<string, boolean | ((query: QueryBuilderContract) => void)> | ((query: QueryBuilderContract) => void))[]): this;
|
|
794
|
+
/**
|
|
795
|
+
* Add a count of related models as a virtual field.
|
|
796
|
+
* @param relations - Relation name(s) to count
|
|
797
|
+
*/
|
|
798
|
+
withCount(...relations: string[]): this;
|
|
799
|
+
/**
|
|
800
|
+
* Filter results to only those that have related models.
|
|
801
|
+
* @param relation - Relation name
|
|
802
|
+
* @param operator - Optional comparison operator
|
|
803
|
+
* @param count - Optional count to compare against
|
|
804
|
+
*/
|
|
805
|
+
has(relation: string, operator?: string, count?: number): this;
|
|
806
|
+
/**
|
|
807
|
+
* Filter results that have related models matching specific conditions.
|
|
808
|
+
* @param relation - Relation name
|
|
809
|
+
* @param callback - Callback to define conditions
|
|
810
|
+
*/
|
|
811
|
+
whereHas(relation: string, callback: (query: QueryBuilderContract) => void): this;
|
|
812
|
+
/**
|
|
813
|
+
* Filter results that don't have any related models.
|
|
814
|
+
* @param relation - Relation name
|
|
815
|
+
*/
|
|
816
|
+
doesntHave(relation: string): this;
|
|
817
|
+
/**
|
|
818
|
+
* Filter results that don't have related models matching specific conditions.
|
|
819
|
+
* @param relation - Relation name
|
|
820
|
+
* @param callback - Callback to define conditions
|
|
821
|
+
*/
|
|
822
|
+
whereDoesntHave(relation: string, callback: (query: QueryBuilderContract) => void): this;
|
|
823
|
+
}
|
|
824
|
+
//# sourceMappingURL=postgres-query-builder.d.ts.map
|