@c9up/atlas 0.2.0 → 0.2.1

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 (234) hide show
  1. package/README.md +8 -0
  2. package/db.darwin-arm64.node +0 -0
  3. package/db.darwin-x64.node +0 -0
  4. package/db.linux-arm64-gnu.node +0 -0
  5. package/db.linux-x64-gnu.node +0 -0
  6. package/db.win32-x64-msvc.node +0 -0
  7. package/dist/AtlasProvider.d.ts +60 -7
  8. package/dist/AtlasProvider.d.ts.map +1 -1
  9. package/dist/AtlasProvider.js +204 -38
  10. package/dist/AtlasProvider.js.map +1 -1
  11. package/dist/BaseEntity.d.ts +17 -0
  12. package/dist/BaseEntity.d.ts.map +1 -1
  13. package/dist/BaseEntity.js.map +1 -1
  14. package/dist/BaseModel.d.ts +63 -27
  15. package/dist/BaseModel.d.ts.map +1 -1
  16. package/dist/BaseModel.js +108 -51
  17. package/dist/BaseModel.js.map +1 -1
  18. package/dist/BaseRepository.d.ts +11 -1
  19. package/dist/BaseRepository.d.ts.map +1 -1
  20. package/dist/BaseRepository.js +95 -20
  21. package/dist/BaseRepository.js.map +1 -1
  22. package/dist/ConnectionManager.d.ts +106 -0
  23. package/dist/ConnectionManager.d.ts.map +1 -0
  24. package/dist/ConnectionManager.js +228 -0
  25. package/dist/ConnectionManager.js.map +1 -0
  26. package/dist/ModelQuery.d.ts +256 -43
  27. package/dist/ModelQuery.d.ts.map +1 -1
  28. package/dist/ModelQuery.js +899 -231
  29. package/dist/ModelQuery.js.map +1 -1
  30. package/dist/Transaction.d.ts +54 -1
  31. package/dist/Transaction.d.ts.map +1 -1
  32. package/dist/Transaction.js +121 -59
  33. package/dist/Transaction.js.map +1 -1
  34. package/dist/adapters/NapiDbAdapter.d.ts +11 -0
  35. package/dist/adapters/NapiDbAdapter.d.ts.map +1 -1
  36. package/dist/adapters/NapiDbAdapter.js +35 -7
  37. package/dist/adapters/NapiDbAdapter.js.map +1 -1
  38. package/dist/console/contract.d.ts +62 -0
  39. package/dist/console/contract.d.ts.map +1 -0
  40. package/dist/console/contract.js +38 -0
  41. package/dist/console/contract.js.map +1 -0
  42. package/dist/console/factoryCommands.d.ts +23 -0
  43. package/dist/console/factoryCommands.d.ts.map +1 -0
  44. package/dist/console/factoryCommands.js +62 -0
  45. package/dist/console/factoryCommands.js.map +1 -0
  46. package/dist/console/migrationCommands.d.ts +38 -8
  47. package/dist/console/migrationCommands.d.ts.map +1 -1
  48. package/dist/console/migrationCommands.js +157 -50
  49. package/dist/console/migrationCommands.js.map +1 -1
  50. package/dist/console/schemaCheckCommand.d.ts +11 -17
  51. package/dist/console/schemaCheckCommand.d.ts.map +1 -1
  52. package/dist/console/schemaCheckCommand.js +21 -15
  53. package/dist/console/schemaCheckCommand.js.map +1 -1
  54. package/dist/console/schemaDumpCommand.d.ts +30 -0
  55. package/dist/console/schemaDumpCommand.d.ts.map +1 -0
  56. package/dist/console/schemaDumpCommand.js +69 -0
  57. package/dist/console/schemaDumpCommand.js.map +1 -0
  58. package/dist/console/schemaGenerateCommand.d.ts +100 -0
  59. package/dist/console/schemaGenerateCommand.d.ts.map +1 -0
  60. package/dist/console/schemaGenerateCommand.js +246 -0
  61. package/dist/console/schemaGenerateCommand.js.map +1 -0
  62. package/dist/console/seederCommands.d.ts +46 -0
  63. package/dist/console/seederCommands.d.ts.map +1 -0
  64. package/dist/console/seederCommands.js +136 -0
  65. package/dist/console/seederCommands.js.map +1 -0
  66. package/dist/decorators/entity.d.ts +13 -2
  67. package/dist/decorators/entity.d.ts.map +1 -1
  68. package/dist/decorators/entity.js +10 -0
  69. package/dist/decorators/entity.js.map +1 -1
  70. package/dist/decorators/hooks.d.ts +3 -3
  71. package/dist/decorators/hooks.d.ts.map +1 -1
  72. package/dist/decorators/hooks.js.map +1 -1
  73. package/dist/events.d.ts +5 -0
  74. package/dist/events.d.ts.map +1 -1
  75. package/dist/events.js.map +1 -1
  76. package/dist/factories.d.ts +8 -0
  77. package/dist/factories.d.ts.map +1 -0
  78. package/dist/factories.js +8 -0
  79. package/dist/factories.js.map +1 -0
  80. package/dist/index.d.ts +11 -5
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +12 -4
  83. package/dist/index.js.map +1 -1
  84. package/dist/lucid-schema.d.ts +15 -0
  85. package/dist/lucid-schema.d.ts.map +1 -0
  86. package/dist/lucid-schema.js +16 -0
  87. package/dist/lucid-schema.js.map +1 -0
  88. package/dist/orm.d.ts +14 -0
  89. package/dist/orm.d.ts.map +1 -0
  90. package/dist/orm.js +14 -0
  91. package/dist/orm.js.map +1 -0
  92. package/dist/query/DatabaseQueryBuilder.d.ts +557 -0
  93. package/dist/query/DatabaseQueryBuilder.d.ts.map +1 -0
  94. package/dist/query/DatabaseQueryBuilder.js +1798 -0
  95. package/dist/query/DatabaseQueryBuilder.js.map +1 -0
  96. package/dist/query/DmlBuilder.d.ts +62 -0
  97. package/dist/query/DmlBuilder.d.ts.map +1 -0
  98. package/dist/query/DmlBuilder.js +84 -0
  99. package/dist/query/DmlBuilder.js.map +1 -0
  100. package/dist/query/QueryBuilder.d.ts +5 -0
  101. package/dist/query/QueryBuilder.d.ts.map +1 -1
  102. package/dist/query/QueryBuilder.js +7 -0
  103. package/dist/query/QueryBuilder.js.map +1 -1
  104. package/dist/query/RawQueryBuilder.d.ts +47 -0
  105. package/dist/query/RawQueryBuilder.d.ts.map +1 -0
  106. package/dist/query/RawQueryBuilder.js +138 -0
  107. package/dist/query/RawQueryBuilder.js.map +1 -0
  108. package/dist/query/interpolate.d.ts +45 -0
  109. package/dist/query/interpolate.d.ts.map +1 -0
  110. package/dist/query/interpolate.js +51 -0
  111. package/dist/query/interpolate.js.map +1 -0
  112. package/dist/query/native.d.ts +8 -0
  113. package/dist/query/native.d.ts.map +1 -1
  114. package/dist/query/native.js +14 -0
  115. package/dist/query/native.js.map +1 -1
  116. package/dist/query/operators.d.ts +4 -0
  117. package/dist/query/operators.d.ts.map +1 -0
  118. package/dist/query/operators.js +27 -0
  119. package/dist/query/operators.js.map +1 -0
  120. package/dist/schema/Migration.d.ts +31 -7
  121. package/dist/schema/Migration.d.ts.map +1 -1
  122. package/dist/schema/Migration.js +34 -7
  123. package/dist/schema/Migration.js.map +1 -1
  124. package/dist/schema/MigrationRunner.d.ts +56 -6
  125. package/dist/schema/MigrationRunner.d.ts.map +1 -1
  126. package/dist/schema/MigrationRunner.js +382 -112
  127. package/dist/schema/MigrationRunner.js.map +1 -1
  128. package/dist/schema/Schema.d.ts +59 -2
  129. package/dist/schema/Schema.d.ts.map +1 -1
  130. package/dist/schema/Schema.js +143 -9
  131. package/dist/schema/Schema.js.map +1 -1
  132. package/dist/schema/SchemaDumper.d.ts +121 -0
  133. package/dist/schema/SchemaDumper.d.ts.map +1 -0
  134. package/dist/schema/SchemaDumper.js +365 -0
  135. package/dist/schema/SchemaDumper.js.map +1 -0
  136. package/dist/schema/Seeder.d.ts +13 -0
  137. package/dist/schema/Seeder.d.ts.map +1 -1
  138. package/dist/schema/Seeder.js +28 -5
  139. package/dist/schema/Seeder.js.map +1 -1
  140. package/dist/schema/TableBuilder.d.ts +27 -8
  141. package/dist/schema/TableBuilder.d.ts.map +1 -1
  142. package/dist/schema/TableBuilder.js +50 -12
  143. package/dist/schema/TableBuilder.js.map +1 -1
  144. package/dist/schema/catalog.d.ts +25 -1
  145. package/dist/schema/catalog.d.ts.map +1 -1
  146. package/dist/schema/catalog.js +69 -22
  147. package/dist/schema/catalog.js.map +1 -1
  148. package/dist/schema/introspect.d.ts +1 -1
  149. package/dist/schema/introspect.d.ts.map +1 -1
  150. package/dist/schema/introspect.js +26 -11
  151. package/dist/schema/introspect.js.map +1 -1
  152. package/dist/seeders.d.ts +7 -0
  153. package/dist/seeders.d.ts.map +1 -0
  154. package/dist/seeders.js +7 -0
  155. package/dist/seeders.js.map +1 -0
  156. package/dist/services/db.d.ts +120 -9
  157. package/dist/services/db.d.ts.map +1 -1
  158. package/dist/services/db.js +182 -26
  159. package/dist/services/db.js.map +1 -1
  160. package/dist/testing/DatabaseCleanup.d.ts +29 -6
  161. package/dist/testing/DatabaseCleanup.d.ts.map +1 -1
  162. package/dist/testing/DatabaseCleanup.js +44 -17
  163. package/dist/testing/DatabaseCleanup.js.map +1 -1
  164. package/dist/testing/DbAssertions.d.ts +48 -0
  165. package/dist/testing/DbAssertions.d.ts.map +1 -0
  166. package/dist/testing/DbAssertions.js +80 -0
  167. package/dist/testing/DbAssertions.js.map +1 -0
  168. package/dist/testing/Factory.d.ts +111 -25
  169. package/dist/testing/Factory.d.ts.map +1 -1
  170. package/dist/testing/Factory.js +331 -56
  171. package/dist/testing/Factory.js.map +1 -1
  172. package/dist/testing/TestUtils.d.ts +49 -0
  173. package/dist/testing/TestUtils.d.ts.map +1 -0
  174. package/dist/testing/TestUtils.js +79 -0
  175. package/dist/testing/TestUtils.js.map +1 -0
  176. package/dist/testing/index.d.ts +3 -1
  177. package/dist/testing/index.d.ts.map +1 -1
  178. package/dist/testing/index.js +3 -1
  179. package/dist/testing/index.js.map +1 -1
  180. package/dist/types/relations.d.ts +31 -0
  181. package/dist/types/relations.d.ts.map +1 -0
  182. package/dist/types/relations.js +20 -0
  183. package/dist/types/relations.js.map +1 -0
  184. package/index.darwin-arm64.node +0 -0
  185. package/index.darwin-x64.node +0 -0
  186. package/index.linux-arm64-gnu.node +0 -0
  187. package/index.linux-x64-gnu.node +0 -0
  188. package/index.win32-x64-msvc.node +0 -0
  189. package/package.json +30 -2
  190. package/src/AtlasProvider.ts +297 -51
  191. package/src/BaseEntity.ts +29 -0
  192. package/src/BaseModel.ts +174 -37
  193. package/src/BaseRepository.ts +136 -17
  194. package/src/ConnectionManager.ts +298 -0
  195. package/src/ModelQuery.ts +1309 -260
  196. package/src/Transaction.ts +194 -60
  197. package/src/adapters/NapiDbAdapter.ts +72 -14
  198. package/src/console/contract.ts +96 -0
  199. package/src/console/factoryCommands.ts +73 -0
  200. package/src/console/migrationCommands.ts +253 -63
  201. package/src/console/schemaCheckCommand.ts +26 -22
  202. package/src/console/schemaDumpCommand.ts +96 -0
  203. package/src/console/schemaGenerateCommand.ts +380 -0
  204. package/src/console/seederCommands.ts +174 -0
  205. package/src/decorators/entity.ts +18 -2
  206. package/src/decorators/hooks.ts +5 -3
  207. package/src/events.ts +5 -0
  208. package/src/factories.ts +10 -0
  209. package/src/index.ts +50 -3
  210. package/src/lucid-schema.ts +22 -0
  211. package/src/orm.ts +13 -0
  212. package/src/query/DatabaseQueryBuilder.ts +2724 -0
  213. package/src/query/DmlBuilder.ts +131 -0
  214. package/src/query/QueryBuilder.ts +8 -0
  215. package/src/query/RawQueryBuilder.ts +173 -0
  216. package/src/query/interpolate.ts +73 -0
  217. package/src/query/native.ts +29 -0
  218. package/src/query/operators.ts +27 -0
  219. package/src/schema/Migration.ts +36 -7
  220. package/src/schema/MigrationRunner.ts +483 -119
  221. package/src/schema/Schema.ts +168 -19
  222. package/src/schema/SchemaDumper.ts +518 -0
  223. package/src/schema/Seeder.ts +47 -10
  224. package/src/schema/TableBuilder.ts +48 -11
  225. package/src/schema/catalog.ts +94 -24
  226. package/src/schema/introspect.ts +26 -9
  227. package/src/seeders.ts +16 -0
  228. package/src/services/db.ts +343 -31
  229. package/src/testing/DatabaseCleanup.ts +73 -21
  230. package/src/testing/DbAssertions.ts +127 -0
  231. package/src/testing/Factory.ts +559 -79
  232. package/src/testing/TestUtils.ts +123 -0
  233. package/src/testing/index.ts +12 -1
  234. package/src/types/relations.ts +43 -0
@@ -0,0 +1,557 @@
1
+ /**
2
+ * Connection-level query builder — Adonis Lucid's `db.query()` / `db.from()` /
3
+ * `db.table()` / `db.insertQuery()`. Unlike {@link ModelQuery} it is NOT bound to
4
+ * a model: it reads and writes plain rows against a table, executing through a
5
+ * connection (or a transaction client passed as `{ client }`).
6
+ *
7
+ * Reads AND writes go through the native compiler directly (`compileStatementNative`),
8
+ * the same path the repository uses — so quoting, casts, the full WHERE grammar
9
+ * (between/like/raw/exists), joins, locks and parameter binding are identical.
10
+ *
11
+ * const rows = await db.from('users').where('is_active', true).orderBy('id')
12
+ * const user = await db.query().from('users').where('id', 1).first()
13
+ * await db.table('audit_logs').insert({ user_id: 1, action: 'login' })
14
+ * await db.from('users').where('id', 1).update({ is_active: false })
15
+ */
16
+ import type { QueryMeta } from "../adapters/NapiDbAdapter.js";
17
+ import { Paginator } from "../ModelQuery.js";
18
+ import { DmlBuilder } from "./DmlBuilder.js";
19
+ import { type CompiledStatement } from "./interpolate.js";
20
+ import { type AtlasDialect, type DialectName } from "./native.js";
21
+ import { RawSql, type WhereOperator } from "./QueryBuilder.js";
22
+ import { RawQueryBuilder } from "./RawQueryBuilder.js";
23
+ /** The minimal execute/query surface a connection or transaction client offers. */
24
+ export interface QueryExecutor {
25
+ query<T = Record<string, unknown>>(sql: string, params?: unknown[], meta?: QueryMeta): Promise<T[]>;
26
+ execute(sql: string, params?: unknown[], meta?: QueryMeta): Promise<unknown>;
27
+ }
28
+ /** The Lucid query-builder entry points a transaction client exposes. */
29
+ export interface TransactionQueryBuilders {
30
+ /** Query builder pre-selected on `table` (Lucid `trx.from`). */
31
+ from(table: string): DatabaseQueryBuilder;
32
+ /** Write builder pre-selected on `table` (Lucid `trx.table`). */
33
+ table(table: string): DatabaseQueryBuilder;
34
+ /** An insert builder (Lucid `trx.insertQuery()`). */
35
+ insertQuery(): DatabaseQueryBuilder;
36
+ /**
37
+ * No argument → a query builder (Lucid `trx.query()`). With SQL → run it
38
+ * low-level, preserving the connection-level `query(sql, params)` executor.
39
+ */
40
+ query(): DatabaseQueryBuilder;
41
+ query<T = Record<string, unknown>>(sql: string, params?: unknown[], meta?: QueryMeta): Promise<T[]>;
42
+ /** A chainable raw query bound to the transaction (Lucid `trx.rawQuery`). */
43
+ rawQuery<T = Record<string, unknown>>(sql: string, bindings?: unknown[] | Record<string, unknown>): RawQueryBuilder<T>;
44
+ /** A raw SQL fragment (Lucid `trx.raw(sql, bindings)`). */
45
+ raw(sql: string, params?: unknown[]): RawSql;
46
+ }
47
+ /** Build the query-builder entry points a transaction client exposes. */
48
+ export declare function makeTransactionQueryBuilders(exec: QueryExecutor, dialect: AtlasDialect): TransactionQueryBuilders;
49
+ /** A sub-query argument — an explicit builder OR a callback that builds one. */
50
+ type SubqueryArg = DatabaseQueryBuilder | ((query: DatabaseQueryBuilder) => void);
51
+ /**
52
+ * The `ON` builder passed to the callback form of `join`/`innerJoin`/`leftJoin`/…
53
+ * (Lucid/Knex). `on*` join two columns; `onVal*` bind a column to a value. The
54
+ * `and`/`or` prefix chains conditions. Mirrors {@link ModelQuery}'s JoinBuilder
55
+ * but with no model value-preparation (the db builder is model-agnostic).
56
+ */
57
+ export interface DbJoinBuilder {
58
+ on(left: string, right: string): DbJoinBuilder;
59
+ on(left: string, operator: string, right: string): DbJoinBuilder;
60
+ andOn(left: string, right: string): DbJoinBuilder;
61
+ andOn(left: string, operator: string, right: string): DbJoinBuilder;
62
+ orOn(left: string, right: string): DbJoinBuilder;
63
+ orOn(left: string, operator: string, right: string): DbJoinBuilder;
64
+ onVal(left: string, value: unknown): DbJoinBuilder;
65
+ andOnVal(left: string, value: unknown): DbJoinBuilder;
66
+ orOnVal(left: string, value: unknown): DbJoinBuilder;
67
+ /** `ON col IN (?, ?)` — bound values (Lucid/Knex `onIn`). */
68
+ onIn(left: string, values: unknown[]): DbJoinBuilder;
69
+ /** `ON col NOT IN (?, ?)` — bound values (Lucid/Knex `onNotIn`). */
70
+ onNotIn(left: string, values: unknown[]): DbJoinBuilder;
71
+ /** `ON col IS NULL` (Lucid/Knex `onNull`). */
72
+ onNull(left: string): DbJoinBuilder;
73
+ /** `ON col IS NOT NULL` (Lucid/Knex `onNotNull`). */
74
+ onNotNull(left: string): DbJoinBuilder;
75
+ /** `ON col BETWEEN ? AND ?` — inclusive (Lucid/Knex `onBetween`). */
76
+ onBetween(left: string, range: readonly [unknown, unknown]): DbJoinBuilder;
77
+ /** `ON col NOT BETWEEN ? AND ?` (Lucid/Knex `onNotBetween`). */
78
+ onNotBetween(left: string, range: readonly [unknown, unknown]): DbJoinBuilder;
79
+ /** `ON EXISTS (subquery)` — a builder or a callback (Lucid/Knex `onExists`). */
80
+ onExists(subquery: SubqueryArg): DbJoinBuilder;
81
+ /** `ON NOT EXISTS (subquery)` (Lucid/Knex `onNotExists`). */
82
+ onNotExists(subquery: SubqueryArg): DbJoinBuilder;
83
+ }
84
+ export declare class DatabaseQueryBuilder<T = Record<string, unknown>> {
85
+ #private;
86
+ constructor(exec: QueryExecutor, dialect: AtlasDialect, table?: string, options?: {
87
+ readOnly?: boolean;
88
+ });
89
+ /** Select the table (Lucid `db.from`). */
90
+ from(table: string): this;
91
+ /**
92
+ * Select a derived-table source — `FROM (<subquery>) AS <alias>` (Lucid
93
+ * `from(subquery)`). The subquery is a builder OR a callback that builds one.
94
+ */
95
+ from(subquery: SubqueryArg, alias?: string): this;
96
+ /**
97
+ * Name this builder as a derived table / SELECT subquery — Lucid/Knex `.as()`.
98
+ * `db.from((s) => s.from('exams').sum('marks as total').as('totals'))` or
99
+ * `parent.select(db.from('logins').select('ip').limit(1).as('last_ip'))`.
100
+ */
101
+ as(alias: string): this;
102
+ /** Select the table for a write (Lucid `db.table`). Alias of {@link from}. */
103
+ table(table: string): this;
104
+ /**
105
+ * Add columns to the SELECT list (Lucid/Knex `select`). Accepts bare names,
106
+ * arrays, and `{ alias: 'column' }` objects for aliasing —
107
+ * `select('id', ['name', 'email'], { total: 'COUNT(*)' })`.
108
+ */
109
+ select(...columns: Array<string | string[] | Record<string, string> | RawSql | DatabaseQueryBuilder>): this;
110
+ /** A parenthesised group of conditions, built on a sub-builder (Lucid `where(cb)`). */
111
+ where(callback: (query: DatabaseQueryBuilder) => void): this;
112
+ /** Every key as an AND equality (Lucid/Knex `where({ a: 1, b: 2 })`). */
113
+ where(conditions: Record<string, unknown>): this;
114
+ where(column: string, value: unknown): this;
115
+ where(column: string, operator: WhereOperator, value: unknown): this;
116
+ /** OR WHERE — joins the previous condition with OR (Lucid/Knex `orWhere`). */
117
+ orWhere(callback: (query: DatabaseQueryBuilder) => void): this;
118
+ orWhere(conditions: Record<string, unknown>): this;
119
+ orWhere(column: string, value: unknown): this;
120
+ orWhere(column: string, operator: WhereOperator, value: unknown): this;
121
+ /** WHERE col NOT IN (…) — a value list, a subquery, OR a tuple (Lucid `whereNotIn`). */
122
+ whereNotIn(column: string, values: unknown[]): this;
123
+ whereNotIn(column: string, subquery: SubqueryArg): this;
124
+ whereNotIn(columns: string[], rows: unknown[][]): this;
125
+ /** WHERE col BETWEEN ? AND ? — inclusive (Lucid/Knex `whereBetween`). */
126
+ whereBetween(column: string, range: readonly [unknown, unknown]): this;
127
+ /** WHERE col NOT BETWEEN ? AND ? (Lucid/Knex `whereNotBetween`). */
128
+ whereNotBetween(column: string, range: readonly [unknown, unknown]): this;
129
+ /** WHERE col LIKE ? — case-sensitive (Lucid/Knex `whereLike`). */
130
+ whereLike(column: string, pattern: string): this;
131
+ /** WHERE col ILIKE ? — case-insensitive; compiled to LOWER(..) LIKE on sqlite/mysql. */
132
+ whereILike(column: string, pattern: string): this;
133
+ /** A raw WHERE fragment with `?` bindings (Lucid/Knex `whereRaw`). */
134
+ whereRaw(sql: string, bindings?: unknown[]): this;
135
+ /** Alias of {@link whereRaw} — AND is the default (Lucid `andWhereRaw`). */
136
+ andWhereRaw(sql: string, bindings?: unknown[]): this;
137
+ /** OR-combined raw WHERE fragment (Lucid `orWhereRaw`). */
138
+ orWhereRaw(sql: string, bindings?: unknown[]): this;
139
+ /** WHERE NOT (raw fragment) (Lucid `whereNotRaw`). */
140
+ whereNotRaw(sql: string, bindings?: unknown[]): this;
141
+ /** Alias of {@link whereNotRaw} (Lucid `andWhereNotRaw`). */
142
+ andWhereNotRaw(sql: string, bindings?: unknown[]): this;
143
+ /** OR NOT (raw fragment) (Lucid `orWhereNotRaw`). */
144
+ orWhereNotRaw(sql: string, bindings?: unknown[]): this;
145
+ /** WHERE left <op> right — both COLUMNS (Lucid/Knex `whereColumn`). */
146
+ whereColumn(left: string, operator: string, right: string): this;
147
+ /** Alias of {@link whereColumn} — AND is the default (Lucid `andWhereColumn`). */
148
+ andWhereColumn(left: string, operator: string, right: string): this;
149
+ /** OR left <op> right — both COLUMNS (Lucid `orWhereColumn`). */
150
+ orWhereColumn(left: string, operator: string, right: string): this;
151
+ /** WHERE NOT (left <op> right) — both COLUMNS (Lucid `whereNotColumn`). */
152
+ whereNotColumn(left: string, operator: string, right: string): this;
153
+ /** Alias of {@link whereNotColumn} (Lucid `andWhereNotColumn`). */
154
+ andWhereNotColumn(left: string, operator: string, right: string): this;
155
+ /** OR NOT (left <op> right) — both COLUMNS (Lucid `orWhereNotColumn`). */
156
+ orWhereNotColumn(left: string, operator: string, right: string): this;
157
+ /** WHERE EXISTS (subquery) — a builder or a callback (Lucid/Knex `whereExists`). */
158
+ whereExists(sub: SubqueryArg): this;
159
+ /** Alias of {@link whereExists} — AND is the default (Lucid `andWhereExists`). */
160
+ andWhereExists(sub: SubqueryArg): this;
161
+ /** WHERE NOT EXISTS (subquery). */
162
+ whereNotExists(sub: SubqueryArg): this;
163
+ /** Alias of {@link whereNotExists} (Lucid `andWhereNotExists`). */
164
+ andWhereNotExists(sub: SubqueryArg): this;
165
+ /** OR EXISTS (subquery). */
166
+ orWhereExists(sub: SubqueryArg): this;
167
+ /** OR NOT EXISTS (subquery) (Lucid `orWhereNotExists`). */
168
+ orWhereNotExists(sub: SubqueryArg): this;
169
+ /**
170
+ * WHERE json `$.path` <op> value (Lucid/Knex `whereJsonPath`). The operator is
171
+ * optional and defaults to `=` — `whereJsonPath('data', '$.theme', 'dark')` or
172
+ * `whereJsonPath('data', '$.total', '>', 1000)`.
173
+ */
174
+ whereJsonPath(column: string, path: string, value: unknown): this;
175
+ whereJsonPath(column: string, path: string, operator: string, value: unknown): this;
176
+ /** Alias of {@link whereJsonPath} (Lucid `andWhereJsonPath`). */
177
+ andWhereJsonPath(column: string, path: string, value: unknown): this;
178
+ andWhereJsonPath(column: string, path: string, operator: string, value: unknown): this;
179
+ /** OR form of {@link whereJsonPath} (Lucid `orWhereJsonPath`). */
180
+ orWhereJsonPath(column: string, path: string, value: unknown): this;
181
+ orWhereJsonPath(column: string, path: string, operator: string, value: unknown): this;
182
+ /** WHERE json column `@>` value — contains (Postgres/MySQL; `whereJsonSupersetOf`). */
183
+ whereJsonSupersetOf(column: string, value: unknown): this;
184
+ /** Lucid alias of {@link whereJsonSupersetOf} (`whereJsonSuperset`). */
185
+ whereJsonSuperset(column: string, value: unknown): this;
186
+ /** OR json `@>` (Lucid `orWhereJsonSuperset`). */
187
+ orWhereJsonSupersetOf(column: string, value: unknown): this;
188
+ orWhereJsonSuperset(column: string, value: unknown): this;
189
+ /** WHERE NOT json `@>` (Lucid `whereNotJsonSuperset`). */
190
+ whereNotJsonSupersetOf(column: string, value: unknown): this;
191
+ whereNotJsonSuperset(column: string, value: unknown): this;
192
+ /** OR NOT json `@>` (Lucid `orWhereNotJsonSuperset`). */
193
+ orWhereNotJsonSupersetOf(column: string, value: unknown): this;
194
+ orWhereNotJsonSuperset(column: string, value: unknown): this;
195
+ /** WHERE json column `<@` value — contained by (`whereJsonSubsetOf`). */
196
+ whereJsonSubsetOf(column: string, value: unknown): this;
197
+ /** Lucid alias of {@link whereJsonSubsetOf} (`whereJsonSubset`). */
198
+ whereJsonSubset(column: string, value: unknown): this;
199
+ /** OR json `<@` (Lucid `orWhereJsonSubset`). */
200
+ orWhereJsonSubsetOf(column: string, value: unknown): this;
201
+ orWhereJsonSubset(column: string, value: unknown): this;
202
+ /** WHERE NOT json `<@` (Lucid `whereNotJsonSubset`). */
203
+ whereNotJsonSubsetOf(column: string, value: unknown): this;
204
+ whereNotJsonSubset(column: string, value: unknown): this;
205
+ /** OR NOT json `<@` (Lucid `orWhereNotJsonSubset`). */
206
+ orWhereNotJsonSubsetOf(column: string, value: unknown): this;
207
+ orWhereNotJsonSubset(column: string, value: unknown): this;
208
+ /**
209
+ * Structural JSON match (Lucid `whereJson`) — the column's JSON must equal
210
+ * `value` (canonical comparison on Postgres/MySQL). AND is the default.
211
+ */
212
+ whereJson(column: string, value: unknown): this;
213
+ /** Alias of {@link whereJson} (Lucid `andWhereJson`). */
214
+ andWhereJson(column: string, value: unknown): this;
215
+ /** OR form of {@link whereJson} (Lucid `orWhereJson`). */
216
+ orWhereJson(column: string, value: unknown): this;
217
+ /** WHERE NOT structural JSON match (Lucid `whereNotJson`). */
218
+ whereNotJson(column: string, value: unknown): this;
219
+ /** Alias of {@link whereNotJson} (Lucid `andWhereNotJson`). */
220
+ andWhereNotJson(column: string, value: unknown): this;
221
+ /** OR NOT structural JSON match (Lucid `orWhereNotJson`). */
222
+ orWhereNotJson(column: string, value: unknown): this;
223
+ /** ORDER BY <raw> — keeps its position among orderBy terms (Lucid `orderByRaw`). */
224
+ orderByRaw(sql: string): this;
225
+ /** GROUP BY <raw expression> (Lucid/Knex `groupByRaw`). */
226
+ groupByRaw(sql: string): this;
227
+ /** HAVING <raw> with `?` bindings (Lucid/Knex `havingRaw`). */
228
+ havingRaw(sql: string, bindings?: unknown[]): this;
229
+ /** `INNER JOIN` — alias of {@link innerJoin} (Lucid/Knex `join`). */
230
+ join(table: string, left: string, right: string): this;
231
+ join(table: string, left: string, operator: string, right: string): this;
232
+ join(table: string, build: (j: DbJoinBuilder) => void): this;
233
+ /** `INNER JOIN table ON <left> [op] <right>` or a callback `ON` builder (Lucid/Knex). */
234
+ innerJoin(table: string, left: string, right: string): this;
235
+ innerJoin(table: string, left: string, operator: string, right: string): this;
236
+ innerJoin(table: string, build: (j: DbJoinBuilder) => void): this;
237
+ /** `LEFT JOIN table ON <left> [op] <right>` or a callback `ON` builder (Lucid/Knex). */
238
+ leftJoin(table: string, left: string, right: string): this;
239
+ leftJoin(table: string, left: string, operator: string, right: string): this;
240
+ leftJoin(table: string, build: (j: DbJoinBuilder) => void): this;
241
+ /** `LEFT OUTER JOIN` — alias of {@link leftJoin} (Lucid/Knex `leftOuterJoin`). */
242
+ leftOuterJoin(table: string, left: string, right: string): this;
243
+ leftOuterJoin(table: string, left: string, operator: string, right: string): this;
244
+ leftOuterJoin(table: string, build: (j: DbJoinBuilder) => void): this;
245
+ /** `RIGHT JOIN table ON <left> [op] <right>` or a callback `ON` builder (Lucid/Knex). */
246
+ rightJoin(table: string, left: string, right: string): this;
247
+ rightJoin(table: string, left: string, operator: string, right: string): this;
248
+ rightJoin(table: string, build: (j: DbJoinBuilder) => void): this;
249
+ /** `RIGHT OUTER JOIN` — alias of {@link rightJoin} (Lucid/Knex `rightOuterJoin`). */
250
+ rightOuterJoin(table: string, left: string, right: string): this;
251
+ rightOuterJoin(table: string, left: string, operator: string, right: string): this;
252
+ rightOuterJoin(table: string, build: (j: DbJoinBuilder) => void): this;
253
+ /** `FULL OUTER JOIN table ON …` (Lucid/Knex `fullOuterJoin`; Postgres — MySQL/SQLite lack it). */
254
+ fullOuterJoin(table: string, left: string, right: string): this;
255
+ fullOuterJoin(table: string, left: string, operator: string, right: string): this;
256
+ fullOuterJoin(table: string, build: (j: DbJoinBuilder) => void): this;
257
+ /** `INNER JOIN table ON <left> = <right>` — quoted equi-join sugar (Lucid `joinOn`). */
258
+ joinOn(table: string, left: string, right: string): this;
259
+ /** `CROSS JOIN table` (Lucid/Knex `crossJoin`). */
260
+ crossJoin(table: string): this;
261
+ /** `UNION` with another query — a builder or a callback (Lucid/Knex `union`). */
262
+ union(sub: SubqueryArg): this;
263
+ /** `UNION ALL` (Lucid/Knex `unionAll`). */
264
+ unionAll(sub: SubqueryArg): this;
265
+ /** `INTERSECT` — rows present in both queries (Lucid/Knex `intersect`). */
266
+ intersect(sub: SubqueryArg): this;
267
+ /** `INTERSECT ALL` — duplicate-preserving {@link intersect} (Postgres/MySQL). */
268
+ intersectAll(sub: SubqueryArg): this;
269
+ /** `EXCEPT` — rows in this query but not the other (Lucid/Knex `except`). */
270
+ except(sub: SubqueryArg): this;
271
+ /** `EXCEPT ALL` — duplicate-preserving {@link except} (Postgres/MySQL). */
272
+ exceptAll(sub: SubqueryArg): this;
273
+ /**
274
+ * `WITH name AS (subquery)` common table expression (Lucid/Knex `with`). The
275
+ * body is a pre-built builder OR a callback that builds one.
276
+ */
277
+ with(name: string, sub: SubqueryArg, options?: {
278
+ recursive?: boolean;
279
+ materialized?: boolean;
280
+ columns?: string[];
281
+ }): this;
282
+ /**
283
+ * `WITH RECURSIVE name[(cols)] AS (subquery)` (Lucid/Knex `withRecursive`).
284
+ * The optional `columns` list restricts/names the CTE's output columns.
285
+ */
286
+ withRecursive(name: string, sub: SubqueryArg, columns?: string[]): this;
287
+ /** `WITH name AS MATERIALIZED (subquery)` — Postgres (Lucid/Knex `withMaterialized`). */
288
+ withMaterialized(name: string, sub: SubqueryArg): this;
289
+ /** `WITH name AS NOT MATERIALIZED (subquery)` — Postgres (Lucid/Knex `withNotMaterialized`). */
290
+ withNotMaterialized(name: string, sub: SubqueryArg): this;
291
+ /**
292
+ * A deep copy of this builder — every accumulated clause is duplicated so
293
+ * mutating the clone never touches the original (Lucid/Knex `clone`). Shares
294
+ * only the executor + dialect.
295
+ */
296
+ clone(): DatabaseQueryBuilder<T>;
297
+ /** Qualify the table with a schema (Lucid/Knex `withSchema`). */
298
+ withSchema(schema: string): this;
299
+ /**
300
+ * Wrap every WHERE clause added so far into its own parenthesised group, so
301
+ * subsequent clauses combine with the group rather than its inner conditions
302
+ * (Lucid `wrapExisting`): `q.where(a).orWhere(b).wrapExisting().where(c)` →
303
+ * `WHERE (a OR b) AND c`.
304
+ */
305
+ wrapExisting(): this;
306
+ /** Log the compiled SQL + bindings to the console on the next run (Lucid/Knex `debug`). */
307
+ debug(enabled?: boolean): this;
308
+ /**
309
+ * Set a caller-facing statement timeout in ms (Lucid `timeout(ms)`). The
310
+ * awaiting promise rejects after `ms` on the read paths (exec/first/pluck/
311
+ * aggregate). With `{ cancel: true }` a SERVER-side statement timeout is also
312
+ * applied — Postgres `statement_timeout`, MySQL `MAX_EXECUTION_TIME` (SELECT) —
313
+ * so the server aborts the query, not just the client. (SQLite has no server
314
+ * timeout; the client race applies.) No argument clears the timeout.
315
+ */
316
+ timeout(ms?: number, options?: {
317
+ cancel?: boolean;
318
+ }): this;
319
+ /** Prepend a `/* … *​/` SQL comment to the compiled query (Lucid/Knex `comment`). */
320
+ comment(text: string): this;
321
+ /**
322
+ * Attach arbitrary metadata to the `db:query` event this query emits (Adonis
323
+ * Lucid `reporterData`) — a listener reads it off `event.reporterData`.
324
+ * Repeated calls merge; setting it forces emission so the data reaches a
325
+ * listener even when the connection has `debug: false`.
326
+ */
327
+ reporterData(data: Record<string, unknown>): this;
328
+ /**
329
+ * SELECT DISTINCT (Lucid/Knex `distinct`). With columns, those are added to
330
+ * the SELECT list too — `distinct('a', 'b')` ≈ `SELECT DISTINCT a, b`.
331
+ */
332
+ distinct(...columns: string[]): this;
333
+ /** Postgres `SELECT DISTINCT ON (cols)` (Lucid/Knex `distinctOn`). */
334
+ distinctOn(...columns: string[]): this;
335
+ /** GROUP BY columns (Lucid/Knex `groupBy`). */
336
+ groupBy(...columns: string[]): this;
337
+ /** HAVING condition after GROUP BY (Lucid/Knex `having`). */
338
+ having(column: string, operatorOrValue: WhereOperator | unknown, value?: unknown): this;
339
+ /** OR-combined HAVING condition (Lucid/Knex `orHaving`). */
340
+ orHaving(column: string, operatorOrValue: WhereOperator | unknown, value?: unknown): this;
341
+ /** HAVING col IS NULL (Lucid/Knex `havingNull`). */
342
+ havingNull(column: string): this;
343
+ /** HAVING col IS NOT NULL (Lucid/Knex `havingNotNull`). */
344
+ havingNotNull(column: string): this;
345
+ /** HAVING col IN (...) (Lucid/Knex `havingIn`). */
346
+ havingIn(column: string, values: unknown[]): this;
347
+ /** HAVING col NOT IN (...) (Lucid/Knex `havingNotIn`). */
348
+ havingNotIn(column: string, values: unknown[]): this;
349
+ /** HAVING col BETWEEN ? AND ? (Lucid/Knex `havingBetween`). */
350
+ havingBetween(column: string, range: readonly [unknown, unknown]): this;
351
+ /** HAVING col NOT BETWEEN ? AND ? (Lucid/Knex `havingNotBetween`). */
352
+ havingNotBetween(column: string, range: readonly [unknown, unknown]): this;
353
+ /**
354
+ * WHERE col IN (…) — a value list, a subquery, OR a multi-column tuple
355
+ * (Lucid/Knex `whereIn`): `whereIn('id', [1,2])`, `whereIn('id', subquery)`,
356
+ * `whereIn(['a','b'], [[1,2],[3,4]])`.
357
+ */
358
+ whereIn(column: string, values: unknown[]): this;
359
+ whereIn(column: string, subquery: SubqueryArg): this;
360
+ whereIn(columns: string[], rows: unknown[][]): this;
361
+ whereNull(column: string): this;
362
+ whereNotNull(column: string): this;
363
+ /** Alias of {@link whereIn} (Lucid `andWhereIn`). */
364
+ andWhereIn(column: string, values: unknown[]): this;
365
+ andWhereIn(column: string, subquery: SubqueryArg): this;
366
+ andWhereIn(columns: string[], rows: unknown[][]): this;
367
+ /** Alias of {@link whereNotIn} (Lucid `andWhereNotIn`). */
368
+ andWhereNotIn(column: string, values: unknown[]): this;
369
+ andWhereNotIn(column: string, subquery: SubqueryArg): this;
370
+ andWhereNotIn(columns: string[], rows: unknown[][]): this;
371
+ /** Alias of {@link whereNull} (Lucid `andWhereNull`). */
372
+ andWhereNull(column: string): this;
373
+ /** Alias of {@link whereNotNull} (Lucid `andWhereNotNull`). */
374
+ andWhereNotNull(column: string): this;
375
+ /** Alias of {@link whereBetween} (Lucid `andWhereBetween`). */
376
+ andWhereBetween(column: string, range: readonly [unknown, unknown]): this;
377
+ /** Alias of {@link whereNotBetween} (Lucid `andWhereNotBetween`). */
378
+ andWhereNotBetween(column: string, range: readonly [unknown, unknown]): this;
379
+ /**
380
+ * Negated WHERE (Lucid/Knex `whereNot`) — the same forms as {@link where}: a
381
+ * `(column, [operator,] value)` comparison, an object (`whereNot({ a: 1 })` →
382
+ * `a <> 1`), or a callback group (`whereNot((q) => …)` → `NOT (…)`).
383
+ */
384
+ whereNot(callback: (query: DatabaseQueryBuilder) => void): this;
385
+ whereNot(conditions: Record<string, unknown>): this;
386
+ whereNot(column: string, value: unknown): this;
387
+ whereNot(column: string, operator: WhereOperator, value: unknown): this;
388
+ /** Alias of {@link whereNot} — AND is the default (Lucid `andWhereNot`). */
389
+ andWhereNot(callback: (query: DatabaseQueryBuilder) => void): this;
390
+ andWhereNot(conditions: Record<string, unknown>): this;
391
+ andWhereNot(column: string, value: unknown): this;
392
+ andWhereNot(column: string, operator: WhereOperator, value: unknown): this;
393
+ /** OR form of {@link whereNot} (Lucid/Knex `orWhereNot`). Same argument forms. */
394
+ orWhereNot(callback: (query: DatabaseQueryBuilder) => void): this;
395
+ orWhereNot(conditions: Record<string, unknown>): this;
396
+ orWhereNot(column: string, value: unknown): this;
397
+ orWhereNot(column: string, operator: WhereOperator, value: unknown): this;
398
+ /** OR col IN (...) (Lucid/Knex `orWhereIn`). */
399
+ orWhereIn(column: string, values: unknown[]): this;
400
+ orWhereIn(column: string, subquery: SubqueryArg): this;
401
+ /** OR col NOT IN (...) (Lucid/Knex `orWhereNotIn`). */
402
+ orWhereNotIn(column: string, values: unknown[]): this;
403
+ /** OR col IS NULL (Lucid/Knex `orWhereNull`). */
404
+ orWhereNull(column: string): this;
405
+ /** OR col IS NOT NULL (Lucid/Knex `orWhereNotNull`). */
406
+ orWhereNotNull(column: string): this;
407
+ /** OR col BETWEEN ? AND ? (Lucid/Knex `orWhereBetween`). */
408
+ orWhereBetween(column: string, range: readonly [unknown, unknown]): this;
409
+ /** OR col NOT BETWEEN ? AND ? (Lucid/Knex `orWhereNotBetween`). */
410
+ orWhereNotBetween(column: string, range: readonly [unknown, unknown]): this;
411
+ /** OR col LIKE ? (Lucid/Knex `orWhereLike`). */
412
+ orWhereLike(column: string, pattern: string): this;
413
+ /** OR col ILIKE ? (Lucid/Knex `orWhereILike`). */
414
+ orWhereILike(column: string, pattern: string): this;
415
+ /** A raw JOIN fragment with `?` bindings (Lucid/Knex `joinRaw`). */
416
+ joinRaw(sql: string, bindings?: unknown[]): this;
417
+ /** `FOR UPDATE` row lock (Lucid/Knex `forUpdate`). Dropped on SQLite. */
418
+ forUpdate(): this;
419
+ /** `FOR SHARE` row lock (Lucid/Knex `forShare`). Dropped on SQLite. */
420
+ forShare(): this;
421
+ /** Postgres `FOR NO KEY UPDATE` — weaker lock that doesn't block FK checks (Lucid/Knex). */
422
+ forNoKeyUpdate(): this;
423
+ /** Postgres `FOR KEY SHARE` — the weakest share lock (Lucid/Knex). */
424
+ forKeyShare(): this;
425
+ /** Append `SKIP LOCKED` — skip locked rows instead of waiting (Lucid/Knex). */
426
+ skipLocked(): this;
427
+ /** Append `NOWAIT` — error immediately on a locked row (Lucid/Knex). */
428
+ noWait(): this;
429
+ /** Apply `cb` only when `condition` is truthy, else `elseCb` (Lucid `if`). */
430
+ if(condition: unknown, cb: (query: this) => void, elseCb?: (query: this) => void): this;
431
+ /** Inverse of {@link if} — apply `cb` only when `condition` is falsy (Lucid `unless`). */
432
+ unless(condition: unknown, cb: (query: this) => void, elseCb?: (query: this) => void): this;
433
+ /** Apply the first `[guard, cb]` whose guard is truthy; a trailing bare cb is
434
+ * the default (Adonis Lucid `match`). */
435
+ match(...blocks: Array<[unknown, (query: this) => void] | ((query: this) => void)>): this;
436
+ /** ORDER BY a column, a `db.ref()` fragment, or an array of terms (Lucid/Knex `orderBy`). */
437
+ orderBy(column: string | RawSql, direction?: "asc" | "desc"): this;
438
+ orderBy(terms: Array<string | {
439
+ column: string;
440
+ order?: "asc" | "desc";
441
+ }>): this;
442
+ limit(n: number): this;
443
+ offset(n: number): this;
444
+ /** LIMIT/OFFSET for a 1-based page (Lucid/Knex `forPage`). */
445
+ forPage(page: number, perPage?: number): this;
446
+ /**
447
+ * The compiled SELECT WITHOUT executing (Lucid `toSQL`). `.sql` uses `?`
448
+ * placeholders (Knex-normalized, like Lucid); `.toNative()` yields the native
449
+ * form. Returns both `bindings` (Lucid's name) and `params` (atlas's) — same
450
+ * array, so either name ports.
451
+ */
452
+ toSQL(): CompiledStatement;
453
+ /** Apply `cb` only on the given dialect(s) (Lucid `ifDialect`; Lucid names accepted). */
454
+ ifDialect(dialect: DialectName | DialectName[], cb: (query: this) => void): this;
455
+ /** Apply `cb` on every dialect EXCEPT the given one(s) (Lucid `unlessDialect`). */
456
+ unlessDialect(dialect: DialectName | DialectName[], cb: (query: this) => void): this;
457
+ /** Run the SELECT and return every row. */
458
+ exec(): Promise<T[]>;
459
+ /** Run the SELECT and return the first row (Lucid `first`), or `null`. */
460
+ first(): Promise<T | null>;
461
+ /** {@link first} but throws when no row matches (Lucid `firstOrFail`). */
462
+ firstOrFail(): Promise<T>;
463
+ /** Return a single column's values across the result set (Lucid/Knex `pluck`). */
464
+ pluck(column: string): Promise<unknown[]>;
465
+ /** SQL with bindings substituted as literals, for inspection (Lucid `toQuery`). */
466
+ toQuery(): string;
467
+ /** `{ sql, bindings }` — the compiled native query (Lucid `toNative`). */
468
+ toNative(): {
469
+ sql: string;
470
+ bindings: unknown[];
471
+ };
472
+ /**
473
+ * COUNT — terminal scalar with no argument (atlas DX: `await q.count()` → n),
474
+ * or a chainable projection with an aliased expression (Lucid/Knex:
475
+ * `q.count('* as total').groupBy(...)`).
476
+ */
477
+ count(): Promise<number>;
478
+ count(aliasExpr: `${string} as ${string}`): this;
479
+ /** SUM — terminal scalar (`sum('amount')`) or chainable projection (`sum('amount as total')`). */
480
+ sum(aliasExpr: `${string} as ${string}`): this;
481
+ sum(column: string): Promise<number>;
482
+ /** AVG — terminal scalar or chainable projection (Lucid/Knex `avg`). */
483
+ avg(aliasExpr: `${string} as ${string}`): this;
484
+ avg(column: string): Promise<number>;
485
+ /** MIN — terminal scalar or chainable projection (Lucid/Knex `min`). */
486
+ min(aliasExpr: `${string} as ${string}`): this;
487
+ min(column: string): Promise<number>;
488
+ /** MAX — terminal scalar or chainable projection (Lucid/Knex `max`). */
489
+ max(aliasExpr: `${string} as ${string}`): this;
490
+ max(column: string): Promise<number>;
491
+ /** COUNT(DISTINCT column) (Lucid/Knex `countDistinct`). */
492
+ countDistinct(column: string): Promise<number>;
493
+ /** SUM(DISTINCT column) (Lucid/Knex `sumDistinct`). */
494
+ sumDistinct(column: string): Promise<number>;
495
+ /** AVG(DISTINCT column) (Lucid/Knex `avgDistinct`). */
496
+ avgDistinct(column: string): Promise<number>;
497
+ /**
498
+ * Columns to return from a subsequent insert/update/delete (Lucid `returning`).
499
+ * Accepts spread names, an array, or `'*'` — `returning('id')`,
500
+ * `returning(['id', 'created_at'])`, `returning('*')`.
501
+ */
502
+ returning(...columns: Array<string | string[]>): this;
503
+ /**
504
+ * Conflict target for an upsert (Lucid/Knex `onConflict`). Accepts spread
505
+ * names, an array, or no argument (any unique constraint) —
506
+ * `onConflict('email')`, `onConflict(['email', 'tenant_id'])`, `onConflict()`.
507
+ */
508
+ onConflict(...columns: Array<string | string[]>): this;
509
+ /**
510
+ * On conflict, UPDATE columns (Lucid/Knex `merge`). No argument updates every
511
+ * insert column; spread names or an array update only those; an object sets
512
+ * custom values (scalars or `db.raw(...)` expressions) —
513
+ * `merge()`, `merge(['a', 'b'])`, `merge({ login_count: db.raw('users.login_count + 1') })`.
514
+ */
515
+ merge(...args: Array<string | string[] | Record<string, unknown>>): this;
516
+ /** On conflict, do nothing (Lucid/Knex `onConflict(...).ignore()`). */
517
+ ignore(): this;
518
+ /**
519
+ * Insert one row (Lucid `db.table(t).insert(data)`). Lazy + chainable: the
520
+ * statement runs on `await`/`.exec()`, so `insert(data).onConflict(...).merge()`,
521
+ * `insert(data).returning(...)` and `insert(data).toSQL()` all work. Resolves to
522
+ * the RETURNING rows, or `[insertId]` (MySQL/SQLite) / `[]` otherwise.
523
+ */
524
+ insert(data: Record<string, unknown>): DmlBuilder<Array<Record<string, unknown> | number>>;
525
+ /** Insert many rows in one statement (Lucid/Knex `multiInsert`). Lazy + chainable. */
526
+ multiInsert(rows: Array<Record<string, unknown>>): DmlBuilder<Array<Record<string, unknown> | number>>;
527
+ /**
528
+ * Update rows matching the current WHERE (Lucid/Knex `update`). Lazy + chainable
529
+ * (`update(data).returning(...)`, `.toSQL()`). Accepts a `{ col: value }` map OR
530
+ * a `(column, value)` pair; a value may be a `db.raw(...)` expression. Resolves to
531
+ * the affected count, or the RETURNING rows when {@link returning} is set.
532
+ */
533
+ update(column: string, value: unknown): DmlBuilder<number | Record<string, unknown>[]>;
534
+ update(data: Record<string, unknown>): DmlBuilder<number | Record<string, unknown>[]>;
535
+ /** Delete rows matching the current WHERE (Lucid `delete`). Lazy + chainable. */
536
+ delete(): DmlBuilder<number | Record<string, unknown>[]>;
537
+ /** Alias of {@link delete} (Lucid/Knex `del`). */
538
+ del(): DmlBuilder<number | Record<string, unknown>[]>;
539
+ /**
540
+ * Atomically add to a column (or a `{col: amount}` map) — `SET col = col + ?`,
541
+ * never read-modify-write (Lucid/Knex `increment`). Returns affected count.
542
+ */
543
+ increment(column: string, amount?: number): Promise<number>;
544
+ increment(patch: Record<string, number>): Promise<number>;
545
+ /** Atomically subtract from a column (Lucid/Knex `decrement`). */
546
+ decrement(column: string, amount?: number): Promise<number>;
547
+ decrement(patch: Record<string, number>): Promise<number>;
548
+ /**
549
+ * Offset paginate the current query (Lucid/Knex `paginate`). Runs a COUNT over
550
+ * the WHERE, then the page slice, and returns a {@link Paginator}.
551
+ */
552
+ paginate(page: number, perPage?: number): Promise<Paginator<T>>;
553
+ /** Thenable, so `await db.from('users').where(...)` resolves to the rows. */
554
+ then<R1 = T[], R2 = never>(onfulfilled?: ((value: T[]) => R1 | PromiseLike<R1>) | null, onrejected?: ((reason: unknown) => R2 | PromiseLike<R2>) | null): Promise<R1 | R2>;
555
+ }
556
+ export {};
557
+ //# sourceMappingURL=DatabaseQueryBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatabaseQueryBuilder.d.ts","sourceRoot":"","sources":["../../src/query/DatabaseQueryBuilder.ts"],"names":[],"mappings":"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"}