@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.
Files changed (269) hide show
  1. package/cjs/contracts/database-driver.contract.d.ts +118 -0
  2. package/cjs/contracts/database-driver.contract.d.ts.map +1 -1
  3. package/cjs/contracts/migration-driver.contract.d.ts +14 -0
  4. package/cjs/contracts/migration-driver.contract.d.ts.map +1 -1
  5. package/cjs/contracts/query-builder.contract.d.ts +410 -1
  6. package/cjs/contracts/query-builder.contract.d.ts.map +1 -1
  7. package/cjs/data-source/data-source-registry.d.ts +4 -0
  8. package/cjs/data-source/data-source-registry.d.ts.map +1 -1
  9. package/cjs/data-source/data-source-registry.js +7 -0
  10. package/cjs/data-source/data-source-registry.js.map +1 -1
  11. package/cjs/drivers/mongodb/mongodb-blueprint.d.ts.map +1 -0
  12. package/cjs/drivers/mongodb/mongodb-blueprint.js.map +1 -0
  13. package/{esm/drivers/mongo → cjs/drivers/mongodb}/mongodb-driver.d.ts +49 -0
  14. package/cjs/drivers/mongodb/mongodb-driver.d.ts.map +1 -0
  15. package/cjs/drivers/{mongo → mongodb}/mongodb-driver.js +125 -8
  16. package/cjs/drivers/mongodb/mongodb-driver.js.map +1 -0
  17. package/cjs/drivers/{mongo/mongo-id-generator.d.ts → mongodb/mongodb-id-generator.d.ts} +1 -1
  18. package/cjs/drivers/mongodb/mongodb-id-generator.d.ts.map +1 -0
  19. package/cjs/drivers/{mongo/mongo-id-generator.js → mongodb/mongodb-id-generator.js} +1 -1
  20. package/cjs/drivers/mongodb/mongodb-id-generator.js.map +1 -0
  21. package/cjs/drivers/{mongo/mongo-migration-driver.d.ts → mongodb/mongodb-migration-driver.d.ts} +10 -1
  22. package/cjs/drivers/mongodb/mongodb-migration-driver.d.ts.map +1 -0
  23. package/cjs/drivers/{mongo/mongo-migration-driver.js → mongodb/mongodb-migration-driver.js} +18 -1
  24. package/cjs/drivers/mongodb/mongodb-migration-driver.js.map +1 -0
  25. package/cjs/drivers/{mongo/mongo-query-builder.d.ts → mongodb/mongodb-query-builder.d.ts} +172 -4
  26. package/cjs/drivers/mongodb/mongodb-query-builder.d.ts.map +1 -0
  27. package/cjs/drivers/{mongo/mongo-query-builder.js → mongodb/mongodb-query-builder.js} +220 -14
  28. package/cjs/drivers/mongodb/mongodb-query-builder.js.map +1 -0
  29. package/{esm/drivers/mongo/mongo-query-operations.d.ts → cjs/drivers/mongodb/mongodb-query-operations.d.ts} +16 -16
  30. package/cjs/drivers/mongodb/mongodb-query-operations.d.ts.map +1 -0
  31. package/cjs/drivers/{mongo/mongo-query-operations.js → mongodb/mongodb-query-operations.js} +22 -22
  32. package/cjs/drivers/mongodb/mongodb-query-operations.js.map +1 -0
  33. package/cjs/drivers/{mongo/mongo-query-parser.d.ts → mongodb/mongodb-query-parser.d.ts} +2 -2
  34. package/cjs/drivers/mongodb/mongodb-query-parser.d.ts.map +1 -0
  35. package/cjs/drivers/{mongo/mongo-query-parser.js → mongodb/mongodb-query-parser.js} +87 -87
  36. package/cjs/drivers/mongodb/mongodb-query-parser.js.map +1 -0
  37. package/cjs/drivers/{mongo/mongo-sync-adapter.d.ts → mongodb/mongodb-sync-adapter.d.ts} +2 -2
  38. package/cjs/drivers/mongodb/mongodb-sync-adapter.d.ts.map +1 -0
  39. package/cjs/drivers/{mongo/mongo-sync-adapter.js → mongodb/mongodb-sync-adapter.js} +2 -2
  40. package/cjs/drivers/mongodb/mongodb-sync-adapter.js.map +1 -0
  41. package/{esm/drivers/mongo → cjs/drivers/mongodb}/types.d.ts +2 -2
  42. package/cjs/drivers/mongodb/types.d.ts.map +1 -0
  43. package/cjs/drivers/postgres/index.d.ts +16 -0
  44. package/cjs/drivers/postgres/index.d.ts.map +1 -0
  45. package/cjs/drivers/postgres/postgres-blueprint.d.ts +64 -0
  46. package/cjs/drivers/postgres/postgres-blueprint.d.ts.map +1 -0
  47. package/cjs/drivers/postgres/postgres-blueprint.js +121 -0
  48. package/cjs/drivers/postgres/postgres-blueprint.js.map +1 -0
  49. package/cjs/drivers/postgres/postgres-dialect.d.ts +135 -0
  50. package/cjs/drivers/postgres/postgres-dialect.d.ts.map +1 -0
  51. package/cjs/drivers/postgres/postgres-dialect.js +245 -0
  52. package/cjs/drivers/postgres/postgres-dialect.js.map +1 -0
  53. package/cjs/drivers/postgres/postgres-driver.d.ts +360 -0
  54. package/cjs/drivers/postgres/postgres-driver.d.ts.map +1 -0
  55. package/cjs/drivers/postgres/postgres-driver.js +763 -0
  56. package/cjs/drivers/postgres/postgres-driver.js.map +1 -0
  57. package/cjs/drivers/postgres/postgres-migration-driver.d.ts +297 -0
  58. package/cjs/drivers/postgres/postgres-migration-driver.d.ts.map +1 -0
  59. package/cjs/drivers/postgres/postgres-migration-driver.js +578 -0
  60. package/cjs/drivers/postgres/postgres-migration-driver.js.map +1 -0
  61. package/cjs/drivers/postgres/postgres-query-builder.d.ts +824 -0
  62. package/cjs/drivers/postgres/postgres-query-builder.d.ts.map +1 -0
  63. package/cjs/drivers/postgres/postgres-query-builder.js +1800 -0
  64. package/cjs/drivers/postgres/postgres-query-builder.js.map +1 -0
  65. package/cjs/drivers/postgres/postgres-query-parser.d.ts +308 -0
  66. package/cjs/drivers/postgres/postgres-query-parser.d.ts.map +1 -0
  67. package/cjs/drivers/postgres/postgres-query-parser.js +706 -0
  68. package/cjs/drivers/postgres/postgres-query-parser.js.map +1 -0
  69. package/cjs/drivers/postgres/postgres-sync-adapter.d.ts +83 -0
  70. package/cjs/drivers/postgres/postgres-sync-adapter.d.ts.map +1 -0
  71. package/cjs/drivers/postgres/postgres-sync-adapter.js +197 -0
  72. package/cjs/drivers/postgres/postgres-sync-adapter.js.map +1 -0
  73. package/cjs/drivers/postgres/types.d.ts +142 -0
  74. package/cjs/drivers/postgres/types.d.ts.map +1 -0
  75. package/cjs/drivers/sql/index.d.ts +10 -0
  76. package/cjs/drivers/sql/index.d.ts.map +1 -0
  77. package/cjs/drivers/sql/sql-dialect.contract.d.ts +203 -0
  78. package/cjs/drivers/sql/sql-dialect.contract.d.ts.map +1 -0
  79. package/cjs/drivers/sql/sql-types.d.ts +202 -0
  80. package/cjs/drivers/sql/sql-types.d.ts.map +1 -0
  81. package/cjs/index.d.ts +9 -6
  82. package/cjs/index.d.ts.map +1 -1
  83. package/cjs/index.js +1 -1
  84. package/cjs/migration/migration-runner.d.ts.map +1 -1
  85. package/cjs/migration/migration-runner.js +3 -0
  86. package/cjs/migration/migration-runner.js.map +1 -1
  87. package/cjs/model/model.d.ts +236 -1
  88. package/cjs/model/model.d.ts.map +1 -1
  89. package/cjs/model/model.js +203 -4
  90. package/cjs/model/model.js.map +1 -1
  91. package/cjs/relations/helpers.d.ts +156 -0
  92. package/cjs/relations/helpers.d.ts.map +1 -0
  93. package/cjs/relations/helpers.js +197 -0
  94. package/cjs/relations/helpers.js.map +1 -0
  95. package/cjs/relations/index.d.ts +33 -0
  96. package/cjs/relations/index.d.ts.map +1 -0
  97. package/cjs/relations/pivot-operations.d.ts +160 -0
  98. package/cjs/relations/pivot-operations.d.ts.map +1 -0
  99. package/cjs/relations/pivot-operations.js +293 -0
  100. package/cjs/relations/pivot-operations.js.map +1 -0
  101. package/cjs/relations/relation-loader.d.ts +194 -0
  102. package/cjs/relations/relation-loader.d.ts.map +1 -0
  103. package/cjs/relations/relation-loader.js +466 -0
  104. package/cjs/relations/relation-loader.js.map +1 -0
  105. package/cjs/relations/types.d.ts +280 -0
  106. package/cjs/relations/types.d.ts.map +1 -0
  107. package/cjs/sync/model-sync-operation.js +1 -1
  108. package/cjs/sync/model-sync-operation.js.map +1 -1
  109. package/cjs/utils/connect-to-database.d.ts.map +1 -1
  110. package/cjs/utils/connect-to-database.js +15 -3
  111. package/cjs/utils/connect-to-database.js.map +1 -1
  112. package/cjs/utils/define-model.d.ts +51 -29
  113. package/cjs/utils/define-model.d.ts.map +1 -1
  114. package/cjs/validation/rules/database-model-rule.js +1 -1
  115. package/cjs/validation/rules/database-model-rule.js.map +1 -1
  116. package/esm/contracts/database-driver.contract.d.ts +118 -0
  117. package/esm/contracts/database-driver.contract.d.ts.map +1 -1
  118. package/esm/contracts/migration-driver.contract.d.ts +14 -0
  119. package/esm/contracts/migration-driver.contract.d.ts.map +1 -1
  120. package/esm/contracts/query-builder.contract.d.ts +410 -1
  121. package/esm/contracts/query-builder.contract.d.ts.map +1 -1
  122. package/esm/data-source/data-source-registry.d.ts +4 -0
  123. package/esm/data-source/data-source-registry.d.ts.map +1 -1
  124. package/esm/data-source/data-source-registry.js +7 -0
  125. package/esm/data-source/data-source-registry.js.map +1 -1
  126. package/esm/drivers/mongodb/mongodb-blueprint.d.ts.map +1 -0
  127. package/esm/drivers/mongodb/mongodb-blueprint.js.map +1 -0
  128. package/{cjs/drivers/mongo → esm/drivers/mongodb}/mongodb-driver.d.ts +49 -0
  129. package/esm/drivers/mongodb/mongodb-driver.d.ts.map +1 -0
  130. package/esm/drivers/{mongo → mongodb}/mongodb-driver.js +121 -4
  131. package/esm/drivers/mongodb/mongodb-driver.js.map +1 -0
  132. package/esm/drivers/{mongo/mongo-id-generator.d.ts → mongodb/mongodb-id-generator.d.ts} +1 -1
  133. package/esm/drivers/mongodb/mongodb-id-generator.d.ts.map +1 -0
  134. package/esm/drivers/{mongo/mongo-id-generator.js → mongodb/mongodb-id-generator.js} +1 -1
  135. package/esm/drivers/mongodb/mongodb-id-generator.js.map +1 -0
  136. package/esm/drivers/{mongo/mongo-migration-driver.d.ts → mongodb/mongodb-migration-driver.d.ts} +10 -1
  137. package/esm/drivers/mongodb/mongodb-migration-driver.d.ts.map +1 -0
  138. package/esm/drivers/{mongo/mongo-migration-driver.js → mongodb/mongodb-migration-driver.js} +18 -1
  139. package/esm/drivers/mongodb/mongodb-migration-driver.js.map +1 -0
  140. package/esm/drivers/{mongo/mongo-query-builder.d.ts → mongodb/mongodb-query-builder.d.ts} +172 -4
  141. package/esm/drivers/mongodb/mongodb-query-builder.d.ts.map +1 -0
  142. package/esm/drivers/{mongo/mongo-query-builder.js → mongodb/mongodb-query-builder.js} +218 -12
  143. package/esm/drivers/mongodb/mongodb-query-builder.js.map +1 -0
  144. package/{cjs/drivers/mongo/mongo-query-operations.d.ts → esm/drivers/mongodb/mongodb-query-operations.d.ts} +16 -16
  145. package/esm/drivers/mongodb/mongodb-query-operations.d.ts.map +1 -0
  146. package/esm/drivers/{mongo/mongo-query-operations.js → mongodb/mongodb-query-operations.js} +22 -22
  147. package/esm/drivers/mongodb/mongodb-query-operations.js.map +1 -0
  148. package/esm/drivers/{mongo/mongo-query-parser.d.ts → mongodb/mongodb-query-parser.d.ts} +2 -2
  149. package/esm/drivers/mongodb/mongodb-query-parser.d.ts.map +1 -0
  150. package/esm/drivers/{mongo/mongo-query-parser.js → mongodb/mongodb-query-parser.js} +87 -87
  151. package/esm/drivers/mongodb/mongodb-query-parser.js.map +1 -0
  152. package/esm/drivers/{mongo/mongo-sync-adapter.d.ts → mongodb/mongodb-sync-adapter.d.ts} +2 -2
  153. package/esm/drivers/mongodb/mongodb-sync-adapter.d.ts.map +1 -0
  154. package/esm/drivers/{mongo/mongo-sync-adapter.js → mongodb/mongodb-sync-adapter.js} +2 -2
  155. package/esm/drivers/mongodb/mongodb-sync-adapter.js.map +1 -0
  156. package/{cjs/drivers/mongo → esm/drivers/mongodb}/types.d.ts +2 -2
  157. package/esm/drivers/mongodb/types.d.ts.map +1 -0
  158. package/esm/drivers/postgres/index.d.ts +16 -0
  159. package/esm/drivers/postgres/index.d.ts.map +1 -0
  160. package/esm/drivers/postgres/postgres-blueprint.d.ts +64 -0
  161. package/esm/drivers/postgres/postgres-blueprint.d.ts.map +1 -0
  162. package/esm/drivers/postgres/postgres-blueprint.js +121 -0
  163. package/esm/drivers/postgres/postgres-blueprint.js.map +1 -0
  164. package/esm/drivers/postgres/postgres-dialect.d.ts +135 -0
  165. package/esm/drivers/postgres/postgres-dialect.d.ts.map +1 -0
  166. package/esm/drivers/postgres/postgres-dialect.js +245 -0
  167. package/esm/drivers/postgres/postgres-dialect.js.map +1 -0
  168. package/esm/drivers/postgres/postgres-driver.d.ts +360 -0
  169. package/esm/drivers/postgres/postgres-driver.d.ts.map +1 -0
  170. package/esm/drivers/postgres/postgres-driver.js +763 -0
  171. package/esm/drivers/postgres/postgres-driver.js.map +1 -0
  172. package/esm/drivers/postgres/postgres-migration-driver.d.ts +297 -0
  173. package/esm/drivers/postgres/postgres-migration-driver.d.ts.map +1 -0
  174. package/esm/drivers/postgres/postgres-migration-driver.js +578 -0
  175. package/esm/drivers/postgres/postgres-migration-driver.js.map +1 -0
  176. package/esm/drivers/postgres/postgres-query-builder.d.ts +824 -0
  177. package/esm/drivers/postgres/postgres-query-builder.d.ts.map +1 -0
  178. package/esm/drivers/postgres/postgres-query-builder.js +1800 -0
  179. package/esm/drivers/postgres/postgres-query-builder.js.map +1 -0
  180. package/esm/drivers/postgres/postgres-query-parser.d.ts +308 -0
  181. package/esm/drivers/postgres/postgres-query-parser.d.ts.map +1 -0
  182. package/esm/drivers/postgres/postgres-query-parser.js +706 -0
  183. package/esm/drivers/postgres/postgres-query-parser.js.map +1 -0
  184. package/esm/drivers/postgres/postgres-sync-adapter.d.ts +83 -0
  185. package/esm/drivers/postgres/postgres-sync-adapter.d.ts.map +1 -0
  186. package/esm/drivers/postgres/postgres-sync-adapter.js +197 -0
  187. package/esm/drivers/postgres/postgres-sync-adapter.js.map +1 -0
  188. package/esm/drivers/postgres/types.d.ts +142 -0
  189. package/esm/drivers/postgres/types.d.ts.map +1 -0
  190. package/esm/drivers/sql/index.d.ts +10 -0
  191. package/esm/drivers/sql/index.d.ts.map +1 -0
  192. package/esm/drivers/sql/sql-dialect.contract.d.ts +203 -0
  193. package/esm/drivers/sql/sql-dialect.contract.d.ts.map +1 -0
  194. package/esm/drivers/sql/sql-types.d.ts +202 -0
  195. package/esm/drivers/sql/sql-types.d.ts.map +1 -0
  196. package/esm/index.d.ts +9 -6
  197. package/esm/index.d.ts.map +1 -1
  198. package/esm/index.js +1 -1
  199. package/esm/migration/migration-runner.d.ts.map +1 -1
  200. package/esm/migration/migration-runner.js +3 -0
  201. package/esm/migration/migration-runner.js.map +1 -1
  202. package/esm/model/model.d.ts +236 -1
  203. package/esm/model/model.d.ts.map +1 -1
  204. package/esm/model/model.js +203 -4
  205. package/esm/model/model.js.map +1 -1
  206. package/esm/relations/helpers.d.ts +156 -0
  207. package/esm/relations/helpers.d.ts.map +1 -0
  208. package/esm/relations/helpers.js +197 -0
  209. package/esm/relations/helpers.js.map +1 -0
  210. package/esm/relations/index.d.ts +33 -0
  211. package/esm/relations/index.d.ts.map +1 -0
  212. package/esm/relations/pivot-operations.d.ts +160 -0
  213. package/esm/relations/pivot-operations.d.ts.map +1 -0
  214. package/esm/relations/pivot-operations.js +293 -0
  215. package/esm/relations/pivot-operations.js.map +1 -0
  216. package/esm/relations/relation-loader.d.ts +194 -0
  217. package/esm/relations/relation-loader.d.ts.map +1 -0
  218. package/esm/relations/relation-loader.js +466 -0
  219. package/esm/relations/relation-loader.js.map +1 -0
  220. package/esm/relations/types.d.ts +280 -0
  221. package/esm/relations/types.d.ts.map +1 -0
  222. package/esm/sync/model-sync-operation.js +1 -1
  223. package/esm/sync/model-sync-operation.js.map +1 -1
  224. package/esm/utils/connect-to-database.d.ts.map +1 -1
  225. package/esm/utils/connect-to-database.js +15 -3
  226. package/esm/utils/connect-to-database.js.map +1 -1
  227. package/esm/utils/define-model.d.ts +51 -29
  228. package/esm/utils/define-model.d.ts.map +1 -1
  229. package/esm/validation/rules/database-model-rule.js +1 -1
  230. package/esm/validation/rules/database-model-rule.js.map +1 -1
  231. package/package.json +4 -4
  232. package/cjs/drivers/mongo/mongo-id-generator.d.ts.map +0 -1
  233. package/cjs/drivers/mongo/mongo-id-generator.js.map +0 -1
  234. package/cjs/drivers/mongo/mongo-migration-driver.d.ts.map +0 -1
  235. package/cjs/drivers/mongo/mongo-migration-driver.js.map +0 -1
  236. package/cjs/drivers/mongo/mongo-query-builder.d.ts.map +0 -1
  237. package/cjs/drivers/mongo/mongo-query-builder.js.map +0 -1
  238. package/cjs/drivers/mongo/mongo-query-operations.d.ts.map +0 -1
  239. package/cjs/drivers/mongo/mongo-query-operations.js.map +0 -1
  240. package/cjs/drivers/mongo/mongo-query-parser.d.ts.map +0 -1
  241. package/cjs/drivers/mongo/mongo-query-parser.js.map +0 -1
  242. package/cjs/drivers/mongo/mongo-sync-adapter.d.ts.map +0 -1
  243. package/cjs/drivers/mongo/mongo-sync-adapter.js.map +0 -1
  244. package/cjs/drivers/mongo/mongodb-blueprint.d.ts.map +0 -1
  245. package/cjs/drivers/mongo/mongodb-blueprint.js.map +0 -1
  246. package/cjs/drivers/mongo/mongodb-driver.d.ts.map +0 -1
  247. package/cjs/drivers/mongo/mongodb-driver.js.map +0 -1
  248. package/cjs/drivers/mongo/types.d.ts.map +0 -1
  249. package/esm/drivers/mongo/mongo-id-generator.d.ts.map +0 -1
  250. package/esm/drivers/mongo/mongo-id-generator.js.map +0 -1
  251. package/esm/drivers/mongo/mongo-migration-driver.d.ts.map +0 -1
  252. package/esm/drivers/mongo/mongo-migration-driver.js.map +0 -1
  253. package/esm/drivers/mongo/mongo-query-builder.d.ts.map +0 -1
  254. package/esm/drivers/mongo/mongo-query-builder.js.map +0 -1
  255. package/esm/drivers/mongo/mongo-query-operations.d.ts.map +0 -1
  256. package/esm/drivers/mongo/mongo-query-operations.js.map +0 -1
  257. package/esm/drivers/mongo/mongo-query-parser.d.ts.map +0 -1
  258. package/esm/drivers/mongo/mongo-query-parser.js.map +0 -1
  259. package/esm/drivers/mongo/mongo-sync-adapter.d.ts.map +0 -1
  260. package/esm/drivers/mongo/mongo-sync-adapter.js.map +0 -1
  261. package/esm/drivers/mongo/mongodb-blueprint.d.ts.map +0 -1
  262. package/esm/drivers/mongo/mongodb-blueprint.js.map +0 -1
  263. package/esm/drivers/mongo/mongodb-driver.d.ts.map +0 -1
  264. package/esm/drivers/mongo/mongodb-driver.js.map +0 -1
  265. package/esm/drivers/mongo/types.d.ts.map +0 -1
  266. /package/cjs/drivers/{mongo → mongodb}/mongodb-blueprint.d.ts +0 -0
  267. /package/cjs/drivers/{mongo → mongodb}/mongodb-blueprint.js +0 -0
  268. /package/esm/drivers/{mongo → mongodb}/mongodb-blueprint.d.ts +0 -0
  269. /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