@remix-run/data-table 0.2.1 → 0.4.0

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 (113) hide show
  1. package/README.md +251 -123
  2. package/dist/cli.d.ts +54 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +53 -0
  5. package/dist/index.d.ts +5 -4
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +7 -7
  8. package/dist/lib/column.d.ts +1 -1
  9. package/dist/lib/column.d.ts.map +1 -1
  10. package/dist/lib/column.js +10 -1
  11. package/dist/lib/database/execution-context.d.ts +5 -5
  12. package/dist/lib/database/execution-context.d.ts.map +1 -1
  13. package/dist/lib/database/execution-context.js +1 -0
  14. package/dist/lib/database/helpers.js +6 -6
  15. package/dist/lib/database/query-execution.d.ts.map +1 -1
  16. package/dist/lib/database/query-execution.js +17 -17
  17. package/dist/lib/database/relations.js +5 -5
  18. package/dist/lib/database/write-lifecycle.d.ts +2 -2
  19. package/dist/lib/database/write-lifecycle.d.ts.map +1 -1
  20. package/dist/lib/database/write-lifecycle.js +5 -5
  21. package/dist/lib/database.d.ts +74 -59
  22. package/dist/lib/database.d.ts.map +1 -1
  23. package/dist/lib/database.js +176 -83
  24. package/dist/lib/driver.d.ts +287 -0
  25. package/dist/lib/driver.d.ts.map +1 -0
  26. package/dist/lib/errors.d.ts +2 -2
  27. package/dist/lib/errors.d.ts.map +1 -1
  28. package/dist/lib/errors.js +4 -4
  29. package/dist/lib/migrations/directive.d.ts +12 -0
  30. package/dist/lib/migrations/directive.d.ts.map +1 -0
  31. package/dist/lib/migrations/directive.js +28 -0
  32. package/dist/lib/migrations/directory-name.d.ts +12 -0
  33. package/dist/lib/migrations/directory-name.d.ts.map +1 -0
  34. package/dist/lib/migrations/directory-name.js +18 -0
  35. package/dist/lib/migrations/journal-store.d.ts +7 -7
  36. package/dist/lib/migrations/journal-store.d.ts.map +1 -1
  37. package/dist/lib/migrations/journal-store.js +37 -28
  38. package/dist/lib/migrations/registry.d.ts +1 -1
  39. package/dist/lib/migrations/registry.js +1 -1
  40. package/dist/lib/migrations/runner.d.ts +12 -19
  41. package/dist/lib/migrations/runner.d.ts.map +1 -1
  42. package/dist/lib/migrations/runner.js +170 -175
  43. package/dist/lib/migrations-node.d.ts +26 -5
  44. package/dist/lib/migrations-node.d.ts.map +1 -1
  45. package/dist/lib/migrations-node.js +73 -41
  46. package/dist/lib/migrations.d.ts +63 -209
  47. package/dist/lib/migrations.d.ts.map +1 -1
  48. package/dist/lib/migrations.js +1 -38
  49. package/dist/lib/operators.d.ts +1 -1
  50. package/dist/lib/operators.js +1 -1
  51. package/dist/lib/query.d.ts +34 -1
  52. package/dist/lib/query.d.ts.map +1 -1
  53. package/dist/lib/query.js +32 -4
  54. package/dist/lib/sql-helpers.d.ts +1 -7
  55. package/dist/lib/sql-helpers.d.ts.map +1 -1
  56. package/dist/lib/sql-helpers.js +0 -16
  57. package/dist/lib/sql.d.ts +1 -1
  58. package/dist/lib/sql.js +1 -1
  59. package/dist/lib/table.d.ts +1 -1
  60. package/dist/lib/table.d.ts.map +1 -1
  61. package/dist/lib/table.js +5 -5
  62. package/dist/migrations/node.d.ts +1 -1
  63. package/dist/migrations/node.d.ts.map +1 -1
  64. package/dist/migrations/node.js +1 -1
  65. package/dist/migrations.d.ts +2 -6
  66. package/dist/migrations.d.ts.map +1 -1
  67. package/dist/migrations.js +2 -5
  68. package/dist/operators.js +1 -1
  69. package/dist/sql-helpers.d.ts +1 -1
  70. package/dist/sql-helpers.d.ts.map +1 -1
  71. package/dist/sql-helpers.js +1 -1
  72. package/package.json +13 -9
  73. package/src/cli.ts +120 -0
  74. package/src/index.ts +20 -54
  75. package/src/lib/column.ts +14 -2
  76. package/src/lib/database/execution-context.ts +10 -6
  77. package/src/lib/database/helpers.ts +1 -1
  78. package/src/lib/database/query-execution.ts +15 -11
  79. package/src/lib/database/write-lifecycle.ts +4 -4
  80. package/src/lib/database.ts +223 -96
  81. package/src/lib/driver.ts +333 -0
  82. package/src/lib/errors.ts +4 -4
  83. package/src/lib/migrations/directive.ts +38 -0
  84. package/src/lib/migrations/directory-name.ts +23 -0
  85. package/src/lib/migrations/journal-store.ts +42 -28
  86. package/src/lib/migrations/registry.ts +1 -1
  87. package/src/lib/migrations/runner.ts +224 -205
  88. package/src/lib/migrations-node.ts +80 -38
  89. package/src/lib/migrations.ts +62 -228
  90. package/src/lib/operators.ts +1 -1
  91. package/src/lib/query.ts +34 -1
  92. package/src/lib/sql-helpers.ts +1 -22
  93. package/src/lib/sql.ts +1 -1
  94. package/src/lib/table.ts +1 -1
  95. package/src/migrations/node.ts +1 -1
  96. package/src/migrations.ts +5 -16
  97. package/src/sql-helpers.ts +0 -1
  98. package/dist/lib/adapter.d.ts +0 -550
  99. package/dist/lib/adapter.d.ts.map +0 -1
  100. package/dist/lib/migrations/filename.d.ts +0 -12
  101. package/dist/lib/migrations/filename.d.ts.map +0 -1
  102. package/dist/lib/migrations/filename.js +0 -20
  103. package/dist/lib/migrations/helpers.d.ts +0 -11
  104. package/dist/lib/migrations/helpers.d.ts.map +0 -1
  105. package/dist/lib/migrations/helpers.js +0 -77
  106. package/dist/lib/migrations/schema-api.d.ts +0 -7
  107. package/dist/lib/migrations/schema-api.d.ts.map +0 -1
  108. package/dist/lib/migrations/schema-api.js +0 -326
  109. package/src/lib/adapter.ts +0 -653
  110. package/src/lib/migrations/filename.ts +0 -25
  111. package/src/lib/migrations/helpers.ts +0 -108
  112. package/src/lib/migrations/schema-api.ts +0 -417
  113. /package/dist/lib/{adapter.js → driver.js} +0 -0
@@ -1,35 +1,145 @@
1
- import { DataTableAdapterError, DataTableQueryError } from "./errors.js";
2
- import { executeOperation } from "./database/execution-context.js";
3
- import { asQueryTableInput, getPrimaryKeyWhere, getPrimaryKeyWhereFromRow, normalizeOrderByInput, resolveCreateRowWhere, toWriteResult, } from "./database/helpers.js";
4
- import { executeQuery } from "./database/query-execution.js";
5
- import { bindQueryRuntime, query as createQuery } from "./query.js";
6
- import { isSqlStatement, rawSql } from "./sql.js";
7
- import { getTableName } from "./table.js";
8
- const createInternalDatabase = Symbol('createInternalDatabase');
1
+ import { DataTableDatabaseError, DataTableQueryError } from './errors.js';
2
+ import { executeOperation, runInTransaction, } from './database/execution-context.js';
3
+ import { asQueryTableInput, getPrimaryKeyWhere, getPrimaryKeyWhereFromRow, normalizeOrderByInput, resolveCreateRowWhere, toWriteResult, } from './database/helpers.js';
4
+ import { executeQuery } from './database/query-execution.js';
5
+ import { bindQueryRuntime, query as createQuery } from './query.js';
6
+ import { createMigrationRunner } from './migrations/runner.js';
7
+ import { isSqlStatement, rawSql } from './sql.js';
8
+ import { getTableName } from './table.js';
9
9
  /**
10
- * High-level database runtime used to build and execute data manipulation operations.
10
+ * High-level database runtime used to query and manage a database.
11
11
  *
12
- * Create instances directly with `new Database(adapter, options)` or use
13
- * `createDatabase(adapter, options)` as a thin wrapper.
12
+ * Database dialects extend this class and provide a {@link DatabaseDriver} to the constructor.
13
+ * The driver owns SQL execution, transactions, and connection lifecycle while this class provides
14
+ * the shared query, persistence, and migration APIs.
14
15
  */
15
16
  export class Database {
16
- #adapter;
17
+ #driver;
18
+ #executionContext;
17
19
  #token;
18
20
  #now;
19
21
  #savepointCounter;
20
- constructor(adapter, options) {
21
- this.#adapter = adapter;
22
+ /**
23
+ * Creates a database backed by a driver.
24
+ * @param driver Low-level database engine integration.
25
+ * @param options Database runtime options.
26
+ */
27
+ constructor(driver, options) {
28
+ this.#driver = driver;
22
29
  this.#now = options?.now ?? defaultNow;
23
30
  this.#savepointCounter = { value: 0 };
31
+ let database = this;
32
+ this.#executionContext = {
33
+ get capabilities() {
34
+ return database.capabilities;
35
+ },
36
+ now() {
37
+ return database.now();
38
+ },
39
+ [executeOperation](operation) {
40
+ return database.#executeOperation(operation);
41
+ },
42
+ [runInTransaction](callback, transactionOptions) {
43
+ return database.#runInTransaction((transactionDatabase) => callback(transactionDatabase.#executionContext), transactionOptions);
44
+ },
45
+ };
24
46
  }
25
- static [createInternalDatabase](adapter, options, internal) {
26
- let database = new Database(adapter, options);
47
+ static #createInternalDatabase(driver, options, internal) {
48
+ let database = new Database(driver, options);
27
49
  database.#token = internal.token;
28
50
  database.#savepointCounter = internal.savepointCounter;
29
51
  return database;
30
52
  }
31
- get adapter() {
32
- return this.#adapter;
53
+ /** Stable identifier for the SQL dialect. */
54
+ get dialect() {
55
+ return this.#driver.dialect;
56
+ }
57
+ /** Immutable feature flags used by shared query and migration behavior. */
58
+ get capabilities() {
59
+ return this.#driver.capabilities;
60
+ }
61
+ /**
62
+ * Executes a migration or raw multi-statement SQL script.
63
+ * @param sql SQL script to execute.
64
+ * @returns A promise that resolves when execution completes.
65
+ */
66
+ executeScript(sql) {
67
+ return this.#driver.executeScript(sql, this.#token);
68
+ }
69
+ /**
70
+ * Reports whether a table exists.
71
+ * @param table Table to inspect.
72
+ * @returns A promise that resolves to `true` when the table exists.
73
+ */
74
+ hasTable(table) {
75
+ return this.#driver.hasTable(table, this.#token);
76
+ }
77
+ /**
78
+ * Reports whether a column exists on a table.
79
+ * @param table Table to inspect.
80
+ * @param column Column name to inspect.
81
+ * @returns A promise that resolves to `true` when the column exists.
82
+ */
83
+ hasColumn(table, column) {
84
+ return this.#driver.hasColumn(table, column, this.#token);
85
+ }
86
+ /**
87
+ * Closes resources owned by this database.
88
+ * @returns A promise that resolves when owned resources have been released.
89
+ */
90
+ async close() {
91
+ this.#assertLifecycleOperationAllowed('close');
92
+ await this.#driver.close();
93
+ }
94
+ /**
95
+ * Destructively recreates the configured database.
96
+ * @returns A promise that resolves when the database is ready for use.
97
+ */
98
+ async wipe() {
99
+ this.#assertLifecycleOperationAllowed('wipe');
100
+ await this.#driver.wipe();
101
+ }
102
+ /**
103
+ * Applies or reverts migrations in order.
104
+ *
105
+ * @param migrations Migration descriptors or registry to apply.
106
+ * @param options Migration direction, bound, dry-run, and journal configuration.
107
+ * @returns The migrations applied or reverted by this run and their SQL scripts.
108
+ */
109
+ async migrate(migrations, options) {
110
+ this.#assertLifecycleOperationAllowed('migrate');
111
+ let { direction = 'up', journalTable, ...migrateOptions } = options ?? {};
112
+ let runner = createMigrationRunner(this.#driver, migrations, { journalTable });
113
+ return direction === 'up' ? runner.up(migrateOptions) : runner.down(migrateOptions);
114
+ }
115
+ /**
116
+ * Reports the current state of the provided migrations.
117
+ *
118
+ * @param migrations Migration descriptors or registry to inspect.
119
+ * @param options Migration journal configuration.
120
+ * @returns Status entries for the provided migrations.
121
+ */
122
+ async migrationStatus(migrations, options = {}) {
123
+ this.#assertLifecycleOperationAllowed('migrationStatus');
124
+ let runner = createMigrationRunner(this.#driver, migrations, options);
125
+ return runner.status();
126
+ }
127
+ /**
128
+ * Wipes the database, applies migrations, and optionally seeds data.
129
+ *
130
+ * @param options Migrations and optional seed function used to rebuild the database.
131
+ * @returns A promise that resolves when the database has been rebuilt.
132
+ */
133
+ async reset(options) {
134
+ this.#assertLifecycleOperationAllowed('reset');
135
+ await this.wipe();
136
+ await this.migrate(options.migrations, { journalTable: options.journalTable });
137
+ await options.seed?.(this);
138
+ }
139
+ #assertLifecycleOperationAllowed(method) {
140
+ if (this.#token) {
141
+ throw new DataTableQueryError('Cannot call ' + method + '() from a transaction-scoped database');
142
+ }
33
143
  }
34
144
  now() {
35
145
  return this.#now();
@@ -44,7 +154,7 @@ export class Database {
44
154
  let result = await query.insert(values, { touch });
45
155
  return toWriteResult(result);
46
156
  }
47
- if (this.#adapter.capabilities.returning) {
157
+ if (this.capabilities.returning) {
48
158
  let result = (await query.insert(values, {
49
159
  returning: '*',
50
160
  touch,
@@ -80,8 +190,8 @@ export class Database {
80
190
  async createMany(table, values, options) {
81
191
  let query = this.query(asQueryTableInput(table));
82
192
  if (options?.returnRows === true) {
83
- if (!this.#adapter.capabilities.returning) {
84
- throw new DataTableQueryError('createMany({ returnRows: true }) is not supported by this adapter');
193
+ if (!this.capabilities.returning) {
194
+ throw new DataTableQueryError('createMany({ returnRows: true }) is not supported by this database');
85
195
  }
86
196
  let result = (await query.insertMany(values, {
87
197
  returning: '*',
@@ -144,7 +254,7 @@ export class Database {
144
254
  }
145
255
  async update(table, value, changes, options) {
146
256
  let where = getPrimaryKeyWhere(table, value);
147
- if (this.#adapter.capabilities.returning) {
257
+ if (this.capabilities.returning) {
148
258
  let updateResult = (await this.query(asQueryTableInput(table)).where(where).update(changes, {
149
259
  touch: options?.touch,
150
260
  returning: '*',
@@ -214,106 +324,89 @@ export class Database {
214
324
  let sqlStatement = isSqlStatement(statementOrInput)
215
325
  ? statementOrInput
216
326
  : rawSql(statementOrInput, values);
217
- return this[executeOperation]({
327
+ return this.#executeOperation({
218
328
  kind: 'raw',
219
329
  sql: sqlStatement,
220
330
  });
221
331
  }
222
- return executeQuery(this, statementOrInput);
332
+ return executeQuery(this.#executionContext, statementOrInput);
223
333
  }
224
334
  async transaction(callback, options) {
335
+ return this.#runInTransaction(callback, options);
336
+ }
337
+ async #runInTransaction(callback, options) {
225
338
  if (!this.#token) {
226
- let token = await this.#adapter.beginTransaction(options);
227
- let tx = Database[createInternalDatabase](this.#adapter, { now: this.#now }, {
339
+ let token = await this.#driver.beginTransaction(options);
340
+ let tx = Database.#createInternalDatabase(this.#driver, { now: this.#now }, {
228
341
  token,
229
342
  savepointCounter: this.#savepointCounter,
230
343
  });
344
+ let result;
231
345
  try {
232
- let result = await callback(tx);
233
- await this.#adapter.commitTransaction(token);
234
- return result;
346
+ result = await callback(tx);
235
347
  }
236
348
  catch (error) {
237
- await this.#adapter.rollbackTransaction(token);
349
+ try {
350
+ await this.#driver.rollbackTransaction(token);
351
+ }
352
+ catch (rollbackError) {
353
+ throw new AggregateError([error, rollbackError], 'Database transaction and rollback both failed', { cause: error });
354
+ }
238
355
  throw error;
239
356
  }
357
+ await this.#driver.commitTransaction(token);
358
+ return result;
240
359
  }
241
- if (!this.#adapter.capabilities.savepoints) {
242
- throw new DataTableQueryError('Nested transactions require adapter savepoint support');
360
+ if (!this.capabilities.savepoints) {
361
+ throw new DataTableQueryError('Nested transactions require database savepoint support');
243
362
  }
244
363
  let savepointName = 'sp_' + String(this.#savepointCounter.value);
245
364
  this.#savepointCounter.value += 1;
246
- await this.#adapter.createSavepoint(this.#token, savepointName);
365
+ await this.#driver.createSavepoint(this.#token, savepointName);
366
+ let result;
247
367
  try {
248
- let result = await callback(this);
249
- await this.#adapter.releaseSavepoint(this.#token, savepointName);
250
- return result;
368
+ result = await callback(this);
251
369
  }
252
370
  catch (error) {
253
- await this.#adapter.rollbackToSavepoint(this.#token, savepointName);
254
- await this.#adapter.releaseSavepoint(this.#token, savepointName);
371
+ let failures = [error];
372
+ try {
373
+ await this.#driver.rollbackToSavepoint(this.#token, savepointName);
374
+ }
375
+ catch (rollbackError) {
376
+ failures.push(rollbackError);
377
+ }
378
+ try {
379
+ await this.#driver.releaseSavepoint(this.#token, savepointName);
380
+ }
381
+ catch (releaseError) {
382
+ failures.push(releaseError);
383
+ }
384
+ if (failures.length > 1) {
385
+ throw new AggregateError(failures, 'Nested transaction cleanup failed', { cause: error });
386
+ }
255
387
  throw error;
256
388
  }
389
+ await this.#driver.releaseSavepoint(this.#token, savepointName);
390
+ return result;
257
391
  }
258
- async [executeOperation](operation) {
392
+ async #executeOperation(operation) {
259
393
  try {
260
- return await this.#adapter.execute({
394
+ return await this.#driver.execute({
261
395
  operation,
262
396
  transaction: this.#token,
263
397
  });
264
398
  }
265
399
  catch (error) {
266
- throw new DataTableAdapterError('Adapter execution failed', {
400
+ throw new DataTableDatabaseError('Database execution failed', {
267
401
  cause: error,
268
402
  metadata: {
269
- dialect: this.#adapter.dialect,
403
+ dialect: this.dialect,
270
404
  operationKind: operation.kind,
271
405
  },
272
406
  });
273
407
  }
274
408
  }
275
409
  }
276
- /**
277
- * Creates a database runtime from an adapter.
278
- * Thin wrapper around `new Database(adapter, options)`.
279
- * @param adapter Adapter implementation responsible for SQL execution.
280
- * @param options Optional runtime options.
281
- * @param options.now Clock function used for auto-managed timestamps.
282
- * @returns A {@link Database} API instance.
283
- * @example
284
- * ```ts
285
- * import { column as c, createDatabase, table } from 'remix/data-table'
286
- *
287
- * let users = table({
288
- * name: 'users',
289
- * columns: {
290
- * id: c.integer(),
291
- * email: c.varchar(255),
292
- * },
293
- * })
294
- *
295
- * let db = createDatabase(adapter)
296
- * let rows = await db.query(users).where({ id: 1 }).all()
297
- * ```
298
- */
299
- export function createDatabase(adapter, options) {
300
- return new Database(adapter, options);
301
- }
302
- /**
303
- * Creates a database runtime bound to an existing adapter transaction token.
304
- * This is an internal helper used by the migration runner.
305
- * @param adapter Adapter implementation responsible for SQL execution.
306
- * @param token Active adapter transaction token.
307
- * @param options Optional runtime options.
308
- * @param options.now Clock function used for auto-managed timestamps.
309
- * @returns A {@link Database} API instance bound to the provided transaction.
310
- */
311
- export function createDatabaseWithTransaction(adapter, token, options) {
312
- return Database[createInternalDatabase](adapter, options, {
313
- token,
314
- savepointCounter: { value: 0 },
315
- });
316
- }
317
410
  function defaultNow() {
318
411
  return new Date();
319
412
  }
@@ -0,0 +1,287 @@
1
+ import type { AnyTable, OrderByClause } from './table.ts';
2
+ import type { Predicate } from './operators.ts';
3
+ import type { SqlStatement } from './sql.ts';
4
+ /**
5
+ * SQL join kinds supported by database drivers.
6
+ */
7
+ export type JoinType = 'inner' | 'left' | 'right';
8
+ /**
9
+ * Join configuration used in compiled select statements.
10
+ */
11
+ export type JoinClause = {
12
+ type: JoinType;
13
+ table: AnyTable;
14
+ on: Predicate;
15
+ };
16
+ /**
17
+ * Selected output column with optional alias.
18
+ */
19
+ export type SelectColumn = {
20
+ column: string;
21
+ alias: string;
22
+ };
23
+ /**
24
+ * Returning selection for write statements.
25
+ */
26
+ export type ReturningSelection = '*' | string[];
27
+ /**
28
+ * Canonical select statement shape consumed by drivers.
29
+ */
30
+ export type SelectOperation<table extends AnyTable = AnyTable> = {
31
+ kind: 'select';
32
+ table: table;
33
+ select: '*' | SelectColumn[];
34
+ distinct: boolean;
35
+ joins: JoinClause[];
36
+ where: Predicate[];
37
+ groupBy: string[];
38
+ having: Predicate[];
39
+ orderBy: OrderByClause[];
40
+ limit?: number;
41
+ offset?: number;
42
+ };
43
+ /**
44
+ * Canonical count statement shape consumed by drivers.
45
+ */
46
+ export type CountOperation<table extends AnyTable = AnyTable> = {
47
+ kind: 'count';
48
+ table: table;
49
+ joins: JoinClause[];
50
+ where: Predicate[];
51
+ groupBy: string[];
52
+ having: Predicate[];
53
+ };
54
+ /**
55
+ * Canonical exists statement shape consumed by drivers.
56
+ */
57
+ export type ExistsOperation<table extends AnyTable = AnyTable> = {
58
+ kind: 'exists';
59
+ table: table;
60
+ joins: JoinClause[];
61
+ where: Predicate[];
62
+ groupBy: string[];
63
+ having: Predicate[];
64
+ };
65
+ /**
66
+ * Canonical insert statement shape consumed by drivers.
67
+ */
68
+ export type InsertOperation<table extends AnyTable = AnyTable> = {
69
+ kind: 'insert';
70
+ table: table;
71
+ values: Record<string, unknown>;
72
+ returning?: ReturningSelection;
73
+ };
74
+ /**
75
+ * Canonical bulk-insert statement shape consumed by drivers.
76
+ */
77
+ export type InsertManyOperation<table extends AnyTable = AnyTable> = {
78
+ kind: 'insertMany';
79
+ table: table;
80
+ values: Record<string, unknown>[];
81
+ returning?: ReturningSelection;
82
+ };
83
+ /**
84
+ * Canonical update statement shape consumed by drivers.
85
+ */
86
+ export type UpdateOperation<table extends AnyTable = AnyTable> = {
87
+ kind: 'update';
88
+ table: table;
89
+ changes: Record<string, unknown>;
90
+ where: Predicate[];
91
+ returning?: ReturningSelection;
92
+ };
93
+ /**
94
+ * Canonical delete statement shape consumed by drivers.
95
+ */
96
+ export type DeleteOperation<table extends AnyTable = AnyTable> = {
97
+ kind: 'delete';
98
+ table: table;
99
+ where: Predicate[];
100
+ returning?: ReturningSelection;
101
+ };
102
+ /**
103
+ * Canonical upsert statement shape consumed by drivers.
104
+ */
105
+ export type UpsertOperation<table extends AnyTable = AnyTable> = {
106
+ kind: 'upsert';
107
+ table: table;
108
+ values: Record<string, unknown>;
109
+ conflictTarget?: string[];
110
+ update?: Record<string, unknown>;
111
+ returning?: ReturningSelection;
112
+ };
113
+ /**
114
+ * Raw SQL statement execution descriptor.
115
+ */
116
+ export type RawOperation = {
117
+ kind: 'raw';
118
+ sql: SqlStatement;
119
+ };
120
+ /**
121
+ * Union of all data-manipulation statement shapes.
122
+ */
123
+ export type DataManipulationOperation = SelectOperation | CountOperation | ExistsOperation | InsertOperation | InsertManyOperation | UpdateOperation | DeleteOperation | UpsertOperation | RawOperation;
124
+ /**
125
+ * Qualified table reference.
126
+ */
127
+ export type TableRef = {
128
+ name: string;
129
+ schema?: string;
130
+ };
131
+ /**
132
+ * Referential actions supported by foreign key constraints.
133
+ */
134
+ export type ForeignKeyAction = 'cascade' | 'restrict' | 'set null' | 'set default' | 'no action';
135
+ /**
136
+ * Logical column type names used by schema definitions.
137
+ */
138
+ export type ColumnTypeName = 'varchar' | 'text' | 'integer' | 'bigint' | 'decimal' | 'boolean' | 'uuid' | 'date' | 'time' | 'timestamp' | 'json' | 'binary' | 'enum';
139
+ /**
140
+ * Default value definition for a column.
141
+ */
142
+ export type ColumnDefault = {
143
+ kind: 'literal';
144
+ value: unknown;
145
+ } | {
146
+ kind: 'now';
147
+ } | {
148
+ kind: 'sql';
149
+ expression: string;
150
+ };
151
+ /**
152
+ * Definition for a computed or generated column.
153
+ */
154
+ export type ColumnComputed = {
155
+ expression: string;
156
+ stored: boolean;
157
+ };
158
+ /** Options for configuring identity column generation. */
159
+ export type IdentityOptions = {
160
+ always?: boolean;
161
+ start?: number;
162
+ increment?: number;
163
+ };
164
+ /** Foreign-key reference metadata declared on a column. */
165
+ export type ColumnReference = {
166
+ table: TableRef;
167
+ columns: string[];
168
+ name: string;
169
+ onDelete?: ForeignKeyAction;
170
+ onUpdate?: ForeignKeyAction;
171
+ };
172
+ /**
173
+ * Check constraint declared on a column definition.
174
+ */
175
+ export type ColumnCheck = {
176
+ expression: string;
177
+ name: string;
178
+ };
179
+ /**
180
+ * Normalized column definition used in schema operations.
181
+ */
182
+ export type ColumnDefinition = {
183
+ type: ColumnTypeName;
184
+ nullable?: boolean;
185
+ primaryKey?: boolean;
186
+ unique?: boolean | {
187
+ name?: string;
188
+ };
189
+ default?: ColumnDefault;
190
+ computed?: ColumnComputed;
191
+ references?: ColumnReference;
192
+ checks?: ColumnCheck[];
193
+ comment?: string;
194
+ length?: number;
195
+ precision?: number;
196
+ scale?: number;
197
+ unsigned?: boolean;
198
+ withTimezone?: boolean;
199
+ enumValues?: string[];
200
+ autoIncrement?: boolean;
201
+ identity?: IdentityOptions;
202
+ collate?: string;
203
+ charset?: string;
204
+ };
205
+ /**
206
+ * Opaque transaction handle supplied by database drivers.
207
+ */
208
+ export type TransactionToken = {
209
+ id: string;
210
+ metadata?: Record<string, unknown>;
211
+ };
212
+ /**
213
+ * Transaction hints that database drivers may apply when supported by the dialect.
214
+ */
215
+ export type TransactionOptions = {
216
+ isolationLevel?: 'read uncommitted' | 'read committed' | 'repeatable read' | 'serializable';
217
+ readOnly?: boolean;
218
+ };
219
+ /**
220
+ * Database driver execution request payload.
221
+ */
222
+ export type DataManipulationRequest = {
223
+ operation: DataManipulationOperation;
224
+ transaction?: TransactionToken;
225
+ };
226
+ /**
227
+ * Database data-manipulation result payload.
228
+ */
229
+ export type DataManipulationResult = {
230
+ rows?: Record<string, unknown>[];
231
+ affectedRows?: number;
232
+ insertId?: unknown;
233
+ };
234
+ /**
235
+ * Declares database feature support.
236
+ */
237
+ export type DatabaseCapabilities = {
238
+ readonly returning: boolean;
239
+ readonly savepoints: boolean;
240
+ readonly upsert: boolean;
241
+ readonly transactionalDdl: boolean;
242
+ readonly migrationLock: boolean;
243
+ };
244
+ /**
245
+ * Low-level contract that connects a `Database` to a database engine.
246
+ */
247
+ export interface DatabaseDriver<dialect extends string = string> {
248
+ /** Stable identifier for the SQL dialect. */
249
+ readonly dialect: dialect;
250
+ /** Immutable feature flags used by shared query and migration behavior. */
251
+ readonly capabilities: DatabaseCapabilities;
252
+ /** Executes a data-manipulation request. */
253
+ execute(request: DataManipulationRequest): Promise<DataManipulationResult>;
254
+ /** Executes a raw SQL script that may contain multiple statements. */
255
+ executeScript(sql: string, transaction?: TransactionToken): Promise<void>;
256
+ /** Starts a new database transaction. */
257
+ beginTransaction(options?: TransactionOptions): Promise<TransactionToken>;
258
+ /** Commits an open transaction. */
259
+ commitTransaction(token: TransactionToken): Promise<void>;
260
+ /** Rolls back an open transaction. */
261
+ rollbackTransaction(token: TransactionToken): Promise<void>;
262
+ /** Checks whether a table exists. */
263
+ hasTable(table: TableRef, transaction?: TransactionToken): Promise<boolean>;
264
+ /** Checks whether a column exists on a table. */
265
+ hasColumn(table: TableRef, column: string, transaction?: TransactionToken): Promise<boolean>;
266
+ /** Creates a savepoint inside an open transaction. */
267
+ createSavepoint(token: TransactionToken, name: string): Promise<void>;
268
+ /** Rolls back to a previously created savepoint. */
269
+ rollbackToSavepoint(token: TransactionToken, name: string): Promise<void>;
270
+ /** Releases a previously created savepoint. */
271
+ releaseSavepoint(token: TransactionToken, name: string): Promise<void>;
272
+ /** Destructively recreates the configured database. */
273
+ wipe(): Promise<void>;
274
+ /** Releases connection handles owned by the driver. Must be safe to call repeatedly. */
275
+ close(): void | Promise<void>;
276
+ /**
277
+ * Runs migration work while holding a driver-specific lock.
278
+ *
279
+ * The callback receives a driver bound to the connection that owns the lock. Drivers must
280
+ * release the lock when the callback rejects as well as when it resolves.
281
+ * @param name Logical migration lock name.
282
+ * @param run Migration work to run with the connection-bound driver.
283
+ * @returns The callback result.
284
+ */
285
+ withMigrationLock?<result>(name: string, run: (driver: DatabaseDriver<dialect>) => Promise<result>): Promise<result>;
286
+ }
287
+ //# sourceMappingURL=driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/lib/driver.ts"],"names":[],"mappings":"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"}
@@ -39,9 +39,9 @@ export declare class DataTableQueryError extends DataTableError {
39
39
  });
40
40
  }
41
41
  /**
42
- * Thrown when adapter execution fails.
42
+ * Thrown when database execution fails.
43
43
  */
44
- export declare class DataTableAdapterError extends DataTableError {
44
+ export declare class DataTableDatabaseError extends DataTableError {
45
45
  constructor(message: string, options?: {
46
46
  cause?: unknown;
47
47
  metadata?: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAElC,YACE,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACnC,EAMF;CACF;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,cAAc;IAC1D;;OAEG;IACH,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;IAE9B,YACE,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,EAC9B,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACnC,EAUF;CACF;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,YACE,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACnC,EASF;CACF;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,cAAc;IACvD,YACE,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACnC,EASF;CACF;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,cAAc;IAC1D,YACE,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACnC,EASF;CACF"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAElC,YACE,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACnC,EAMF;CACF;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,cAAc;IAC1D;;OAEG;IACH,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;IAE9B,YACE,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,EAC9B,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACnC,EAUF;CACF;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,YACE,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACnC,EASF;CACF;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,cAAc;IACxD,YACE,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACnC,EASF;CACF;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,cAAc;IAC1D,YACE,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACnC,EASF;CACF"}