@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
@@ -0,0 +1,53 @@
1
+ import { D as Database } from '../index-2jl8MRfX.cjs';
2
+ import { Column } from '../column/index.cjs';
3
+ import { AcceptedColumnTypes } from '../column/constants.cjs';
4
+ import { T as Table, D as DatabaseDefinition } from '../index-CnQVnCEI.cjs';
5
+ import { Dialect } from '../table/constants.cjs';
6
+ import 'bun';
7
+ import '../query/constants.cjs';
8
+ import '../column/types.cjs';
9
+ import '../types.cjs';
10
+
11
+ declare function alterColumnType<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, TableName extends (keyof Tables & string) | (string & {}), ColName extends (keyof Tables[TableName]['columns'] & string) | (string & {}), Type extends Omit<AcceptedColumnTypes, typeof AcceptedColumnTypes.ENUM>, NewTables extends Omit<Tables, TableName> & {
12
+ [K in TableName]: Table<TableName, Omit<Tables[TableName]['columns'], ColName> & {
13
+ [K in ColName]: Tables[TableName]['columns'][ColName] & {
14
+ type: Type;
15
+ };
16
+ }>;
17
+ }>(this: Database<DbDialect, Tables, Definition>, tableName: TableName, columnName: ColName, newType: Type): Promise<Database<DbDialect, Tables, Definition> | Database<DbDialect, NewTables, Definition>>;
18
+ declare function setColumnDefault<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, TableName extends (keyof Tables & string) | (string & {}), ColName extends (keyof Tables[TableName]['columns'] & string) | (string & {}), DefaultValue extends string | number | boolean | null, NewTables extends Omit<Tables, TableName> & {
19
+ [K in TableName]: Table<TableName, Omit<Tables[TableName]['columns'], ColName> & {
20
+ [K in ColName]: Omit<Tables[TableName]['columns'][ColName], 'definition'> & {
21
+ definition: Omit<Tables[TableName]['columns'][ColName]['definition'], 'default'> & {
22
+ default: DefaultValue;
23
+ };
24
+ };
25
+ }>;
26
+ }>(this: Database<DbDialect, Tables, Definition>, tableName: TableName, columnName: ColName, value: DefaultValue): Promise<Database<DbDialect, Tables, Definition> | Database<DbDialect, NewTables, Definition>>;
27
+ declare function dropColumnDefault<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, TableName extends (keyof Tables & string) | (string & {}), ColName extends (keyof Tables[TableName]['columns'] & string) | (string & {}), NewTables extends Omit<Tables, TableName> & {
28
+ [K in TableName]: Table<TableName, Omit<Tables[TableName]['columns'], ColName> & {
29
+ [K in ColName]: Omit<Tables[TableName]['columns'][ColName], 'definition'> & {
30
+ definition: Omit<Tables[TableName]['columns'][ColName]['definition'], 'default'> & {
31
+ default: undefined;
32
+ };
33
+ };
34
+ }>;
35
+ }>(this: Database<DbDialect, Tables, Definition>, tableName: TableName, columnName: ColName): Promise<Database<DbDialect, Tables, Definition> | Database<DbDialect, NewTables, Definition>>;
36
+ declare function setColumnNotNull<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, TableName extends (keyof Tables & string) | (string & {}), ColName extends (keyof Tables[TableName]['columns'] & string) | (string & {}), NewTables extends Omit<Tables, TableName> & {
37
+ [K in TableName]: Table<TableName, Omit<Tables[TableName]['columns'], ColName> & {
38
+ [K in ColName]: Omit<Tables[TableName]['columns'][ColName], 'definition'> & {
39
+ definition: Omit<Tables[TableName]['columns'][ColName]['definition'], 'notNull'> & {
40
+ notNull: true;
41
+ };
42
+ };
43
+ }>;
44
+ }>(this: Database<DbDialect, Tables, Definition>, tableName: TableName, columnName: ColName): Promise<Database<DbDialect, Tables, Definition> | Database<DbDialect, NewTables, Definition>>;
45
+ declare function dropColumnNotNull<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, TableName extends (keyof Tables & string) | (string & {}), ColName extends (keyof Tables[TableName]['columns'] & string) | (string & {}), NewTables extends Omit<Tables, TableName> & {
46
+ [K in TableName]: Table<TableName, Omit<Tables[TableName]['columns'], ColName> & {
47
+ [K in ColName]: Omit<Tables[TableName]['columns'][ColName], 'definition'> & {
48
+ definition: Omit<Tables[TableName]['columns'][ColName]['definition'], 'notNull'>;
49
+ };
50
+ }>;
51
+ }>(this: Database<DbDialect, Tables, Definition>, tableName: TableName, columnName: ColName): Promise<Database<DbDialect, Tables, Definition> | Database<DbDialect, NewTables, Definition>>;
52
+
53
+ export { alterColumnType, dropColumnDefault, dropColumnNotNull, setColumnDefault, setColumnNotNull };
@@ -0,0 +1,93 @@
1
+ 'use strict';
2
+
3
+ var constants = require('../table/constants');
4
+
5
+ async function alterColumnType(tableName, columnName, newType) {
6
+ if (this.dialect === constants.Dialect.SQLITE) {
7
+ throw new Error("SQLite does not support ALTER COLUMN TYPE directly.");
8
+ }
9
+ await this.client.exec({
10
+ sql: `ALTER TABLE ${tableName} ALTER COLUMN ${columnName} TYPE ${newType}`
11
+ });
12
+ if (!this.tables[tableName]) return this;
13
+ this.tables[tableName].columns[columnName].type = newType;
14
+ return this;
15
+ }
16
+ async function setColumnDefault(tableName, columnName, value) {
17
+ if (this.dialect === constants.Dialect.SQLITE) {
18
+ throw new Error("SQLite does not support ALTER COLUMN DEFAULT directly.");
19
+ }
20
+ await this.client.exec({
21
+ sql: `ALTER TABLE ${tableName} ALTER COLUMN ${columnName} SET DEFAULT ${value}`
22
+ });
23
+ if (!this.tables[tableName]) return this;
24
+ if (
25
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
+ !this.tables[tableName].columns[columnName].definition
27
+ ) {
28
+ this.tables[tableName].columns[columnName].definition = {};
29
+ }
30
+ this.tables[tableName].columns[columnName].definition.default = value;
31
+ return this;
32
+ }
33
+ async function dropColumnDefault(tableName, columnName) {
34
+ if (this.dialect === constants.Dialect.SQLITE) {
35
+ throw new Error("SQLite does not support DROP DEFAULT directly.");
36
+ }
37
+ await this.client.exec({
38
+ sql: `ALTER TABLE ${tableName} ALTER COLUMN ${columnName} DROP DEFAULT`
39
+ });
40
+ if (!this.tables[tableName]) return this;
41
+ if (
42
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
43
+ !this.tables[tableName].columns[columnName].definition
44
+ ) {
45
+ this.tables[tableName].columns[columnName].definition = {};
46
+ }
47
+ delete this.tables[tableName].columns[columnName].definition.default;
48
+ return this;
49
+ }
50
+ async function setColumnNotNull(tableName, columnName) {
51
+ if (this.dialect === constants.Dialect.SQLITE) {
52
+ throw new Error(
53
+ "SQLite does not support SET NOT NULL (requires table rebuild)"
54
+ );
55
+ }
56
+ await this.client.exec({
57
+ sql: `ALTER TABLE ${tableName} ALTER COLUMN ${columnName} SET NOT NULL`
58
+ });
59
+ if (!this.tables[tableName]) return this;
60
+ if (
61
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
62
+ !this.tables[tableName].columns[columnName].definition
63
+ ) {
64
+ this.tables[tableName].columns[columnName].definition = {};
65
+ }
66
+ this.tables[tableName].columns[columnName].definition.notNull = true;
67
+ return this;
68
+ }
69
+ async function dropColumnNotNull(tableName, columnName) {
70
+ if (this.dialect === constants.Dialect.SQLITE) {
71
+ throw new Error(
72
+ "SQLite does not support DROP NOT NULL (requires table rebuild)"
73
+ );
74
+ }
75
+ await this.client.exec({
76
+ sql: `ALTER TABLE ${tableName} ALTER COLUMN ${columnName} DROP NOT NULL`
77
+ });
78
+ if (!this.tables[tableName]) return this;
79
+ if (
80
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
81
+ !this.tables[tableName].columns[columnName].definition
82
+ ) {
83
+ this.tables[tableName].columns[columnName].definition = {};
84
+ }
85
+ this.tables[tableName].columns[columnName].definition.notNull = null;
86
+ return this;
87
+ }
88
+
89
+ exports.alterColumnType = alterColumnType;
90
+ exports.dropColumnDefault = dropColumnDefault;
91
+ exports.dropColumnNotNull = dropColumnNotNull;
92
+ exports.setColumnDefault = setColumnDefault;
93
+ exports.setColumnNotNull = setColumnNotNull;
@@ -0,0 +1,25 @@
1
+ import { D as Database } from '../index-2jl8MRfX.cjs';
2
+ import { Column } from '../column/index.cjs';
3
+ import { T as Table, D as DatabaseDefinition } from '../index-CnQVnCEI.cjs';
4
+ import { Dialect } from '../table/constants.cjs';
5
+ import 'bun';
6
+ import '../query/constants.cjs';
7
+ import '../column/constants.cjs';
8
+ import '../column/types.cjs';
9
+ import '../types.cjs';
10
+
11
+ declare function addColumn<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, TableName extends (keyof Tables & string) | (string & {}), ColName extends (keyof Tables[TableName]['columns'] & string) | (string & {}), NewTables extends Omit<Tables, TableName> & {
12
+ [K in TableName]: Table<TableName, Tables[TableName]['columns'] & {
13
+ [K in ColName]: Column;
14
+ }>;
15
+ }>(this: Database<DbDialect, Tables, Definition>, tableName: TableName, columnName: ColName, column: Column): Promise<Database<DbDialect, Tables, Definition> | Database<DbDialect, NewTables, Definition>>;
16
+ declare function renameColumn<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, TableName extends (keyof Tables & string) | (string & {}), OldName extends (keyof Tables[TableName]['columns'] & string) | (string & {}), NewName extends (keyof Tables[TableName]['columns'] & string) | (string & {}), NewTables extends Omit<Tables, TableName> & {
17
+ [K in TableName]: Table<TableName, Omit<Tables[TableName]['columns'], OldName> & {
18
+ [K in NewName]: Tables[TableName]['columns'][OldName];
19
+ }>;
20
+ }>(this: Database<DbDialect, Tables, Definition>, tableName: TableName, oldName: OldName, newName: NewName): Promise<Database<DbDialect, Tables, Definition> | Database<DbDialect, NewTables, Definition>>;
21
+ declare function dropColumn<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, TableName extends (keyof Tables & string) | (string & {}), ColName extends (keyof Tables[TableName]['columns'] & string) | (string & {}), NewTables extends Omit<Tables, TableName> & {
22
+ [K in TableName]: Table<TableName, Omit<Tables[TableName]['columns'], ColName>>;
23
+ }>(this: Database<DbDialect, Tables, Definition>, tableName: TableName, columnName: ColName): Promise<Database<DbDialect, Tables, Definition> | Database<DbDialect, NewTables, Definition>>;
24
+
25
+ export { addColumn, dropColumn, renameColumn };
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ var constants = require('../table/constants');
4
+
5
+ async function addColumn(tableName, columnName, column) {
6
+ await this.client.exec({
7
+ sql: `ALTER TABLE ${tableName} ADD COLUMN ${columnName} ${column.toString()};`
8
+ });
9
+ if (!this.tables[tableName]) return this;
10
+ this.tables[tableName].columns[columnName] = column;
11
+ return this;
12
+ }
13
+ async function renameColumn(tableName, oldName, newName) {
14
+ if (this.dialect === constants.Dialect.SQLITE) {
15
+ throw new Error("SQLite does not support RENAME COLUMN natively.");
16
+ }
17
+ await this.client.exec({
18
+ sql: `ALTER TABLE ${tableName} RENAME COLUMN ${oldName} TO ${newName};`
19
+ });
20
+ if (!this.tables[tableName]) return this;
21
+ this.tables[tableName].columns[newName] = this.tables[tableName].columns[oldName];
22
+ delete this.tables[tableName].columns[oldName];
23
+ return this;
24
+ }
25
+ async function dropColumn(tableName, columnName) {
26
+ if (this.dialect === constants.Dialect.SQLITE) {
27
+ throw new Error("SQLite does not support DROP COLUMN natively.");
28
+ }
29
+ await this.client.exec({
30
+ sql: `ALTER TABLE ${tableName} DROP COLUMN ${columnName};`
31
+ });
32
+ if (!this.tables[tableName]) return this;
33
+ delete this.tables[tableName].columns[columnName];
34
+ return this;
35
+ }
36
+
37
+ exports.addColumn = addColumn;
38
+ exports.dropColumn = dropColumn;
39
+ exports.renameColumn = renameColumn;
@@ -0,0 +1,9 @@
1
+ export { C as ColumnAlterationContract, T as TableAlterationContract } from '../index-2jl8MRfX.cjs';
2
+ import '../column/index.cjs';
3
+ import '../column/constants.cjs';
4
+ import '../index-CnQVnCEI.cjs';
5
+ import '../table/constants.cjs';
6
+ import 'bun';
7
+ import '../query/constants.cjs';
8
+ import '../column/types.cjs';
9
+ import '../types.cjs';
@@ -0,0 +1,2 @@
1
+ 'use strict';
2
+
@@ -0,0 +1,9 @@
1
+ import 'bun';
2
+ import '../column/index.cjs';
3
+ import '../index-CnQVnCEI.cjs';
4
+ import '../query/constants.cjs';
5
+ import '../table/constants.cjs';
6
+ export { D as Database } from '../index-2jl8MRfX.cjs';
7
+ import '../column/constants.cjs';
8
+ import '../column/types.cjs';
9
+ import '../types.cjs';
@@ -0,0 +1,107 @@
1
+ 'use strict';
2
+
3
+ require('../table');
4
+ var constants = require('../table/constants');
5
+ var alter = require('./alter');
6
+ var column = require('./column');
7
+ var table = require('./table');
8
+ var wrapper = require('./wrapper');
9
+
10
+ class Database {
11
+ hooks;
12
+ dialect;
13
+ defintion;
14
+ tables;
15
+ client;
16
+ createTable;
17
+ renameTable;
18
+ dropTable;
19
+ addColumn;
20
+ renameColumn;
21
+ dropColumn;
22
+ alterColumnType;
23
+ setColumnDefault;
24
+ dropColumnDefault;
25
+ setColumnNotNull;
26
+ dropColumnNotNull;
27
+ constructor(options) {
28
+ this.hooks = {};
29
+ this.dialect = options.dialect;
30
+ this.tables = options.tables ?? {};
31
+ this.defintion = {
32
+ dialect: options.dialect,
33
+ config: options.config
34
+ };
35
+ this.client = this.createClient(options);
36
+ if (options.tables) {
37
+ for (const tableName in options.tables) {
38
+ options.tables[tableName].client = this.client;
39
+ options.tables[tableName].setDialect(this.dialect);
40
+ }
41
+ }
42
+ this.createTable = table.createTable.bind(this);
43
+ this.renameTable = table.renameTable.bind(this);
44
+ this.dropTable = table.dropTable.bind(this);
45
+ this.addColumn = column.addColumn.bind(this);
46
+ this.renameColumn = column.renameColumn.bind(this);
47
+ this.dropColumn = column.dropColumn.bind(this);
48
+ this.alterColumnType = alter.alterColumnType.bind(
49
+ this
50
+ );
51
+ this.setColumnDefault = alter.setColumnDefault.bind(
52
+ this
53
+ );
54
+ this.dropColumnDefault = alter.dropColumnDefault.bind(
55
+ this
56
+ );
57
+ this.setColumnNotNull = alter.setColumnDefault.bind(
58
+ this
59
+ );
60
+ this.dropColumnNotNull = alter.dropColumnNotNull.bind(
61
+ this
62
+ );
63
+ }
64
+ createClient(options) {
65
+ switch (options.dialect) {
66
+ case constants.Dialect.SQLITE:
67
+ return new wrapper.DatabaseSqlite(options.config);
68
+ case constants.Dialect.POSTGRES:
69
+ return new wrapper.DatabasePsql(options.config);
70
+ case constants.Dialect.MYSQL:
71
+ return new wrapper.DatabaseMysql(options.config);
72
+ default:
73
+ throw new Error(`Dialect ${options.dialect} is not supported`);
74
+ }
75
+ }
76
+ table(tableName) {
77
+ if (!this.tables[tableName]) {
78
+ throw new Error(`Table ${tableName} does not exist`);
79
+ }
80
+ const table = this.tables[tableName];
81
+ const query = table.query();
82
+ query.hooks.before = this.hooks.before;
83
+ query.hooks.after = this.hooks.after;
84
+ return query;
85
+ }
86
+ addHook(type, fn) {
87
+ if (!this.hooks[type]) {
88
+ this.hooks[type] = /* @__PURE__ */ new Set();
89
+ }
90
+ this.hooks[type].add(fn);
91
+ return this;
92
+ }
93
+ removeHook(type, fn) {
94
+ if (this.hooks[type]) {
95
+ this.hooks[type].delete(fn);
96
+ }
97
+ return this;
98
+ }
99
+ async transaction(fn) {
100
+ return this.client.transaction(fn);
101
+ }
102
+ static define(options) {
103
+ return new Database(options);
104
+ }
105
+ }
106
+
107
+ exports.Database = Database;
@@ -0,0 +1,22 @@
1
+ import { D as Database } from '../index-2jl8MRfX.cjs';
2
+ import { Column } from '../column/index.cjs';
3
+ import { T as Table, D as DatabaseDefinition, a as TimestampOptions, M as MergeTimestampParanoid } from '../index-CnQVnCEI.cjs';
4
+ import { Dialect } from '../table/constants.cjs';
5
+ import 'bun';
6
+ import '../query/constants.cjs';
7
+ import '../column/constants.cjs';
8
+ import '../column/types.cjs';
9
+ import '../types.cjs';
10
+
11
+ declare function createTable<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, 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>, NewTables extends Tables & {
12
+ [K in TableName]: Table<TableName, FinalColumns, DbDialect, CreatedAt, UpdatedAt, Timestamp, Paranoid>;
13
+ }>(this: Database<DbDialect, Tables, Definition>, tableName: TableName, columns: Columns, options?: {
14
+ paranoid?: Paranoid;
15
+ timestamp?: Timestamp;
16
+ }): Promise<Database<DbDialect, NewTables, Definition>>;
17
+ declare function renameTable<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, OldName extends (keyof Tables & string) | (string & {}), NewName extends string, NewTables extends Omit<Tables, OldName> & {
18
+ [K in NewName]: Tables[OldName];
19
+ }>(this: Database<DbDialect, Tables, Definition>, oldName: OldName, newName: NewName): Promise<Database<DbDialect, NewTables, Definition>>;
20
+ declare function dropTable<DbDialect extends Dialect, Tables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<DatabaseDefinition<DbDialect>>, TableName extends (keyof Tables & string) | (string & {})>(this: Database<DbDialect, Tables, Definition>, tableName: TableName): Promise<Database<DbDialect, Omit<Tables, TableName>, Definition>>;
21
+
22
+ export { createTable, dropTable, renameTable };
@@ -0,0 +1,49 @@
1
+ 'use strict';
2
+
3
+ var table = require('../table');
4
+
5
+ async function createTable(tableName, columns, options) {
6
+ const table$1 = table.Table.define({
7
+ name: tableName,
8
+ dialect: this.dialect,
9
+ columns,
10
+ ...options
11
+ });
12
+ table$1.client = this.client;
13
+ this.tables[tableName] = table$1;
14
+ if (!this?.client) {
15
+ throw new Error("Database not connected");
16
+ }
17
+ while (this.client.status === "connecting") {
18
+ await new Promise((resolve) => setTimeout(resolve, 100));
19
+ }
20
+ await table$1.create({
21
+ db: this.client
22
+ });
23
+ return this;
24
+ }
25
+ async function renameTable(oldName, newName) {
26
+ await this.client.exec({
27
+ sql: `ALTER TABLE ${oldName} RENAME TO ${newName};`
28
+ });
29
+ this.tables[newName] = this.tables[oldName];
30
+ delete this.tables[oldName];
31
+ return this;
32
+ }
33
+ async function dropTable(tableName) {
34
+ if (!this.tables[tableName]) {
35
+ await this.client.exec({
36
+ sql: `DROP TABLE IF EXISTS ${tableName};`
37
+ });
38
+ return this;
39
+ }
40
+ await this.tables[tableName].drop({
41
+ db: this.client
42
+ });
43
+ delete this.tables[tableName];
44
+ return this;
45
+ }
46
+
47
+ exports.createTable = createTable;
48
+ exports.dropTable = dropTable;
49
+ exports.renameTable = renameTable;
@@ -0,0 +1,8 @@
1
+ import 'bun';
2
+ import '../column/index.cjs';
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-CnQVnCEI.cjs';
4
+ import '../table/constants.cjs';
5
+ import '../column/constants.cjs';
6
+ import '../column/types.cjs';
7
+ import '../types.cjs';
8
+ import '../query/constants.cjs';
@@ -0,0 +1,2 @@
1
+ 'use strict';
2
+
@@ -0,0 +1,32 @@
1
+ import { SQL, TransactionSQL } from 'bun';
2
+ import { Dialect } from '../table/constants.cjs';
3
+ import { S as SqlConfigMapping, b as DatabaseDialect, c as DatabaseExecOptions, P as PostgresConfig, d as SqliteConfig } from '../index-CnQVnCEI.cjs';
4
+ import '../column/index.cjs';
5
+ import '../column/constants.cjs';
6
+ import '../column/types.cjs';
7
+ import '../types.cjs';
8
+ import '../query/constants.cjs';
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,87 @@
1
+ 'use strict';
2
+
3
+ var bun = require('bun');
4
+ var constants = require('../table/constants');
5
+
6
+ class BaseSql {
7
+ dialect;
8
+ options;
9
+ client;
10
+ status;
11
+ constructor(dialect, options) {
12
+ this.dialect = dialect;
13
+ this.options = options;
14
+ this.status = "connecting";
15
+ this.client = new bun.SQL({
16
+ ...options,
17
+ adapter: dialect,
18
+ onconnect: () => {
19
+ this.status = "connected";
20
+ },
21
+ onclose: () => {
22
+ this.status = "disconnected";
23
+ }
24
+ });
25
+ this.connect();
26
+ }
27
+ async connect() {
28
+ await this.client.connect();
29
+ return this;
30
+ }
31
+ async disconnect() {
32
+ await this.client.close();
33
+ return this;
34
+ }
35
+ async exec(options) {
36
+ const client = options.tx || this.client;
37
+ if (!client) {
38
+ throw new Error("Database not connected");
39
+ }
40
+ if (!options.params) {
41
+ return client.unsafe(options.sql);
42
+ }
43
+ const params = (options.params ?? []).map((param) => {
44
+ if (param === null || typeof param === "string" || typeof param === "number" || typeof param === "boolean" || typeof param === "bigint") {
45
+ return param;
46
+ }
47
+ if (param === void 0) {
48
+ return null;
49
+ }
50
+ if (param instanceof Date) {
51
+ return param.toISOString();
52
+ }
53
+ try {
54
+ return JSON.stringify(param);
55
+ } catch {
56
+ return null;
57
+ }
58
+ });
59
+ return client.unsafe(options.sql, params);
60
+ }
61
+ async transaction(fn) {
62
+ return this.client.transaction(fn);
63
+ }
64
+ async distributed(name, fn) {
65
+ return this.client.distributed(name, fn);
66
+ }
67
+ }
68
+ class DatabasePsql extends BaseSql {
69
+ constructor(options) {
70
+ super(constants.Dialect.POSTGRES, options);
71
+ }
72
+ }
73
+ class DatabaseMysql extends BaseSql {
74
+ constructor(options) {
75
+ super(constants.Dialect.MYSQL, options);
76
+ }
77
+ }
78
+ class DatabaseSqlite extends BaseSql {
79
+ constructor(options) {
80
+ super(constants.Dialect.SQLITE, options);
81
+ }
82
+ }
83
+
84
+ exports.BaseSql = BaseSql;
85
+ exports.DatabaseMysql = DatabaseMysql;
86
+ exports.DatabasePsql = DatabasePsql;
87
+ exports.DatabaseSqlite = DatabaseSqlite;