@arikajs/database 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +333 -0
  3. package/dist/Connections/MySQLConnection.d.ts +39 -0
  4. package/dist/Connections/MySQLConnection.d.ts.map +1 -0
  5. package/dist/Connections/MySQLConnection.js +91 -0
  6. package/dist/Connections/MySQLConnection.js.map +1 -0
  7. package/dist/Connections/PostgreSQLConnection.d.ts +39 -0
  8. package/dist/Connections/PostgreSQLConnection.d.ts.map +1 -0
  9. package/dist/Connections/PostgreSQLConnection.js +85 -0
  10. package/dist/Connections/PostgreSQLConnection.js.map +1 -0
  11. package/dist/Connections/SQLiteConnection.d.ts +51 -0
  12. package/dist/Connections/SQLiteConnection.d.ts.map +1 -0
  13. package/dist/Connections/SQLiteConnection.js +111 -0
  14. package/dist/Connections/SQLiteConnection.js.map +1 -0
  15. package/dist/Contracts/Database.d.ts +131 -0
  16. package/dist/Contracts/Database.d.ts.map +1 -0
  17. package/dist/Contracts/Database.js +3 -0
  18. package/dist/Contracts/Database.js.map +1 -0
  19. package/dist/Contracts/Schema.d.ts +124 -0
  20. package/dist/Contracts/Schema.d.ts.map +1 -0
  21. package/dist/Contracts/Schema.js +3 -0
  22. package/dist/Contracts/Schema.js.map +1 -0
  23. package/dist/Database.d.ts +38 -0
  24. package/dist/Database.d.ts.map +1 -0
  25. package/dist/Database.js +55 -0
  26. package/dist/Database.js.map +1 -0
  27. package/dist/DatabaseManager.d.ts +36 -0
  28. package/dist/DatabaseManager.d.ts.map +1 -0
  29. package/dist/DatabaseManager.js +126 -0
  30. package/dist/DatabaseManager.js.map +1 -0
  31. package/dist/Migrations/Migration.d.ts +17 -0
  32. package/dist/Migrations/Migration.d.ts.map +1 -0
  33. package/dist/Migrations/Migration.js +10 -0
  34. package/dist/Migrations/Migration.js.map +1 -0
  35. package/dist/Migrations/Migrator.d.ts +51 -0
  36. package/dist/Migrations/Migrator.d.ts.map +1 -0
  37. package/dist/Migrations/Migrator.js +166 -0
  38. package/dist/Migrations/Migrator.js.map +1 -0
  39. package/dist/Model/Model.d.ts +309 -0
  40. package/dist/Model/Model.d.ts.map +1 -0
  41. package/dist/Model/Model.js +607 -0
  42. package/dist/Model/Model.js.map +1 -0
  43. package/dist/Model/Relations.d.ts +53 -0
  44. package/dist/Model/Relations.d.ts.map +1 -0
  45. package/dist/Model/Relations.js +124 -0
  46. package/dist/Model/Relations.js.map +1 -0
  47. package/dist/Model/SoftDeletes.d.ts +24 -0
  48. package/dist/Model/SoftDeletes.d.ts.map +1 -0
  49. package/dist/Model/SoftDeletes.js +95 -0
  50. package/dist/Model/SoftDeletes.js.map +1 -0
  51. package/dist/Query/QueryBuilder.d.ts +94 -0
  52. package/dist/Query/QueryBuilder.d.ts.map +1 -0
  53. package/dist/Query/QueryBuilder.js +276 -0
  54. package/dist/Query/QueryBuilder.js.map +1 -0
  55. package/dist/Schema/Grammars/Grammar.d.ts +27 -0
  56. package/dist/Schema/Grammars/Grammar.d.ts.map +1 -0
  57. package/dist/Schema/Grammars/Grammar.js +25 -0
  58. package/dist/Schema/Grammars/Grammar.js.map +1 -0
  59. package/dist/Schema/Grammars/MySQLGrammar.d.ts +13 -0
  60. package/dist/Schema/Grammars/MySQLGrammar.d.ts.map +1 -0
  61. package/dist/Schema/Grammars/MySQLGrammar.js +78 -0
  62. package/dist/Schema/Grammars/MySQLGrammar.js.map +1 -0
  63. package/dist/Schema/Grammars/PostgreSQLGrammar.d.ts +13 -0
  64. package/dist/Schema/Grammars/PostgreSQLGrammar.d.ts.map +1 -0
  65. package/dist/Schema/Grammars/PostgreSQLGrammar.js +57 -0
  66. package/dist/Schema/Grammars/PostgreSQLGrammar.js.map +1 -0
  67. package/dist/Schema/Grammars/SQLiteGrammar.d.ts +13 -0
  68. package/dist/Schema/Grammars/SQLiteGrammar.d.ts.map +1 -0
  69. package/dist/Schema/Grammars/SQLiteGrammar.js +53 -0
  70. package/dist/Schema/Grammars/SQLiteGrammar.js.map +1 -0
  71. package/dist/Schema/Schema.d.ts +120 -0
  72. package/dist/Schema/Schema.d.ts.map +1 -0
  73. package/dist/Schema/Schema.js +226 -0
  74. package/dist/Schema/Schema.js.map +1 -0
  75. package/dist/Schema/SchemaBuilder.d.ts +24 -0
  76. package/dist/Schema/SchemaBuilder.d.ts.map +1 -0
  77. package/dist/Schema/SchemaBuilder.js +49 -0
  78. package/dist/Schema/SchemaBuilder.js.map +1 -0
  79. package/dist/Seeders/SeedRunner.d.ts +22 -0
  80. package/dist/Seeders/SeedRunner.d.ts.map +1 -0
  81. package/dist/Seeders/SeedRunner.js +72 -0
  82. package/dist/Seeders/SeedRunner.js.map +1 -0
  83. package/dist/Seeders/Seeder.d.ts +11 -0
  84. package/dist/Seeders/Seeder.d.ts.map +1 -0
  85. package/dist/Seeders/Seeder.js +10 -0
  86. package/dist/Seeders/Seeder.js.map +1 -0
  87. package/dist/index.d.ts +19 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +52 -0
  90. package/dist/index.js.map +1 -0
  91. package/package.json +53 -0
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Grammar = void 0;
4
+ /**
5
+ * Base grammar class for schema building
6
+ */
7
+ class Grammar {
8
+ /**
9
+ * Get the default value SQL
10
+ */
11
+ getDefault(column) {
12
+ if (column.default_ !== undefined) {
13
+ if (typeof column.default_ === 'string') {
14
+ return ` DEFAULT '${column.default_}'`;
15
+ }
16
+ if (typeof column.default_ === 'boolean') {
17
+ return ` DEFAULT ${column.default_ ? 1 : 0}`;
18
+ }
19
+ return ` DEFAULT ${column.default_}`;
20
+ }
21
+ return '';
22
+ }
23
+ }
24
+ exports.Grammar = Grammar;
25
+ //# sourceMappingURL=Grammar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grammar.js","sourceRoot":"","sources":["../../../src/Schema/Grammars/Grammar.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACH,MAAsB,OAAO;IAqBzB;;OAEG;IACO,UAAU,CAAC,MAAwB;QACzC,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACtC,OAAO,aAAa,MAAM,CAAC,QAAQ,GAAG,CAAC;YAC3C,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACvC,OAAO,YAAY,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,CAAC;YACD,OAAO,YAAY,MAAM,CAAC,QAAQ,EAAE,CAAC;QACzC,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AApCD,0BAoCC"}
@@ -0,0 +1,13 @@
1
+ import { TableBlueprint, ColumnDefinition } from '../Schema';
2
+ import { Grammar } from './Grammar';
3
+ /**
4
+ * MySQL grammar for schema building
5
+ */
6
+ export declare class MySQLGrammar extends Grammar {
7
+ compileCreate(blueprint: TableBlueprint): string;
8
+ compileDrop(tableName: string): string;
9
+ compileDropIfExists(tableName: string): string;
10
+ protected compileColumn(column: ColumnDefinition): string;
11
+ protected getType(column: ColumnDefinition): string;
12
+ }
13
+ //# sourceMappingURL=MySQLGrammar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MySQLGrammar.d.ts","sourceRoot":"","sources":["../../../src/Schema/Grammars/MySQLGrammar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;GAEG;AACH,qBAAa,YAAa,SAAQ,OAAO;IAC9B,aAAa,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM;IAgChD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAItC,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAIrD,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;IAwBzD,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;CAetD"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MySQLGrammar = void 0;
4
+ const Grammar_1 = require("./Grammar");
5
+ /**
6
+ * MySQL grammar for schema building
7
+ */
8
+ class MySQLGrammar extends Grammar_1.Grammar {
9
+ compileCreate(blueprint) {
10
+ const columns = blueprint.getColumns().map(column => this.compileColumn(column));
11
+ // Add primary keys
12
+ const primaryKeys = blueprint.getColumns()
13
+ .filter(column => column.primary)
14
+ .map(column => column.name);
15
+ if (primaryKeys.length > 0) {
16
+ columns.push(`PRIMARY KEY (${primaryKeys.join(', ')})`);
17
+ }
18
+ // Add unique indexes
19
+ blueprint.getIndexes().forEach(index => {
20
+ if (index.unique) {
21
+ columns.push(`UNIQUE INDEX ${index.name || ''} (${index.columns.join(', ')})`);
22
+ }
23
+ else {
24
+ columns.push(`INDEX ${index.name || ''} (${index.columns.join(', ')})`);
25
+ }
26
+ });
27
+ // Add foreign keys
28
+ blueprint.getForeignKeys().forEach(fk => {
29
+ let sql = `CONSTRAINT fk_${blueprint.tableName}_${fk.column} FOREIGN KEY (${fk.column}) REFERENCES ${fk.referencedTable}(${fk.referencedColumn})`;
30
+ if (fk.onDeleteAction)
31
+ sql += ` ON DELETE ${fk.onDeleteAction.toUpperCase()}`;
32
+ if (fk.onUpdateAction)
33
+ sql += ` ON UPDATE ${fk.onUpdateAction.toUpperCase()}`;
34
+ columns.push(sql);
35
+ });
36
+ return `CREATE TABLE ${blueprint.tableName} (\n ${columns.join(',\n ')}\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci`;
37
+ }
38
+ compileDrop(tableName) {
39
+ return `DROP TABLE ${tableName}`;
40
+ }
41
+ compileDropIfExists(tableName) {
42
+ return `DROP TABLE IF EXISTS ${tableName}`;
43
+ }
44
+ compileColumn(column) {
45
+ let sql = `${column.name} ${this.getType(column)}`;
46
+ if (column.unsigned_) {
47
+ sql += ' UNSIGNED';
48
+ }
49
+ if (!column.nullable_) {
50
+ sql += ' NOT NULL';
51
+ }
52
+ sql += this.getDefault(column);
53
+ if (column.autoIncrement) {
54
+ sql += ' AUTO_INCREMENT';
55
+ }
56
+ if (column.comment_) {
57
+ sql += ` COMMENT '${column.comment_}'`;
58
+ }
59
+ return sql;
60
+ }
61
+ getType(column) {
62
+ switch (column.type) {
63
+ case 'bigInteger': return 'BIGINT';
64
+ case 'integer': return 'INT';
65
+ case 'string': return `VARCHAR(${column.length || 255})`;
66
+ case 'boolean': return 'TINYINT(1)';
67
+ case 'text': return 'TEXT';
68
+ case 'timestamp': return 'TIMESTAMP';
69
+ case 'decimal': return `DECIMAL(${column.precision || 8}, ${column.scale || 2})`;
70
+ case 'date': return 'DATE';
71
+ case 'datetime': return 'DATETIME';
72
+ case 'json': return 'JSON';
73
+ default: return 'VARCHAR(255)';
74
+ }
75
+ }
76
+ }
77
+ exports.MySQLGrammar = MySQLGrammar;
78
+ //# sourceMappingURL=MySQLGrammar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MySQLGrammar.js","sourceRoot":"","sources":["../../../src/Schema/Grammars/MySQLGrammar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { TableBlueprint, ColumnDefinition } from '../Schema';
2
+ import { Grammar } from './Grammar';
3
+ /**
4
+ * PostgreSQL grammar for schema building
5
+ */
6
+ export declare class PostgreSQLGrammar extends Grammar {
7
+ compileCreate(blueprint: TableBlueprint): string;
8
+ compileDrop(tableName: string): string;
9
+ compileDropIfExists(tableName: string): string;
10
+ protected compileColumn(column: ColumnDefinition): string;
11
+ protected getType(column: ColumnDefinition): string;
12
+ }
13
+ //# sourceMappingURL=PostgreSQLGrammar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostgreSQLGrammar.d.ts","sourceRoot":"","sources":["../../../src/Schema/Grammars/PostgreSQLGrammar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,OAAO;IACnC,aAAa,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM;IAehD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAItC,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAIrD,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;IAoBzD,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;CAetD"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PostgreSQLGrammar = void 0;
4
+ const Grammar_1 = require("./Grammar");
5
+ /**
6
+ * PostgreSQL grammar for schema building
7
+ */
8
+ class PostgreSQLGrammar extends Grammar_1.Grammar {
9
+ compileCreate(blueprint) {
10
+ const columns = blueprint.getColumns().map(column => this.compileColumn(column));
11
+ // Add primary keys
12
+ const primaryKeys = blueprint.getColumns()
13
+ .filter(column => column.primary)
14
+ .map(column => column.name);
15
+ if (primaryKeys.length > 0) {
16
+ columns.push(`PRIMARY KEY (${primaryKeys.join(', ')})`);
17
+ }
18
+ return `CREATE TABLE ${blueprint.tableName} (\n ${columns.join(',\n ')}\n)`;
19
+ }
20
+ compileDrop(tableName) {
21
+ return `DROP TABLE ${tableName}`;
22
+ }
23
+ compileDropIfExists(tableName) {
24
+ return `DROP TABLE IF EXISTS ${tableName}`;
25
+ }
26
+ compileColumn(column) {
27
+ if (column.autoIncrement) {
28
+ return `${column.name} ${column.type === 'bigInteger' ? 'BIGSERIAL' : 'SERIAL'} PRIMARY KEY`;
29
+ }
30
+ let sql = `${column.name} ${this.getType(column)}`;
31
+ if (!column.nullable_) {
32
+ sql += ' NOT NULL';
33
+ }
34
+ sql += this.getDefault(column);
35
+ if (column.unique_) {
36
+ sql += ' UNIQUE';
37
+ }
38
+ return sql;
39
+ }
40
+ getType(column) {
41
+ switch (column.type) {
42
+ case 'bigInteger': return 'BIGINT';
43
+ case 'integer': return 'INTEGER';
44
+ case 'string': return `VARCHAR(${column.length || 255})`;
45
+ case 'boolean': return 'BOOLEAN';
46
+ case 'text': return 'TEXT';
47
+ case 'timestamp': return 'TIMESTAMP';
48
+ case 'decimal': return `DECIMAL(${column.precision || 8}, ${column.scale || 2})`;
49
+ case 'date': return 'DATE';
50
+ case 'datetime': return 'TIMESTAMP';
51
+ case 'json': return 'JSONB';
52
+ default: return 'VARCHAR(255)';
53
+ }
54
+ }
55
+ }
56
+ exports.PostgreSQLGrammar = PostgreSQLGrammar;
57
+ //# sourceMappingURL=PostgreSQLGrammar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostgreSQLGrammar.js","sourceRoot":"","sources":["../../../src/Schema/Grammars/PostgreSQLGrammar.ts"],"names":[],"mappings":";;;AAEA,uCAAoC;AAEpC;;GAEG;AACH,MAAa,iBAAkB,SAAQ,iBAAO;IACnC,aAAa,CAAC,SAAyB;QAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QAEjF,mBAAmB;QACnB,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,EAAE;aACrC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;aAChC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEhC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,gBAAgB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,gBAAgB,SAAS,CAAC,SAAS,SAAS,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAClF,CAAC;IAEM,WAAW,CAAC,SAAiB;QAChC,OAAO,cAAc,SAAS,EAAE,CAAC;IACrC,CAAC;IAEM,mBAAmB,CAAC,SAAiB;QACxC,OAAO,wBAAwB,SAAS,EAAE,CAAC;IAC/C,CAAC;IAES,aAAa,CAAC,MAAwB;QAC5C,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,cAAc,CAAC;QACjG,CAAC;QAED,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAEnD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACpB,GAAG,IAAI,WAAW,CAAC;QACvB,CAAC;QAED,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAE/B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,GAAG,IAAI,SAAS,CAAC;QACrB,CAAC;QAED,OAAO,GAAG,CAAC;IACf,CAAC;IAES,OAAO,CAAC,MAAwB;QACtC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,YAAY,CAAC,CAAC,OAAO,QAAQ,CAAC;YACnC,KAAK,SAAS,CAAC,CAAC,OAAO,SAAS,CAAC;YACjC,KAAK,QAAQ,CAAC,CAAC,OAAO,WAAW,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC;YACzD,KAAK,SAAS,CAAC,CAAC,OAAO,SAAS,CAAC;YACjC,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC;YAC3B,KAAK,WAAW,CAAC,CAAC,OAAO,WAAW,CAAC;YACrC,KAAK,SAAS,CAAC,CAAC,OAAO,WAAW,MAAM,CAAC,SAAS,IAAI,CAAC,KAAK,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC;YACjF,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC;YAC3B,KAAK,UAAU,CAAC,CAAC,OAAO,WAAW,CAAC;YACpC,KAAK,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC;YAC5B,OAAO,CAAC,CAAC,OAAO,cAAc,CAAC;QACnC,CAAC;IACL,CAAC;CACJ;AA3DD,8CA2DC"}
@@ -0,0 +1,13 @@
1
+ import { TableBlueprint, ColumnDefinition } from '../Schema';
2
+ import { Grammar } from './Grammar';
3
+ /**
4
+ * SQLite grammar for schema building
5
+ */
6
+ export declare class SQLiteGrammar extends Grammar {
7
+ compileCreate(blueprint: TableBlueprint): string;
8
+ compileDrop(tableName: string): string;
9
+ compileDropIfExists(tableName: string): string;
10
+ protected compileColumn(column: ColumnDefinition): string;
11
+ protected getType(column: ColumnDefinition): string;
12
+ }
13
+ //# sourceMappingURL=SQLiteGrammar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SQLiteGrammar.d.ts","sourceRoot":"","sources":["../../../src/Schema/Grammars/SQLiteGrammar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;GAEG;AACH,qBAAa,aAAc,SAAQ,OAAO;IAC/B,aAAa,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM;IAMhD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAItC,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAIrD,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;IAuBzD,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;CAetD"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQLiteGrammar = void 0;
4
+ const Grammar_1 = require("./Grammar");
5
+ /**
6
+ * SQLite grammar for schema building
7
+ */
8
+ class SQLiteGrammar extends Grammar_1.Grammar {
9
+ compileCreate(blueprint) {
10
+ const columns = blueprint.getColumns().map(column => this.compileColumn(column));
11
+ return `CREATE TABLE ${blueprint.tableName} (\n ${columns.join(',\n ')}\n)`;
12
+ }
13
+ compileDrop(tableName) {
14
+ return `DROP TABLE ${tableName}`;
15
+ }
16
+ compileDropIfExists(tableName) {
17
+ return `DROP TABLE IF EXISTS ${tableName}`;
18
+ }
19
+ compileColumn(column) {
20
+ let sql = `${column.name} ${this.getType(column)}`;
21
+ if (column.primary) {
22
+ sql += ' PRIMARY KEY';
23
+ if (column.autoIncrement) {
24
+ sql += ' AUTOINCREMENT';
25
+ }
26
+ }
27
+ if (!column.nullable_) {
28
+ sql += ' NOT NULL';
29
+ }
30
+ if (column.unique_) {
31
+ sql += ' UNIQUE';
32
+ }
33
+ sql += this.getDefault(column);
34
+ return sql;
35
+ }
36
+ getType(column) {
37
+ switch (column.type) {
38
+ case 'bigInteger': return 'INTEGER';
39
+ case 'integer': return 'INTEGER';
40
+ case 'string': return 'TEXT';
41
+ case 'boolean': return 'INTEGER';
42
+ case 'text': return 'TEXT';
43
+ case 'timestamp': return 'DATETIME';
44
+ case 'decimal': return 'NUMERIC';
45
+ case 'date': return 'DATE';
46
+ case 'datetime': return 'DATETIME';
47
+ case 'json': return 'TEXT';
48
+ default: return 'TEXT';
49
+ }
50
+ }
51
+ }
52
+ exports.SQLiteGrammar = SQLiteGrammar;
53
+ //# sourceMappingURL=SQLiteGrammar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SQLiteGrammar.js","sourceRoot":"","sources":["../../../src/Schema/Grammars/SQLiteGrammar.ts"],"names":[],"mappings":";;;AAEA,uCAAoC;AAEpC;;GAEG;AACH,MAAa,aAAc,SAAQ,iBAAO;IAC/B,aAAa,CAAC,SAAyB;QAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QAEjF,OAAO,gBAAgB,SAAS,CAAC,SAAS,SAAS,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAClF,CAAC;IAEM,WAAW,CAAC,SAAiB;QAChC,OAAO,cAAc,SAAS,EAAE,CAAC;IACrC,CAAC;IAEM,mBAAmB,CAAC,SAAiB;QACxC,OAAO,wBAAwB,SAAS,EAAE,CAAC;IAC/C,CAAC;IAES,aAAa,CAAC,MAAwB;QAC5C,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAEnD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,GAAG,IAAI,cAAc,CAAC;YACtB,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;gBACvB,GAAG,IAAI,gBAAgB,CAAC;YAC5B,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACpB,GAAG,IAAI,WAAW,CAAC;QACvB,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,GAAG,IAAI,SAAS,CAAC;QACrB,CAAC;QAED,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAE/B,OAAO,GAAG,CAAC;IACf,CAAC;IAES,OAAO,CAAC,MAAwB;QACtC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,YAAY,CAAC,CAAC,OAAO,SAAS,CAAC;YACpC,KAAK,SAAS,CAAC,CAAC,OAAO,SAAS,CAAC;YACjC,KAAK,QAAQ,CAAC,CAAC,OAAO,MAAM,CAAC;YAC7B,KAAK,SAAS,CAAC,CAAC,OAAO,SAAS,CAAC;YACjC,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC;YAC3B,KAAK,WAAW,CAAC,CAAC,OAAO,UAAU,CAAC;YACpC,KAAK,SAAS,CAAC,CAAC,OAAO,SAAS,CAAC;YACjC,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC;YAC3B,KAAK,UAAU,CAAC,CAAC,OAAO,UAAU,CAAC;YACnC,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC;YAC3B,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC;QAC3B,CAAC;IACL,CAAC;CACJ;AArDD,sCAqDC"}
@@ -0,0 +1,120 @@
1
+ import { Blueprint, ColumnDefinition as ColumnDefinitionInterface, ForeignKeyDefinition as ForeignKeyDefinitionInterface, SchemaCallback } from '../Contracts/Schema';
2
+ /**
3
+ * Column definition implementation
4
+ */
5
+ export declare class ColumnDefinition implements ColumnDefinitionInterface {
6
+ name: string;
7
+ type: string;
8
+ length?: number;
9
+ precision?: number;
10
+ scale?: number;
11
+ nullable_?: boolean;
12
+ default_?: any;
13
+ unique_?: boolean;
14
+ primary?: boolean;
15
+ autoIncrement?: boolean;
16
+ unsigned_?: boolean;
17
+ comment_?: string;
18
+ constructor(name: string, type: string);
19
+ nullable(): this;
20
+ default(value: any): this;
21
+ unique(): this;
22
+ unsigned(): this;
23
+ comment(comment: string): this;
24
+ }
25
+ /**
26
+ * Foreign key definition implementation
27
+ */
28
+ export declare class ForeignKeyDefinition implements ForeignKeyDefinitionInterface {
29
+ column: string;
30
+ referencedColumn?: string;
31
+ referencedTable?: string;
32
+ onDeleteAction?: string;
33
+ onUpdateAction?: string;
34
+ constructor(column: string);
35
+ references(column: string): this;
36
+ on(table: string): this;
37
+ onDelete(action: 'cascade' | 'set null' | 'restrict' | 'no action'): this;
38
+ onUpdate(action: 'cascade' | 'set null' | 'restrict' | 'no action'): this;
39
+ }
40
+ /**
41
+ * Table blueprint implementation
42
+ */
43
+ export declare class TableBlueprint implements Blueprint {
44
+ tableName: string;
45
+ private columns;
46
+ private foreignKeys;
47
+ private indexes;
48
+ private dropColumns;
49
+ private dropIndexes;
50
+ constructor(tableName: string);
51
+ id(name?: string): ColumnDefinition;
52
+ string(name: string, length?: number): ColumnDefinition;
53
+ integer(name: string): ColumnDefinition;
54
+ bigInteger(name: string): ColumnDefinition;
55
+ boolean(name: string): ColumnDefinition;
56
+ text(name: string): ColumnDefinition;
57
+ timestamp(name: string): ColumnDefinition;
58
+ timestamps(): void;
59
+ decimal(name: string, precision?: number, scale?: number): ColumnDefinition;
60
+ date(name: string): ColumnDefinition;
61
+ datetime(name: string): ColumnDefinition;
62
+ json(name: string): ColumnDefinition;
63
+ foreign(column: string): ForeignKeyDefinition;
64
+ index(columns: string | string[], name?: string): void;
65
+ unique(columns: string | string[], name?: string): void;
66
+ dropColumn(name: string): void;
67
+ dropIndex(name: string): void;
68
+ /**
69
+ * Get all columns
70
+ */
71
+ getColumns(): ColumnDefinition[];
72
+ /**
73
+ * Get all foreign keys
74
+ */
75
+ getForeignKeys(): ForeignKeyDefinition[];
76
+ /**
77
+ * Get all indexes
78
+ */
79
+ getIndexes(): Array<{
80
+ columns: string[];
81
+ name?: string;
82
+ unique: boolean;
83
+ }>;
84
+ /**
85
+ * Get columns to drop
86
+ */
87
+ getDropColumns(): string[];
88
+ /**
89
+ * Get indexes to drop
90
+ */
91
+ getDropIndexes(): string[];
92
+ }
93
+ /**
94
+ * Schema builder
95
+ */
96
+ export declare class Schema {
97
+ /**
98
+ * Create a new table
99
+ */
100
+ static create(tableName: string, callback: SchemaCallback): TableBlueprint;
101
+ /**
102
+ * Modify an existing table
103
+ */
104
+ static table(tableName: string, callback: SchemaCallback): TableBlueprint;
105
+ /**
106
+ * Drop a table
107
+ */
108
+ static drop(tableName: string): {
109
+ tableName: string;
110
+ action: 'drop';
111
+ };
112
+ /**
113
+ * Drop a table if it exists
114
+ */
115
+ static dropIfExists(tableName: string): {
116
+ tableName: string;
117
+ action: 'dropIfExists';
118
+ };
119
+ }
120
+ //# sourceMappingURL=Schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/Schema/Schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Schema = exports.TableBlueprint = exports.ForeignKeyDefinition = exports.ColumnDefinition = void 0;
4
+ /**
5
+ * Column definition implementation
6
+ */
7
+ class ColumnDefinition {
8
+ constructor(name, type) {
9
+ this.nullable_ = false;
10
+ this.unique_ = false;
11
+ this.primary = false;
12
+ this.autoIncrement = false;
13
+ this.unsigned_ = false;
14
+ this.name = name;
15
+ this.type = type;
16
+ }
17
+ nullable() {
18
+ this.nullable_ = true;
19
+ return this;
20
+ }
21
+ default(value) {
22
+ this.default_ = value;
23
+ return this;
24
+ }
25
+ unique() {
26
+ this.unique_ = true;
27
+ return this;
28
+ }
29
+ unsigned() {
30
+ this.unsigned_ = true;
31
+ return this;
32
+ }
33
+ comment(comment) {
34
+ this.comment_ = comment;
35
+ return this;
36
+ }
37
+ }
38
+ exports.ColumnDefinition = ColumnDefinition;
39
+ /**
40
+ * Foreign key definition implementation
41
+ */
42
+ class ForeignKeyDefinition {
43
+ constructor(column) {
44
+ this.column = column;
45
+ }
46
+ references(column) {
47
+ this.referencedColumn = column;
48
+ return this;
49
+ }
50
+ on(table) {
51
+ this.referencedTable = table;
52
+ return this;
53
+ }
54
+ onDelete(action) {
55
+ this.onDeleteAction = action;
56
+ return this;
57
+ }
58
+ onUpdate(action) {
59
+ this.onUpdateAction = action;
60
+ return this;
61
+ }
62
+ }
63
+ exports.ForeignKeyDefinition = ForeignKeyDefinition;
64
+ /**
65
+ * Table blueprint implementation
66
+ */
67
+ class TableBlueprint {
68
+ constructor(tableName) {
69
+ this.tableName = tableName;
70
+ this.columns = [];
71
+ this.foreignKeys = [];
72
+ this.indexes = [];
73
+ this.dropColumns = [];
74
+ this.dropIndexes = [];
75
+ }
76
+ id(name = 'id') {
77
+ const column = new ColumnDefinition(name, 'bigInteger');
78
+ column.primary = true;
79
+ column.autoIncrement = true;
80
+ column.unsigned_ = true;
81
+ this.columns.push(column);
82
+ return column;
83
+ }
84
+ string(name, length = 255) {
85
+ const column = new ColumnDefinition(name, 'string');
86
+ column.length = length;
87
+ this.columns.push(column);
88
+ return column;
89
+ }
90
+ integer(name) {
91
+ const column = new ColumnDefinition(name, 'integer');
92
+ this.columns.push(column);
93
+ return column;
94
+ }
95
+ bigInteger(name) {
96
+ const column = new ColumnDefinition(name, 'bigInteger');
97
+ this.columns.push(column);
98
+ return column;
99
+ }
100
+ boolean(name) {
101
+ const column = new ColumnDefinition(name, 'boolean');
102
+ this.columns.push(column);
103
+ return column;
104
+ }
105
+ text(name) {
106
+ const column = new ColumnDefinition(name, 'text');
107
+ this.columns.push(column);
108
+ return column;
109
+ }
110
+ timestamp(name) {
111
+ const column = new ColumnDefinition(name, 'timestamp');
112
+ this.columns.push(column);
113
+ return column;
114
+ }
115
+ timestamps() {
116
+ this.timestamp('created_at').nullable();
117
+ this.timestamp('updated_at').nullable();
118
+ }
119
+ decimal(name, precision = 8, scale = 2) {
120
+ const column = new ColumnDefinition(name, 'decimal');
121
+ column.precision = precision;
122
+ column.scale = scale;
123
+ this.columns.push(column);
124
+ return column;
125
+ }
126
+ date(name) {
127
+ const column = new ColumnDefinition(name, 'date');
128
+ this.columns.push(column);
129
+ return column;
130
+ }
131
+ datetime(name) {
132
+ const column = new ColumnDefinition(name, 'datetime');
133
+ this.columns.push(column);
134
+ return column;
135
+ }
136
+ json(name) {
137
+ const column = new ColumnDefinition(name, 'json');
138
+ this.columns.push(column);
139
+ return column;
140
+ }
141
+ foreign(column) {
142
+ const foreignKey = new ForeignKeyDefinition(column);
143
+ this.foreignKeys.push(foreignKey);
144
+ return foreignKey;
145
+ }
146
+ index(columns, name) {
147
+ const columnArray = Array.isArray(columns) ? columns : [columns];
148
+ this.indexes.push({ columns: columnArray, name, unique: false });
149
+ }
150
+ unique(columns, name) {
151
+ const columnArray = Array.isArray(columns) ? columns : [columns];
152
+ this.indexes.push({ columns: columnArray, name, unique: true });
153
+ }
154
+ dropColumn(name) {
155
+ this.dropColumns.push(name);
156
+ }
157
+ dropIndex(name) {
158
+ this.dropIndexes.push(name);
159
+ }
160
+ /**
161
+ * Get all columns
162
+ */
163
+ getColumns() {
164
+ return this.columns;
165
+ }
166
+ /**
167
+ * Get all foreign keys
168
+ */
169
+ getForeignKeys() {
170
+ return this.foreignKeys;
171
+ }
172
+ /**
173
+ * Get all indexes
174
+ */
175
+ getIndexes() {
176
+ return this.indexes;
177
+ }
178
+ /**
179
+ * Get columns to drop
180
+ */
181
+ getDropColumns() {
182
+ return this.dropColumns;
183
+ }
184
+ /**
185
+ * Get indexes to drop
186
+ */
187
+ getDropIndexes() {
188
+ return this.dropIndexes;
189
+ }
190
+ }
191
+ exports.TableBlueprint = TableBlueprint;
192
+ /**
193
+ * Schema builder
194
+ */
195
+ class Schema {
196
+ /**
197
+ * Create a new table
198
+ */
199
+ static create(tableName, callback) {
200
+ const blueprint = new TableBlueprint(tableName);
201
+ callback(blueprint);
202
+ return blueprint;
203
+ }
204
+ /**
205
+ * Modify an existing table
206
+ */
207
+ static table(tableName, callback) {
208
+ const blueprint = new TableBlueprint(tableName);
209
+ callback(blueprint);
210
+ return blueprint;
211
+ }
212
+ /**
213
+ * Drop a table
214
+ */
215
+ static drop(tableName) {
216
+ return { tableName, action: 'drop' };
217
+ }
218
+ /**
219
+ * Drop a table if it exists
220
+ */
221
+ static dropIfExists(tableName) {
222
+ return { tableName, action: 'dropIfExists' };
223
+ }
224
+ }
225
+ exports.Schema = Schema;
226
+ //# sourceMappingURL=Schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../src/Schema/Schema.ts"],"names":[],"mappings":"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"}