@ignisia/sql 0.2.1 → 0.3.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 (138) hide show
  1. package/dist/cjs/column/constants.d.cts +150 -0
  2. package/dist/cjs/column/constants.js +158 -0
  3. package/dist/cjs/column/index.d.cts +43 -0
  4. package/dist/cjs/column/index.js +127 -0
  5. package/dist/cjs/column/types.d.cts +43 -0
  6. package/dist/cjs/column/types.js +4 -0
  7. package/dist/cjs/column/utils.d.cts +133 -0
  8. package/dist/cjs/column/utils.js +34 -0
  9. package/dist/cjs/database/alter.d.cts +53 -0
  10. package/dist/cjs/database/alter.js +93 -0
  11. package/dist/cjs/database/column.d.cts +25 -0
  12. package/dist/cjs/database/column.js +39 -0
  13. package/dist/cjs/database/contract.d.cts +9 -0
  14. package/dist/cjs/database/contract.js +2 -0
  15. package/dist/cjs/database/index.d.cts +9 -0
  16. package/dist/cjs/database/index.js +107 -0
  17. package/dist/cjs/database/table.d.cts +22 -0
  18. package/dist/cjs/database/table.js +49 -0
  19. package/dist/cjs/database/types.d.cts +8 -0
  20. package/dist/cjs/database/types.js +2 -0
  21. package/dist/cjs/database/wrapper.d.cts +32 -0
  22. package/dist/cjs/database/wrapper.js +87 -0
  23. package/dist/cjs/index-2jl8MRfX.d.cts +105 -0
  24. package/dist/cjs/index-CnQVnCEI.d.cts +392 -0
  25. package/dist/cjs/index.d.cts +11 -0
  26. package/dist/cjs/index.js +30 -0
  27. package/dist/cjs/migration/index.d.cts +31 -0
  28. package/dist/{migration → cjs/migration}/index.js +3 -1
  29. package/dist/cjs/migration/runner.js +58 -0
  30. package/dist/cjs/migration/type.d.cts +20 -0
  31. package/dist/cjs/migration/type.js +2 -0
  32. package/dist/cjs/package.json +3 -0
  33. package/dist/cjs/query/builder.d.cts +15 -0
  34. package/dist/cjs/query/builder.js +71 -0
  35. package/dist/cjs/query/condition.d.cts +8 -0
  36. package/dist/cjs/query/condition.js +109 -0
  37. package/dist/cjs/query/constants.js +64 -0
  38. package/dist/cjs/query/contract.d.cts +8 -0
  39. package/dist/cjs/query/contract.js +2 -0
  40. package/dist/cjs/query/helper.d.cts +8 -0
  41. package/dist/cjs/query/helper.js +36 -0
  42. package/dist/cjs/query/index.d.cts +8 -0
  43. package/dist/cjs/query/index.js +206 -0
  44. package/dist/cjs/query/join.d.cts +17 -0
  45. package/dist/cjs/query/join.js +18 -0
  46. package/dist/cjs/query/sql.d.cts +18 -0
  47. package/dist/cjs/query/sql.js +132 -0
  48. package/dist/cjs/query/types.d.cts +8 -0
  49. package/dist/cjs/query/types.js +2 -0
  50. package/dist/cjs/query/utilities.d.cts +37 -0
  51. package/dist/cjs/query/utilities.js +194 -0
  52. package/dist/cjs/table/constants.d.cts +8 -0
  53. package/dist/cjs/table/constants.js +9 -0
  54. package/dist/cjs/table/index.d.cts +8 -0
  55. package/dist/cjs/table/index.js +74 -0
  56. package/dist/cjs/table/types.d.cts +8 -0
  57. package/dist/cjs/table/types.js +2 -0
  58. package/dist/cjs/table/utilities.d.cts +8 -0
  59. package/dist/cjs/table/utilities.js +55 -0
  60. package/dist/cjs/types.js +2 -0
  61. package/dist/cjs/utilities.js +21 -0
  62. package/dist/{column → esm/column}/constants.d.ts +58 -5
  63. package/dist/esm/column/constants.js +154 -0
  64. package/dist/{column → esm/column}/index.d.ts +1 -0
  65. package/dist/{column → esm/column}/index.js +36 -15
  66. package/dist/esm/column/types.js +1 -0
  67. package/dist/esm/column/utils.d.ts +133 -0
  68. package/dist/esm/column/utils.js +32 -0
  69. package/dist/{database → esm/database}/alter.d.ts +3 -2
  70. package/dist/{database → esm/database}/alter.js +17 -16
  71. package/dist/{database → esm/database}/column.d.ts +3 -2
  72. package/dist/{database → esm/database}/column.js +11 -8
  73. package/dist/{database → esm/database}/contract.d.ts +3 -2
  74. package/dist/{database → esm/database}/index.d.ts +3 -2
  75. package/dist/{database → esm/database}/index.js +24 -10
  76. package/dist/{database → esm/database}/table.d.ts +3 -2
  77. package/dist/{database → esm/database}/table.js +14 -5
  78. package/dist/esm/database/types.d.ts +8 -0
  79. package/dist/esm/database/wrapper.d.ts +32 -0
  80. package/dist/esm/database/wrapper.js +83 -0
  81. package/dist/{index-DFrpzXEn.d.ts → esm/index-BXOAxB_h.d.ts} +4 -2
  82. package/dist/{index-FMT0YEO7.d.ts → esm/index-BdpoD4zk.d.ts} +80 -46
  83. package/dist/{index.d.ts → esm/index.d.ts} +3 -2
  84. package/dist/esm/index.js +5 -0
  85. package/dist/{migration → esm/migration}/index.d.ts +3 -2
  86. package/dist/esm/migration/index.js +49 -0
  87. package/dist/esm/migration/runner.d.ts +3 -0
  88. package/dist/{migration → esm/migration}/runner.js +7 -6
  89. package/dist/{migration → esm/migration}/type.d.ts +3 -2
  90. package/dist/{query → esm/query}/builder.d.ts +2 -1
  91. package/dist/{query → esm/query}/builder.js +3 -2
  92. package/dist/esm/query/condition.d.ts +8 -0
  93. package/dist/{query → esm/query}/condition.js +9 -5
  94. package/dist/esm/query/constants.d.ts +63 -0
  95. package/dist/{query → esm/query}/constants.js +9 -8
  96. package/dist/{query → esm/query}/contract.d.ts +3 -2
  97. package/dist/{query → esm/query}/helper.d.ts +2 -1
  98. package/dist/{query → esm/query}/helper.js +3 -2
  99. package/dist/{query → esm/query}/index.d.ts +2 -1
  100. package/dist/{query → esm/query}/index.js +26 -16
  101. package/dist/{query → esm/query}/join.d.ts +2 -1
  102. package/dist/{query → esm/query}/join.js +1 -0
  103. package/dist/{query → esm/query}/sql.d.ts +5 -4
  104. package/dist/{query → esm/query}/sql.js +40 -11
  105. package/dist/esm/query/types.d.ts +8 -0
  106. package/dist/{query → esm/query}/utilities.d.ts +4 -1
  107. package/dist/{query → esm/query}/utilities.js +20 -9
  108. package/dist/{table → esm/table}/constants.d.ts +1 -0
  109. package/dist/{table → esm/table}/constants.js +3 -1
  110. package/dist/{table → esm/table}/index.d.ts +2 -1
  111. package/dist/{table → esm/table}/index.js +35 -14
  112. package/dist/{table → esm/table}/types.d.ts +2 -1
  113. package/dist/{table → esm/table}/utilities.d.ts +2 -1
  114. package/dist/{table → esm/table}/utilities.js +5 -4
  115. package/dist/esm/types.d.ts +3 -0
  116. package/dist/esm/utilities.d.ts +4 -0
  117. package/dist/{utilities.js → esm/utilities.js} +1 -0
  118. package/package.json +42 -19
  119. package/dist/column/constants.js +0 -98
  120. package/dist/column/types.js +0 -1
  121. package/dist/database/types.d.ts +0 -7
  122. package/dist/database/wrapper.d.ts +0 -36
  123. package/dist/database/wrapper.js +0 -92
  124. package/dist/index.js +0 -5
  125. package/dist/query/condition.d.ts +0 -7
  126. package/dist/query/types.d.ts +0 -7
  127. /package/dist/{migration/runner.d.ts → cjs/migration/runner.d.cts} +0 -0
  128. /package/dist/{query/constants.d.ts → cjs/query/constants.d.cts} +0 -0
  129. /package/dist/{types.d.ts → cjs/types.d.cts} +0 -0
  130. /package/dist/{utilities.d.ts → cjs/utilities.d.cts} +0 -0
  131. /package/dist/{column → esm/column}/types.d.ts +0 -0
  132. /package/dist/{database → esm/database}/contract.js +0 -0
  133. /package/dist/{database → esm/database}/types.js +0 -0
  134. /package/dist/{migration → esm/migration}/type.js +0 -0
  135. /package/dist/{query → esm/query}/contract.js +0 -0
  136. /package/dist/{query → esm/query}/types.js +0 -0
  137. /package/dist/{table → esm/table}/types.js +0 -0
  138. /package/dist/{types.js → esm/types.js} +0 -0
@@ -1,9 +1,10 @@
1
- import { Dialect } from '../table/constants';
1
+ import { Dialect } from '../table/constants.js';
2
2
 
3
+ // src/database/column.ts
3
4
  async function addColumn(tableName, columnName, column) {
4
- await this.client.exec(
5
- `ALTER TABLE ${tableName} ADD COLUMN ${columnName} ${column.toString()};`
6
- );
5
+ await this.client.exec({
6
+ sql: `ALTER TABLE ${tableName} ADD COLUMN ${columnName} ${column.toString()};`
7
+ });
7
8
  if (!this.tables[tableName]) return this;
8
9
  this.tables[tableName].columns[columnName] = column;
9
10
  return this;
@@ -12,9 +13,9 @@ async function renameColumn(tableName, oldName, newName) {
12
13
  if (this.dialect === Dialect.SQLITE) {
13
14
  throw new Error("SQLite does not support RENAME COLUMN natively.");
14
15
  }
15
- await this.client.exec(
16
- `ALTER TABLE ${tableName} RENAME COLUMN ${oldName} TO ${newName};`
17
- );
16
+ await this.client.exec({
17
+ sql: `ALTER TABLE ${tableName} RENAME COLUMN ${oldName} TO ${newName};`
18
+ });
18
19
  if (!this.tables[tableName]) return this;
19
20
  this.tables[tableName].columns[newName] = this.tables[tableName].columns[oldName];
20
21
  delete this.tables[tableName].columns[oldName];
@@ -24,7 +25,9 @@ async function dropColumn(tableName, columnName) {
24
25
  if (this.dialect === Dialect.SQLITE) {
25
26
  throw new Error("SQLite does not support DROP COLUMN natively.");
26
27
  }
27
- await this.client.exec(`ALTER TABLE ${tableName} DROP COLUMN ${columnName};`);
28
+ await this.client.exec({
29
+ sql: `ALTER TABLE ${tableName} DROP COLUMN ${columnName};`
30
+ });
28
31
  if (!this.tables[tableName]) return this;
29
32
  delete this.tables[tableName].columns[columnName];
30
33
  return this;
@@ -1,8 +1,9 @@
1
- export { C as ColumnAlterationContract, T as TableAlterationContract } from '../index-DFrpzXEn.js';
1
+ export { C as ColumnAlterationContract, T as TableAlterationContract } from '../index-BXOAxB_h.js';
2
2
  import '../column/index.js';
3
3
  import '../column/constants.js';
4
- import '../index-FMT0YEO7.js';
4
+ import '../index-BdpoD4zk.js';
5
5
  import '../table/constants.js';
6
+ import 'bun';
6
7
  import '../query/constants.js';
7
8
  import '../column/types.js';
8
9
  import '../types.js';
@@ -1,8 +1,9 @@
1
+ import 'bun';
1
2
  import '../column/index.js';
2
- import '../index-FMT0YEO7.js';
3
+ import '../index-BdpoD4zk.js';
3
4
  import '../query/constants.js';
4
5
  import '../table/constants.js';
5
- export { D as Database } from '../index-DFrpzXEn.js';
6
+ export { D as Database } from '../index-BXOAxB_h.js';
6
7
  import '../column/constants.js';
7
8
  import '../column/types.js';
8
9
  import '../types.js';
@@ -1,11 +1,12 @@
1
- import '../table';
2
- import { Dialect } from '../table/constants';
3
- import { alterColumnType, setColumnDefault, dropColumnDefault, dropColumnNotNull } from './alter';
4
- import { addColumn, renameColumn, dropColumn } from './column';
5
- import { createTable, renameTable, dropTable } from './table';
6
- import { DatabasePsql, DatabaseSqlite } from './wrapper';
1
+ import '../table/index.js';
2
+ import { Dialect } from '../table/constants.js';
3
+ import { alterColumnType, setColumnDefault, dropColumnDefault, dropColumnNotNull } from './alter.js';
4
+ import { addColumn, renameColumn, dropColumn } from './column.js';
5
+ import { createTable, renameTable, dropTable } from './table.js';
6
+ import { DatabaseMysql, DatabasePsql, DatabaseSqlite } from './wrapper.js';
7
7
 
8
- class Database {
8
+ // src/database/index.ts
9
+ var Database = class _Database {
9
10
  hooks;
10
11
  dialect;
11
12
  defintion;
@@ -30,10 +31,11 @@ class Database {
30
31
  dialect: options.dialect,
31
32
  config: options.config
32
33
  };
33
- this.client = options.dialect === Dialect.POSTGRES ? new DatabasePsql(options.config) : new DatabaseSqlite(options.config);
34
+ this.client = this.createClient(options);
34
35
  if (options.tables) {
35
36
  for (const tableName in options.tables) {
36
37
  options.tables[tableName].client = this.client;
38
+ options.tables[tableName].setDialect(this.dialect);
37
39
  }
38
40
  }
39
41
  this.createTable = createTable.bind(this);
@@ -58,6 +60,18 @@ class Database {
58
60
  this
59
61
  );
60
62
  }
63
+ createClient(options) {
64
+ switch (options.dialect) {
65
+ case Dialect.SQLITE:
66
+ return new DatabaseSqlite(options.config);
67
+ case Dialect.POSTGRES:
68
+ return new DatabasePsql(options.config);
69
+ case Dialect.MYSQL:
70
+ return new DatabaseMysql(options.config);
71
+ default:
72
+ throw new Error(`Dialect ${options.dialect} is not supported`);
73
+ }
74
+ }
61
75
  table(tableName) {
62
76
  if (!this.tables[tableName]) {
63
77
  throw new Error(`Table ${tableName} does not exist`);
@@ -85,8 +99,8 @@ class Database {
85
99
  return this.client.transaction(fn);
86
100
  }
87
101
  static define(options) {
88
- return new Database(options);
102
+ return new _Database(options);
89
103
  }
90
- }
104
+ };
91
105
 
92
106
  export { Database };
@@ -1,7 +1,8 @@
1
- import { D as Database } from '../index-DFrpzXEn.js';
1
+ import { D as Database } from '../index-BXOAxB_h.js';
2
2
  import { Column } from '../column/index.js';
3
- import { T as Table, D as DatabaseDefinition, a as TimestampOptions, M as MergeTimestampParanoid } from '../index-FMT0YEO7.js';
3
+ import { T as Table, D as DatabaseDefinition, a as TimestampOptions, M as MergeTimestampParanoid } from '../index-BdpoD4zk.js';
4
4
  import { Dialect } from '../table/constants.js';
5
+ import 'bun';
5
6
  import '../query/constants.js';
6
7
  import '../column/constants.js';
7
8
  import '../column/types.js';
@@ -1,5 +1,6 @@
1
- import { Table } from '../table';
1
+ import { Table } from '../table/index.js';
2
2
 
3
+ // src/database/table.ts
3
4
  async function createTable(tableName, columns, options) {
4
5
  const table = Table.define({
5
6
  name: tableName,
@@ -15,21 +16,29 @@ async function createTable(tableName, columns, options) {
15
16
  while (this.client.status === "connecting") {
16
17
  await new Promise((resolve) => setTimeout(resolve, 100));
17
18
  }
18
- await table.create(this.client);
19
+ await table.create({
20
+ db: this.client
21
+ });
19
22
  return this;
20
23
  }
21
24
  async function renameTable(oldName, newName) {
22
- await this.client.exec(`ALTER TABLE ${oldName} RENAME TO ${newName};`);
25
+ await this.client.exec({
26
+ sql: `ALTER TABLE ${oldName} RENAME TO ${newName};`
27
+ });
23
28
  this.tables[newName] = this.tables[oldName];
24
29
  delete this.tables[oldName];
25
30
  return this;
26
31
  }
27
32
  async function dropTable(tableName) {
28
33
  if (!this.tables[tableName]) {
29
- await this.client.exec(`DROP TABLE IF EXISTS ${tableName};`);
34
+ await this.client.exec({
35
+ sql: `DROP TABLE IF EXISTS ${tableName};`
36
+ });
30
37
  return this;
31
38
  }
32
- await this.tables[tableName].drop(this.client);
39
+ await this.tables[tableName].drop({
40
+ db: this.client
41
+ });
33
42
  delete this.tables[tableName];
34
43
  return this;
35
44
  }
@@ -0,0 +1,8 @@
1
+ import 'bun';
2
+ import '../column/index.js';
3
+ export { D as DatabaseDefinition, b as DatabaseDialect, c as DatabaseExecOptions, i as DatabaseOptions, s as MysqlConfig, P as PostgresConfig, r as SqlConfig, S as SqlConfigMapping, d as SqliteConfig } from '../index-BdpoD4zk.js';
4
+ import '../table/constants.js';
5
+ import '../column/constants.js';
6
+ import '../column/types.js';
7
+ import '../types.js';
8
+ import '../query/constants.js';
@@ -0,0 +1,32 @@
1
+ import { SQL, TransactionSQL } from 'bun';
2
+ import { Dialect } from '../table/constants.js';
3
+ import { S as SqlConfigMapping, b as DatabaseDialect, c as DatabaseExecOptions, P as PostgresConfig, d as SqliteConfig } from '../index-BdpoD4zk.js';
4
+ import '../column/index.js';
5
+ import '../column/constants.js';
6
+ import '../column/types.js';
7
+ import '../types.js';
8
+ import '../query/constants.js';
9
+
10
+ declare class BaseSql<DbDialect extends Dialect, Options extends SqlConfigMapping[DbDialect]> implements DatabaseDialect {
11
+ readonly dialect: Dialect;
12
+ readonly options: Options;
13
+ client: SQL;
14
+ status: 'connecting' | 'connected' | 'disconnected';
15
+ constructor(dialect: Dialect, options: Options);
16
+ connect(): Promise<this>;
17
+ disconnect(): Promise<this>;
18
+ exec<T>(options: DatabaseExecOptions): Promise<T>;
19
+ transaction<T, U extends (tx: TransactionSQL) => Promise<T>>(fn: U): Promise<T>;
20
+ distributed<T extends string, U, V extends (tx: TransactionSQL) => Promise<U>>(name: T, fn: V): Promise<U>;
21
+ }
22
+ declare class DatabasePsql extends BaseSql<typeof Dialect.POSTGRES, PostgresConfig> {
23
+ constructor(options: PostgresConfig);
24
+ }
25
+ declare class DatabaseMysql extends BaseSql<typeof Dialect.MYSQL, PostgresConfig> {
26
+ constructor(options: PostgresConfig);
27
+ }
28
+ declare class DatabaseSqlite extends BaseSql<typeof Dialect.SQLITE, SqliteConfig> {
29
+ constructor(options: SqliteConfig);
30
+ }
31
+
32
+ export { BaseSql, DatabaseMysql, DatabasePsql, DatabaseSqlite };
@@ -0,0 +1,83 @@
1
+ import { SQL } from 'bun';
2
+ import { Dialect } from '../table/constants.js';
3
+
4
+ // src/database/wrapper.ts
5
+ var BaseSql = class {
6
+ dialect;
7
+ options;
8
+ client;
9
+ status;
10
+ constructor(dialect, options) {
11
+ this.dialect = dialect;
12
+ this.options = options;
13
+ this.status = "connecting";
14
+ this.client = new SQL({
15
+ ...options,
16
+ adapter: dialect,
17
+ onconnect: () => {
18
+ this.status = "connected";
19
+ },
20
+ onclose: () => {
21
+ this.status = "disconnected";
22
+ }
23
+ });
24
+ this.connect();
25
+ }
26
+ async connect() {
27
+ await this.client.connect();
28
+ return this;
29
+ }
30
+ async disconnect() {
31
+ await this.client.close();
32
+ return this;
33
+ }
34
+ async exec(options) {
35
+ const client = options.tx || this.client;
36
+ if (!client) {
37
+ throw new Error("Database not connected");
38
+ }
39
+ if (!options.params) {
40
+ return client.unsafe(options.sql);
41
+ }
42
+ const params = (options.params ?? []).map((param) => {
43
+ if (param === null || typeof param === "string" || typeof param === "number" || typeof param === "boolean" || typeof param === "bigint") {
44
+ return param;
45
+ }
46
+ if (param === void 0) {
47
+ return null;
48
+ }
49
+ if (param instanceof Date) {
50
+ return param.toISOString();
51
+ }
52
+ try {
53
+ return JSON.stringify(param);
54
+ } catch {
55
+ return null;
56
+ }
57
+ });
58
+ return client.unsafe(options.sql, params);
59
+ }
60
+ async transaction(fn) {
61
+ return this.client.transaction(fn);
62
+ }
63
+ async distributed(name, fn) {
64
+ return this.client.distributed(name, fn);
65
+ }
66
+ };
67
+ var DatabasePsql = class extends BaseSql {
68
+ constructor(options) {
69
+ super(Dialect.POSTGRES, options);
70
+ }
71
+ };
72
+ var DatabaseMysql = class extends BaseSql {
73
+ constructor(options) {
74
+ super(Dialect.MYSQL, options);
75
+ }
76
+ };
77
+ var DatabaseSqlite = class extends BaseSql {
78
+ constructor(options) {
79
+ super(Dialect.SQLITE, options);
80
+ }
81
+ };
82
+
83
+ export { BaseSql, DatabaseMysql, DatabasePsql, DatabaseSqlite };
@@ -1,5 +1,6 @@
1
+ import { TransactionSQL } from 'bun';
1
2
  import { Column } from './column/index.js';
2
- import { T as Table, D as DatabaseDefinition, a as TimestampOptions, M as MergeTimestampParanoid, f as QuerHooks, b as DatabaseDialect, g as DatabaseOptions, d as QueryBuilder, h as QueryRunHooks } from './index-FMT0YEO7.js';
3
+ import { T as Table, D as DatabaseDefinition, a as TimestampOptions, M as MergeTimestampParanoid, h as QuerHooks, b as DatabaseDialect, i as DatabaseOptions, f as QueryBuilder, j as QueryRunHooks } from './index-BdpoD4zk.js';
3
4
  import { QueryHooksType } from './query/constants.js';
4
5
  import { Dialect } from './table/constants.js';
5
6
  import { AcceptedColumnTypes } from './column/constants.js';
@@ -93,10 +94,11 @@ declare class Database<DbDialect extends Dialect, Tables extends Record<string,
93
94
  setColumnNotNull: ColumnAlterationContract<DbDialect, Tables, Definition>['setColumnNotNull'];
94
95
  dropColumnNotNull: ColumnAlterationContract<DbDialect, Tables, Definition>['dropColumnNotNull'];
95
96
  protected constructor(options: DatabaseOptions<DbDialect, Tables>);
97
+ private createClient;
96
98
  table<TableName extends keyof Tables & string, Table extends Tables[TableName]>(tableName: TableName): QueryBuilder<TableName, Table>;
97
99
  addHook(type: QueryHooksType, fn: QueryRunHooks): this;
98
100
  removeHook(type: QueryHooksType, fn: QueryRunHooks): this;
99
- transaction<T, U extends () => Promise<T>>(fn: U): Promise<unknown>;
101
+ transaction<T, U extends (tx: TransactionSQL) => Promise<T>>(fn: U): Promise<unknown>;
100
102
  static define<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>>(options: DatabaseOptions<DbDialect, Tables>): Database<DbDialect, Tables, DatabaseDefinition<DbDialect>>;
101
103
  }
102
104
 
@@ -2,6 +2,7 @@ import { Column } from './column/index.js';
2
2
  import { AcceptedColumnTypes } from './column/constants.js';
3
3
  import { UnionToIntersection } from './types.js';
4
4
  import { QueryType, OrderBy, AggregationFunction, QueryHooksType, AcceptedOperator, ConditionClause, LogicalOperator } from './query/constants.js';
5
+ import { TransactionSQL } from 'bun';
5
6
  import { Dialect } from './table/constants.js';
6
7
 
7
8
  type ColumnSelector<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>> = `${Alias}."${keyof TableRef['columns'] & string}"` | `${Alias}.*` | {
@@ -132,6 +133,52 @@ interface QuerHooks {
132
133
  before: Set<QueryRunHooks>;
133
134
  }
134
135
 
136
+ type SqlConfigMapping = {
137
+ [Dialect.POSTGRES]: PostgresConfig;
138
+ [Dialect.MYSQL]: MysqlConfig;
139
+ [Dialect.SQLITE]: SqliteConfig;
140
+ };
141
+ interface SqliteConfig {
142
+ filename: ':memory:' | (string & {});
143
+ }
144
+ interface SqlConfig {
145
+ host: string;
146
+ port: number;
147
+ user: string;
148
+ password: string;
149
+ database: string;
150
+ }
151
+ interface PostgresConfig extends SqlConfig {
152
+ }
153
+ interface MysqlConfig extends SqlConfig {
154
+ }
155
+ interface DatabaseOptions<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>> {
156
+ dialect: DbDialect;
157
+ config: SqlConfigMapping[DbDialect];
158
+ tables?: Tables;
159
+ }
160
+ interface DatabaseExecOptions {
161
+ sql: string;
162
+ params?: unknown[] | null | undefined;
163
+ tx?: TransactionSQL | null;
164
+ }
165
+ interface DatabaseDefinition<DbDialect extends Dialect> extends Omit<DatabaseOptions<DbDialect, any>, 'tables'> {
166
+ }
167
+ interface DatabaseDialect {
168
+ status: 'connecting' | 'connected' | 'disconnected';
169
+ connect(): Promise<this>;
170
+ disconnect(): Promise<this>;
171
+ exec<T>(options: DatabaseExecOptions): Promise<T>;
172
+ /**
173
+ * Begins a transaction
174
+ */
175
+ transaction<T, U extends (tx: TransactionSQL) => Promise<T>>(fn: U): Promise<T>;
176
+ /**
177
+ * Begins a distributed transaction
178
+ */
179
+ distributed<T extends string, U, V extends (tx: TransactionSQL) => Promise<U>>(name: T, fn: V): Promise<U>;
180
+ }
181
+
135
182
  declare const createdAt: Column<AcceptedColumnTypes, number | readonly string[], {
136
183
  type: "DATETIME";
137
184
  }, Date, Date, {
@@ -143,68 +190,50 @@ declare const updatedAt: Column<AcceptedColumnTypes, number | readonly string[],
143
190
  declare const deletedAt: Column<AcceptedColumnTypes, number | readonly string[], {
144
191
  type: "DATETIME";
145
192
  }, Date, Date, {}>;
146
- declare function defineColumns<TableName extends string, Columns extends Record<string, Column>, CreatedAt extends string, UpdatedAt extends string, Timestamp extends TimestampOptions<CreatedAt, UpdatedAt> | boolean, Paranoid extends string | boolean, FinalColumns extends MergeTimestampParanoid<Columns, CreatedAt, UpdatedAt, Timestamp, Paranoid>>(options: TableOptions<TableName, Columns, Dialect, CreatedAt, UpdatedAt, Timestamp, Paranoid>): FinalColumns;
193
+ declare function defineColumns<TableName extends string, Columns extends Record<string, Column>, CreatedAt extends string | boolean, UpdatedAt extends string | boolean, Timestamp extends TimestampOptions<CreatedAt, UpdatedAt> | boolean, Paranoid extends string | boolean, FinalColumns extends MergeTimestampParanoid<Columns, CreatedAt, UpdatedAt, Timestamp, Paranoid>>(options: TableOptions<TableName, Columns, Dialect, CreatedAt, UpdatedAt, Timestamp, Paranoid>): FinalColumns;
147
194
 
148
- interface TimestampOptions<CreatedAt extends string, UpdatedAt extends string> {
195
+ interface TimestampOptions<CreatedAt extends string | boolean, UpdatedAt extends string | boolean> {
149
196
  createdAt?: CreatedAt;
150
197
  updatedAt?: UpdatedAt;
151
198
  }
152
- interface TableOptions<TableName extends string, Columns extends Record<string, Column>, DbDialect extends Dialect, CreatedAt extends string, UpdatedAt extends string, Timestamp extends TimestampOptions<CreatedAt, UpdatedAt> | boolean, Paranoid extends string | boolean> {
153
- dialect: DbDialect;
199
+ interface TableOptions<TableName extends string, Columns extends Record<string, Column>, DbDialect extends Dialect, CreatedAt extends string | boolean, UpdatedAt extends string | boolean, Timestamp extends TimestampOptions<CreatedAt, UpdatedAt> | boolean, Paranoid extends string | boolean> {
200
+ dialect?: DbDialect;
154
201
  name: TableName;
155
202
  columns: Columns;
156
203
  paranoid?: Paranoid;
157
204
  timestamp?: Timestamp;
158
205
  }
159
- type MergeTimestampParanoid<Columns extends Record<string, Column>, CreatedAt extends string, UpdatedAt extends string, Timestamp extends TimestampOptions<CreatedAt, UpdatedAt> | boolean, Paranoid extends string | boolean> = Columns & (Timestamp extends true ? {
206
+ type MergeTimestampParanoid<Columns extends Record<string, Column>, CreatedAt extends string | boolean, UpdatedAt extends string | boolean, Timestamp extends TimestampOptions<CreatedAt, UpdatedAt> | boolean, Paranoid extends string | boolean> = Columns & (Timestamp extends true ? {
160
207
  createdAt: typeof createdAt;
161
208
  updatedAt: typeof updatedAt;
162
- } : Timestamp extends TimestampOptions<CreatedAt, UpdatedAt> ? (Timestamp['createdAt'] extends CreatedAt ? {
209
+ } : Timestamp extends TimestampOptions<CreatedAt, UpdatedAt> ? (Timestamp['createdAt'] extends CreatedAt ? Timestamp['createdAt'] extends true ? {
210
+ createdAt: typeof createdAt;
211
+ } : Timestamp['createdAt'] extends string ? {
163
212
  [K in Timestamp['createdAt']]: typeof createdAt;
164
- } : {
213
+ } : NonNullable<unknown> : {
165
214
  createdAt: typeof createdAt;
166
- }) & (Timestamp['updatedAt'] extends UpdatedAt ? {
215
+ }) & (Timestamp['updatedAt'] extends UpdatedAt ? Timestamp['updatedAt'] extends true ? {
216
+ updatedAt: typeof updatedAt;
217
+ } : Timestamp['updatedAt'] extends string ? {
167
218
  [K in Timestamp['updatedAt']]: typeof updatedAt;
168
- } : {
219
+ } : NonNullable<unknown> : {
169
220
  updatedAt: typeof updatedAt;
170
221
  }) : NonNullable<unknown>) & (Paranoid extends true ? {
171
222
  deletedAt: typeof deletedAt;
172
223
  } : Paranoid extends string ? {
173
224
  [K in Paranoid]: typeof deletedAt;
174
225
  } : NonNullable<unknown>);
175
- type TableOutput<TableName extends string, Columns extends Record<string, Column>, DbDialect extends Dialect, CreatedAt extends string, UpdatedAt extends string, Timestamp extends TimestampOptions<CreatedAt, UpdatedAt> | boolean, Paranoid extends string | boolean, TableRef extends Table<TableName, Columns, DbDialect, CreatedAt, UpdatedAt, Timestamp, Paranoid> = Table<TableName, Columns, DbDialect, CreatedAt, UpdatedAt, Timestamp, Paranoid>> = {
226
+ type TableOutput<TableName extends string, Columns extends Record<string, Column>, DbDialect extends Dialect, CreatedAt extends string | boolean, UpdatedAt extends string | boolean, Timestamp extends TimestampOptions<CreatedAt, UpdatedAt> | boolean, Paranoid extends string | boolean, TableRef extends Table<TableName, Columns, DbDialect, CreatedAt, UpdatedAt, Timestamp, Paranoid> = Table<TableName, Columns, DbDialect, CreatedAt, UpdatedAt, Timestamp, Paranoid>> = {
176
227
  [K in keyof TableRef['columns'] & string]: TableRef['columns'][K]['_output'];
177
228
  };
178
-
179
- interface SqliteConfig {
180
- filename: string;
181
- }
182
- interface PostgresConfig {
183
- host: string;
184
- port: number;
185
- user: string;
186
- password: string;
187
- database: string;
188
- }
189
- interface DatabaseOptions<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>> {
190
- dialect: DbDialect;
191
- config: DbDialect extends typeof Dialect.POSTGRES ? PostgresConfig : SqliteConfig;
192
- tables?: Tables;
193
- }
194
- interface DatabaseDefinition<DbDialect extends Dialect> extends Omit<DatabaseOptions<DbDialect, any>, 'tables'> {
195
- }
196
- interface DatabaseDialect {
197
- status: 'connecting' | 'connected' | 'disconnected';
198
- connect(): Promise<this>;
199
- disconnect(): Promise<this>;
200
- exec<T>(sql: string): Promise<T>;
201
- exec<T>(sql: string, params: any): Promise<T>;
202
- transaction<T, U extends () => Promise<T>>(fn: U): Promise<T>;
229
+ interface ExecOptions {
230
+ tx?: TransactionSQL | null;
231
+ db?: DatabaseDialect | null;
203
232
  }
204
233
 
205
- declare class Table<TableName extends string, Columns extends Record<string, Column>, DbDialect extends Dialect = Dialect, CreatedAt extends string = string, UpdatedAt extends string = string, Timestamp extends TimestampOptions<CreatedAt, UpdatedAt> | boolean = TimestampOptions<CreatedAt, UpdatedAt> | boolean, Paranoid extends string | boolean = string | boolean> {
234
+ declare class Table<TableName extends string, Columns extends Record<string, Column>, DbDialect extends Dialect = Dialect, CreatedAt extends string | boolean = string | boolean, UpdatedAt extends string | boolean = string | boolean, Timestamp extends TimestampOptions<CreatedAt, UpdatedAt> | boolean = TimestampOptions<CreatedAt, UpdatedAt> | boolean, Paranoid extends string | boolean = string | boolean> {
206
235
  client: DatabaseDialect | null;
207
- readonly dialect: DbDialect;
236
+ private _dialect;
208
237
  readonly name: TableName;
209
238
  readonly columns: Columns;
210
239
  readonly timestamp: Timestamp | null;
@@ -212,16 +241,19 @@ declare class Table<TableName extends string, Columns extends Record<string, Col
212
241
  readonly _output: TableOutput<TableName, Columns, DbDialect, CreatedAt, UpdatedAt, Timestamp, Paranoid>;
213
242
  protected constructor(options: TableOptions<TableName, Columns, DbDialect, CreatedAt, UpdatedAt, Timestamp, Paranoid>);
214
243
  infer(): this['_output'];
215
- static define<TableName extends string, Columns extends Record<string, Column>, DbDialect extends Dialect, CreatedAt extends string, UpdatedAt extends string, Timestamp extends TimestampOptions<CreatedAt, UpdatedAt> | boolean, Paranoid extends string | boolean>(options: TableOptions<TableName, Columns, DbDialect, CreatedAt, UpdatedAt, Timestamp, Paranoid>): Table<TableName, MergeTimestampParanoid<Columns, CreatedAt, UpdatedAt, Timestamp, Paranoid>, DbDialect, string, string, Timestamp, Paranoid>;
216
- create(db?: DatabaseDialect | null): Promise<this>;
217
- drop(db?: DatabaseDialect | null): Promise<this>;
244
+ static define<TableName extends string, Columns extends Record<string, Column>, DbDialect extends Dialect, CreatedAt extends string | boolean, UpdatedAt extends string | boolean, Timestamp extends TimestampOptions<CreatedAt, UpdatedAt> | boolean, Paranoid extends string | boolean>(options: TableOptions<TableName, Columns, DbDialect, CreatedAt, UpdatedAt, Timestamp, Paranoid>): Table<TableName, MergeTimestampParanoid<Columns, CreatedAt, UpdatedAt, Timestamp, Paranoid>, DbDialect, string | boolean, string | boolean, Timestamp, Paranoid>;
245
+ setColumnDialect<DbDialect extends Dialect>(dialect: DbDialect): void;
246
+ get dialect(): DbDialect | null;
247
+ setDialect<DbDialect extends Dialect>(dialect: DbDialect): Table<TableName, Columns, DbDialect, CreatedAt, UpdatedAt, Timestamp, Paranoid>;
248
+ create(options?: ExecOptions): Promise<this>;
249
+ drop(options?: ExecOptions): Promise<this>;
218
250
  query(): QueryBuilder<this["name"], this, {}, {}, ColumnSelector<this["name"], this, {}>, `${this["name"]}."${keyof this["columns"] & string}"`>;
219
251
  }
220
252
 
221
253
  declare function alias<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, NewAlias extends string>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, alias: NewAlias): QueryBuilder<NewAlias, TableRef, JoinedTables, Omit<Definition, "baseAlias"> & {
222
254
  baseAlias: NewAlias;
223
255
  }>;
224
- declare function clone<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>): QueryBuilder<Alias, TableRef, JoinedTables, {}, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>>;
256
+ declare function clone<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>): QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>;
225
257
  declare function rawCol<StrictAllowedColumn extends string, ColName extends StrictAllowedColumn = StrictAllowedColumn>(column: ColName): ColName;
226
258
  declare function col<StrictAllowedColumn extends string, ColName extends StrictAllowedColumn = StrictAllowedColumn, ColAlias extends string = string>(column: ColName, alias: ColAlias): {
227
259
  readonly column: ColName;
@@ -243,10 +275,10 @@ declare function rawWhere<Alias extends string, TableRef extends Table<string, R
243
275
  declare function rawOr<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>;
244
276
  declare function rawHaving<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>;
245
277
  declare function addCondition<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, Clause extends ConditionClause, ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator], Logical extends LogicalOperator, ValidClause extends Lowercase<Clause>>(query: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, clause: Clause, column: ColName, operator: Operator, value: Value, logical: Logical): QueryBuilder<Alias, TableRef, JoinedTables, Omit<Definition, ValidClause> & { [Key in ValidClause]: string[]; }, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>>;
246
- declare function where<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator, value: Value): QueryBuilder<Alias, TableRef, JoinedTables, Omit<Definition, "where"> & {
278
+ declare function where<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator, value?: Value): QueryBuilder<Alias, TableRef, JoinedTables, Omit<Definition, "where"> & {
247
279
  where: string[];
248
280
  }, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>>;
249
- declare function or<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator, value: Value): QueryBuilder<Alias, TableRef, JoinedTables, Omit<Definition, "where"> & {
281
+ declare function or<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator, value?: Value): QueryBuilder<Alias, TableRef, JoinedTables, Omit<Definition, "where"> & {
250
282
  where: string[];
251
283
  }, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>>;
252
284
  declare function having<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator, value: Value): QueryBuilder<Alias, TableRef, JoinedTables, Omit<Definition, "having"> & {
@@ -254,12 +286,12 @@ declare function having<Alias extends string, TableRef extends Table<string, Rec
254
286
  }, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>>;
255
287
 
256
288
  interface QueryTransformerContract<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>> {
257
- toQuery(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>): {
289
+ toQuery(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, dialect?: Dialect | null): {
258
290
  query: string;
259
291
  params: unknown[] | null | undefined;
260
292
  };
261
293
  toString(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>): string;
262
- exec<This extends QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn> = QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, Output extends This['_output'] = This['_output']>(this: This): Promise<Output>;
294
+ exec<This extends QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn> = QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, Output extends This['_output'] = This['_output']>(this: This, tx?: TransactionSQL | null): Promise<Output>;
263
295
  clone(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>): typeof this;
264
296
  alias<NewAlias extends string>(alias: NewAlias): QueryBuilder<NewAlias, TableRef, JoinedTables, Omit<Definition, 'baseAlias'> & {
265
297
  baseAlias: NewAlias;
@@ -269,7 +301,9 @@ interface QueryConditionContract<Alias extends string, TableRef extends Table<st
269
301
  rawWhere(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): ReturnType<typeof addRawCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.WHERE>>>;
270
302
  rawOr(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): ReturnType<typeof addRawCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, typeof LogicalOperator.OR, Lowercase<typeof ConditionClause.WHERE>>>;
271
303
  rawHaving(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): ReturnType<typeof addRawCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.HAVING, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.HAVING>>>;
304
+ where<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends typeof AcceptedOperator.IS_NULL | typeof AcceptedOperator.IS_NOT_NULL, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.WHERE>>>;
272
305
  where<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator, value: Value): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.WHERE>>>;
306
+ or<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends typeof AcceptedOperator.IS_NULL | typeof AcceptedOperator.IS_NOT_NULL, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.OR, Lowercase<typeof ConditionClause.WHERE>>>;
273
307
  or<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator, value: Value): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.OR, Lowercase<typeof ConditionClause.WHERE>>>;
274
308
  having<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator, value: Value): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.HAVING, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.HAVING>>>;
275
309
  }
@@ -355,4 +389,4 @@ declare class QueryBuilder<Alias extends TableRef['name'], TableRef extends Tabl
355
389
  infer(): this['_output'];
356
390
  }
357
391
 
358
- export { type AliasedColumn as A, addRawCondition as B, type ColumnSelector as C, type DatabaseDefinition as D, rawWhere as E, rawOr as F, rawHaving as G, addCondition as H, where as I, or as J, having as K, type QueryTransformerContract as L, type MergeTimestampParanoid as M, type QueryConditionContract as N, type PostgresConfig as P, type QueryDefinition as Q, type RawColumn as R, type SqliteConfig as S, Table as T, type WhereValue as W, type TimestampOptions as a, type DatabaseDialect as b, type StrictColumnSelector as c, QueryBuilder as d, type SelectableColumn as e, type QuerHooks as f, type DatabaseOptions as g, type QueryRunHooks as h, type AcceptedOrderBy as i, type AcceptedInsertValues as j, type AcceptedUpdateValues as k, type AggregateColumn as l, type SelectQueryOutput as m, type QueryOutput as n, type QueryRunHooksOptions as o, createdAt as p, deletedAt as q, defineColumns as r, type TableOptions as s, type TableOutput as t, updatedAt as u, alias as v, clone as w, rawCol as x, col as y, aggregateCol as z };
392
+ export { type AliasedColumn as A, clone as B, type ColumnSelector as C, type DatabaseDefinition as D, type ExecOptions as E, rawCol as F, col as G, aggregateCol as H, addRawCondition as I, rawWhere as J, rawOr as K, rawHaving as L, type MergeTimestampParanoid as M, addCondition as N, where as O, type PostgresConfig as P, type QueryDefinition as Q, type RawColumn as R, type SqlConfigMapping as S, Table as T, or as U, having as V, type WhereValue as W, type QueryTransformerContract as X, type QueryConditionContract as Y, type TimestampOptions as a, type DatabaseDialect as b, type DatabaseExecOptions as c, type SqliteConfig as d, type StrictColumnSelector as e, QueryBuilder as f, type SelectableColumn as g, type QuerHooks as h, type DatabaseOptions as i, type QueryRunHooks as j, type AcceptedOrderBy as k, type AcceptedInsertValues as l, type AcceptedUpdateValues as m, type AggregateColumn as n, type SelectQueryOutput as o, type QueryOutput as p, type QueryRunHooksOptions as q, type SqlConfig as r, type MysqlConfig as s, createdAt as t, updatedAt as u, deletedAt as v, defineColumns as w, type TableOptions as x, type TableOutput as y, alias as z };
@@ -1,10 +1,11 @@
1
1
  export { Column } from './column/index.js';
2
- export { D as Database } from './index-DFrpzXEn.js';
2
+ export { D as Database } from './index-BXOAxB_h.js';
3
3
  export { Migration } from './migration/index.js';
4
- export { d as QueryBuilder, T as Table } from './index-FMT0YEO7.js';
4
+ export { f as QueryBuilder, T as Table } from './index-BdpoD4zk.js';
5
5
  import './table/constants.js';
6
6
  import './column/constants.js';
7
7
  import './column/types.js';
8
+ import 'bun';
8
9
  import './query/constants.js';
9
10
  import './migration/type.js';
10
11
  import './types.js';
@@ -0,0 +1,5 @@
1
+ export { Column } from './column/index.js';
2
+ export { Database } from './database/index.js';
3
+ export { Migration } from './migration/index.js';
4
+ export { QueryBuilder } from './query/index.js';
5
+ export { Table } from './table/index.js';
@@ -1,10 +1,11 @@
1
1
  import { Column } from '../column/index.js';
2
- import { D as Database } from '../index-DFrpzXEn.js';
3
- import { T as Table } from '../index-FMT0YEO7.js';
2
+ import { D as Database } from '../index-BXOAxB_h.js';
3
+ import { T as Table } from '../index-BdpoD4zk.js';
4
4
  import { Dialect } from '../table/constants.js';
5
5
  import { MigrationOptions, MigrationFn } from './type.js';
6
6
  import '../column/constants.js';
7
7
  import '../column/types.js';
8
+ import 'bun';
8
9
  import '../query/constants.js';
9
10
  import '../types.js';
10
11