@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,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BelongsToMany = exports.BelongsTo = exports.HasMany = exports.HasOne = exports.Relation = void 0;
4
+ const Database_1 = require("../Database");
5
+ /**
6
+ * Base class for all relationship types
7
+ */
8
+ class Relation {
9
+ constructor(related, parent) {
10
+ this.related = related;
11
+ this.parent = parent;
12
+ }
13
+ }
14
+ exports.Relation = Relation;
15
+ /**
16
+ * Has One relationship
17
+ */
18
+ class HasOne extends Relation {
19
+ constructor(related, parent, foreignKey, localKey = 'id') {
20
+ super(related, parent);
21
+ this.foreignKey = foreignKey;
22
+ this.localKey = localKey;
23
+ }
24
+ async get() {
25
+ const parentKeyValue = this.parent[this.localKey];
26
+ if (!parentKeyValue) {
27
+ return null;
28
+ }
29
+ return await this.related
30
+ .where(this.foreignKey, parentKeyValue)
31
+ .first();
32
+ }
33
+ query() {
34
+ const parentKeyValue = this.parent[this.localKey];
35
+ return this.related.query().where(this.foreignKey, parentKeyValue);
36
+ }
37
+ }
38
+ exports.HasOne = HasOne;
39
+ /**
40
+ * Has Many relationship
41
+ */
42
+ class HasMany extends Relation {
43
+ constructor(related, parent, foreignKey, localKey = 'id') {
44
+ super(related, parent);
45
+ this.foreignKey = foreignKey;
46
+ this.localKey = localKey;
47
+ }
48
+ async get() {
49
+ const parentKeyValue = this.parent[this.localKey];
50
+ if (!parentKeyValue) {
51
+ return [];
52
+ }
53
+ return await this.related
54
+ .where(this.foreignKey, parentKeyValue)
55
+ .get();
56
+ }
57
+ query() {
58
+ const parentKeyValue = this.parent[this.localKey];
59
+ return this.related.query().where(this.foreignKey, parentKeyValue);
60
+ }
61
+ }
62
+ exports.HasMany = HasMany;
63
+ /**
64
+ * Belongs To relationship
65
+ */
66
+ class BelongsTo extends Relation {
67
+ constructor(related, parent, foreignKey, ownerKey = 'id') {
68
+ super(related, parent);
69
+ this.foreignKey = foreignKey;
70
+ this.ownerKey = ownerKey;
71
+ }
72
+ async get() {
73
+ const foreignKeyValue = this.parent[this.foreignKey];
74
+ if (!foreignKeyValue) {
75
+ return null;
76
+ }
77
+ return await this.related
78
+ .where(this.ownerKey, foreignKeyValue)
79
+ .first();
80
+ }
81
+ query() {
82
+ const foreignKeyValue = this.parent[this.foreignKey];
83
+ return this.related.query().where(this.ownerKey, foreignKeyValue);
84
+ }
85
+ }
86
+ exports.BelongsTo = BelongsTo;
87
+ /**
88
+ * Belongs To Many relationship (many-to-many)
89
+ */
90
+ class BelongsToMany extends Relation {
91
+ constructor(related, parent, pivotTable, foreignPivotKey, relatedPivotKey, parentKey = 'id', relatedKey = 'id') {
92
+ super(related, parent);
93
+ this.pivotTable = pivotTable;
94
+ this.foreignPivotKey = foreignPivotKey;
95
+ this.relatedPivotKey = relatedPivotKey;
96
+ this.parentKey = parentKey;
97
+ this.relatedKey = relatedKey;
98
+ }
99
+ async get() {
100
+ const parentKeyValue = this.parent[this.parentKey];
101
+ if (!parentKeyValue) {
102
+ return [];
103
+ }
104
+ const relatedTable = this.related.table;
105
+ const connection = await Database_1.Database.connection(this.related.connection);
106
+ // Build the query with a join
107
+ const sql = `
108
+ SELECT ${relatedTable}.*
109
+ FROM ${relatedTable}
110
+ INNER JOIN ${this.pivotTable}
111
+ ON ${relatedTable}.${this.relatedKey} = ${this.pivotTable}.${this.relatedPivotKey}
112
+ WHERE ${this.pivotTable}.${this.foreignPivotKey} = ?
113
+ `;
114
+ const results = await connection.query(sql, [parentKeyValue]);
115
+ // Hydrate the results into model instances
116
+ return results.map((data) => {
117
+ const instance = new this.related();
118
+ Object.assign(instance, data);
119
+ return instance;
120
+ });
121
+ }
122
+ }
123
+ exports.BelongsToMany = BelongsToMany;
124
+ //# sourceMappingURL=Relations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Relations.js","sourceRoot":"","sources":["../../src/Model/Relations.ts"],"names":[],"mappings":";;;AACA,0CAAuC;AAEvC;;GAEG;AACH,MAAsB,QAAQ;IAC1B,YACc,OAAqB,EACrB,MAAa;QADb,YAAO,GAAP,OAAO,CAAc;QACrB,WAAM,GAAN,MAAM,CAAO;IACvB,CAAC;CAGR;AAPD,4BAOC;AAED;;GAEG;AACH,MAAa,MAAgC,SAAQ,QAAW;IAC5D,YACI,OAAqB,EACrB,MAAa,EACH,UAAkB,EAClB,WAAmB,IAAI;QAEjC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAHb,eAAU,GAAV,UAAU,CAAQ;QAClB,aAAQ,GAAR,QAAQ,CAAe;IAGrC,CAAC;IAED,KAAK,CAAC,GAAG;QACL,MAAM,cAAc,GAAI,IAAI,CAAC,MAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE3D,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,OAAO;aACpB,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC;aACtC,KAAK,EAAc,CAAC;IAC7B,CAAC;IAED,KAAK;QACD,MAAM,cAAc,GAAI,IAAI,CAAC,MAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC1E,CAAC;CACJ;AA1BD,wBA0BC;AAED;;GAEG;AACH,MAAa,OAAiC,SAAQ,QAAW;IAC7D,YACI,OAAqB,EACrB,MAAa,EACH,UAAkB,EAClB,WAAmB,IAAI;QAEjC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAHb,eAAU,GAAV,UAAU,CAAQ;QAClB,aAAQ,GAAR,QAAQ,CAAe;IAGrC,CAAC;IAED,KAAK,CAAC,GAAG;QACL,MAAM,cAAc,GAAI,IAAI,CAAC,MAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE3D,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,OAAO,EAAE,CAAC;QACd,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,OAAO;aACpB,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC;aACtC,GAAG,EAAS,CAAC;IACtB,CAAC;IAED,KAAK;QACD,MAAM,cAAc,GAAI,IAAI,CAAC,MAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC1E,CAAC;CACJ;AA1BD,0BA0BC;AAED;;GAEG;AACH,MAAa,SAAmC,SAAQ,QAAW;IAC/D,YACI,OAAqB,EACrB,MAAa,EACH,UAAkB,EAClB,WAAmB,IAAI;QAEjC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAHb,eAAU,GAAV,UAAU,CAAQ;QAClB,aAAQ,GAAR,QAAQ,CAAe;IAGrC,CAAC;IAED,KAAK,CAAC,GAAG;QACL,MAAM,eAAe,GAAI,IAAI,CAAC,MAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE9D,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,OAAO;aACpB,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;aACrC,KAAK,EAAc,CAAC;IAC7B,CAAC;IAED,KAAK;QACD,MAAM,eAAe,GAAI,IAAI,CAAC,MAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACzE,CAAC;CACJ;AA1BD,8BA0BC;AAED;;GAEG;AACH,MAAa,aAAuC,SAAQ,QAAW;IACnE,YACI,OAAqB,EACrB,MAAa,EACH,UAAkB,EAClB,eAAuB,EACvB,eAAuB,EACvB,YAAoB,IAAI,EACxB,aAAqB,IAAI;QAEnC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QANb,eAAU,GAAV,UAAU,CAAQ;QAClB,oBAAe,GAAf,eAAe,CAAQ;QACvB,oBAAe,GAAf,eAAe,CAAQ;QACvB,cAAS,GAAT,SAAS,CAAe;QACxB,eAAU,GAAV,UAAU,CAAe;IAGvC,CAAC;IAED,KAAK,CAAC,GAAG;QACL,MAAM,cAAc,GAAI,IAAI,CAAC,MAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE5D,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,YAAY,GAAI,IAAI,CAAC,OAAe,CAAC,KAAK,CAAC;QACjD,MAAM,UAAU,GAAG,MAAM,mBAAQ,CAAC,UAAU,CAAE,IAAI,CAAC,OAAe,CAAC,UAAU,CAAC,CAAC;QAE/E,8BAA8B;QAC9B,MAAM,GAAG,GAAG;qBACC,YAAY;mBACd,YAAY;yBACN,IAAI,CAAC,UAAU;qBACnB,YAAY,IAAI,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe;oBAC7E,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe;SAClD,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;QAE9D,2CAA2C;QAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;YAC7B,MAAM,QAAQ,GAAG,IAAK,IAAI,CAAC,OAAe,EAAE,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC9B,OAAO,QAAa,CAAC;QACzB,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAzCD,sCAyCC"}
@@ -0,0 +1,24 @@
1
+ import { Model } from './Model';
2
+ /**
3
+ * Soft Delete interface
4
+ */
5
+ export interface SoftDeletes {
6
+ deleted_at: Date | null;
7
+ }
8
+ /**
9
+ * Mixin to add soft delete functionality to models
10
+ *
11
+ * Usage:
12
+ * ```typescript
13
+ * class User extends withSoftDeletes(Model) {
14
+ * static table = 'users';
15
+ * }
16
+ *
17
+ * await User.delete(1); // Soft deletes
18
+ * await User.withTrashed().get(); // Include soft deleted
19
+ * await User.restore(1); // Restore soft deleted
20
+ * await User.forceDelete(1); // Permanently delete
21
+ * ```
22
+ */
23
+ export declare function withSoftDeletes<TBase extends typeof Model>(Base: TBase): TBase;
24
+ //# sourceMappingURL=SoftDeletes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SoftDeletes.d.ts","sourceRoot":"","sources":["../../src/Model/SoftDeletes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,SAAS,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;CAC3B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,KAAK,SAAS,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,GAsFlC,KAAK,CACzC"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withSoftDeletes = withSoftDeletes;
4
+ /**
5
+ * Mixin to add soft delete functionality to models
6
+ *
7
+ * Usage:
8
+ * ```typescript
9
+ * class User extends withSoftDeletes(Model) {
10
+ * static table = 'users';
11
+ * }
12
+ *
13
+ * await User.delete(1); // Soft deletes
14
+ * await User.withTrashed().get(); // Include soft deleted
15
+ * await User.restore(1); // Restore soft deleted
16
+ * await User.forceDelete(1); // Permanently delete
17
+ * ```
18
+ */
19
+ function withSoftDeletes(Base) {
20
+ class SoftDeleteModel extends Base {
21
+ constructor(...args) {
22
+ super(...args);
23
+ }
24
+ /**
25
+ * Override delete to use soft deletes
26
+ */
27
+ static async delete(id) {
28
+ if (this.useSoftDeletes) {
29
+ const primaryKey = this.getPrimaryKeyName();
30
+ return await this.query()
31
+ .where(primaryKey, id)
32
+ .update({ [this.deletedAtColumn]: new Date() });
33
+ }
34
+ // Call the parent delete method
35
+ return await this.query().delete(id);
36
+ }
37
+ /**
38
+ * Include trashed (soft deleted) records in query
39
+ */
40
+ static withTrashed() {
41
+ // Create a fresh query without soft delete filtering
42
+ const connection = this.getConnectionName();
43
+ const table = this.getTableName();
44
+ const { Database } = require('../Database');
45
+ const queryBuilder = Database.table(table, connection);
46
+ const { ModelQueryBuilder } = require('./Model');
47
+ return new ModelQueryBuilder(queryBuilder, this);
48
+ }
49
+ /**
50
+ * Only get trashed (soft deleted) records
51
+ */
52
+ static onlyTrashed() {
53
+ return this.withTrashed().whereNotNull(this.deletedAtColumn);
54
+ }
55
+ /**
56
+ * Restore a soft deleted record
57
+ */
58
+ static async restore(id) {
59
+ const primaryKey = this.getPrimaryKeyName();
60
+ return await this.withTrashed()
61
+ .where(primaryKey, id)
62
+ .update({ [this.deletedAtColumn]: null });
63
+ }
64
+ /**
65
+ * Force delete a record (permanently delete)
66
+ */
67
+ static async forceDelete(id) {
68
+ const primaryKey = this.getPrimaryKeyName();
69
+ return await this.withTrashed()
70
+ .where(primaryKey, id)
71
+ .delete();
72
+ }
73
+ /**
74
+ * Override query to automatically exclude soft deleted records
75
+ */
76
+ static query() {
77
+ const baseQuery = super.query();
78
+ const queryBuilder = baseQuery;
79
+ if (this.useSoftDeletes) {
80
+ queryBuilder.whereNull(this.deletedAtColumn);
81
+ }
82
+ return queryBuilder;
83
+ }
84
+ }
85
+ /**
86
+ * The name of the "deleted at" column
87
+ */
88
+ SoftDeleteModel.deletedAtColumn = 'deleted_at';
89
+ /**
90
+ * Indicates if the model should use soft deletes
91
+ */
92
+ SoftDeleteModel.useSoftDeletes = true;
93
+ return SoftDeleteModel;
94
+ }
95
+ //# sourceMappingURL=SoftDeletes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SoftDeletes.js","sourceRoot":"","sources":["../../src/Model/SoftDeletes.ts"],"names":[],"mappings":";;AAwBA,0CAuFC;AAtGD;;;;;;;;;;;;;;GAcG;AACH,SAAgB,eAAe,CAA6B,IAAW;IACnE,MAAM,eAAgB,SAAS,IAAY;QAWvC,YAAY,GAAG,IAAW;YACtB,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACnB,CAAC;QAED;;WAEG;QACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAO;YACvB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,MAAM,UAAU,GAAI,IAAY,CAAC,iBAAiB,EAAE,CAAC;gBACrD,OAAO,MAAO,IAAY,CAAC,KAAK,EAAE;qBAC7B,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;qBACrB,MAAM,CAAC,EAAE,CAAE,IAAY,CAAC,eAAe,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;YACjE,CAAC;YAED,gCAAgC;YAChC,OAAO,MAAO,IAAY,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC;QAED;;WAEG;QACH,MAAM,CAAC,WAAW;YACd,qDAAqD;YACrD,MAAM,UAAU,GAAI,IAAY,CAAC,iBAAiB,EAAE,CAAC;YACrD,MAAM,KAAK,GAAI,IAAY,CAAC,YAAY,EAAE,CAAC;YAC3C,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YACvD,MAAM,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YACjD,OAAO,IAAI,iBAAiB,CAAC,YAAY,EAAE,IAAW,CAAC,CAAC;QAC5D,CAAC;QAED;;WAEG;QACH,MAAM,CAAC,WAAW;YACd,OAAO,IAAI,CAAC,WAAW,EAAK,CAAC,YAAY,CAAE,IAAY,CAAC,eAAe,CAAC,CAAC;QAC7E,CAAC;QAED;;WAEG;QACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAO;YACxB,MAAM,UAAU,GAAI,IAAY,CAAC,iBAAiB,EAAE,CAAC;YACrD,OAAO,MAAM,IAAI,CAAC,WAAW,EAAE;iBAC1B,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;iBACrB,MAAM,CAAC,EAAE,CAAE,IAAY,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED;;WAEG;QACH,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAO;YAC5B,MAAM,UAAU,GAAI,IAAY,CAAC,iBAAiB,EAAE,CAAC;YACrD,OAAO,MAAM,IAAI,CAAC,WAAW,EAAE;iBAC1B,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;iBACrB,MAAM,EAAE,CAAC;QAClB,CAAC;QAED;;WAEG;QACH,MAAM,CAAC,KAAK;YACR,MAAM,SAAS,GAAQ,KAAK,CAAC,KAAK,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,SAAiC,CAAC;YAEvD,IAAK,IAAY,CAAC,cAAc,EAAE,CAAC;gBAC/B,YAAY,CAAC,SAAS,CAAE,IAAY,CAAC,eAAe,CAAC,CAAC;YAC1D,CAAC;YAED,OAAO,YAAY,CAAC;QACxB,CAAC;;IAjFD;;OAEG;IACI,+BAAe,GAAW,YAAY,CAAC;IAE9C;;OAEG;IACI,8BAAc,GAAY,IAAI,CAAC;IA4E1C,OAAO,eAA+B,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,94 @@
1
+ import { Connection } from '../Contracts/Database';
2
+ import { QueryBuilder as QueryBuilderInterface } from '../Contracts/Database';
3
+ export declare class QueryBuilder implements QueryBuilderInterface {
4
+ private connection;
5
+ private tableName?;
6
+ private selectColumns;
7
+ private whereClauses;
8
+ private orderByColumns;
9
+ private limitValue?;
10
+ private offsetValue?;
11
+ private resolvedConnection;
12
+ constructor(connection: Connection | Promise<Connection>);
13
+ /**
14
+ * Get the resolved connection
15
+ */
16
+ private getResolvedConnection;
17
+ /**
18
+ * Set the table for the query
19
+ */
20
+ table(table: string): this;
21
+ /**
22
+ * Add a select clause
23
+ */
24
+ select(...columns: string[]): this;
25
+ /**
26
+ * Add a where clause
27
+ */
28
+ where(column: string, operator: any, value?: any): this;
29
+ /**
30
+ * Add an OR where clause
31
+ */
32
+ orWhere(column: string, operator: any, value?: any): this;
33
+ /**
34
+ * Add a where in clause
35
+ */
36
+ whereIn(column: string, values: any[]): this;
37
+ /**
38
+ * Add a where not in clause
39
+ */
40
+ whereNotIn(column: string, values: any[]): this;
41
+ /**
42
+ * Add a where null clause
43
+ */
44
+ whereNull(column: string): this;
45
+ /**
46
+ * Add a where not null clause
47
+ */
48
+ whereNotNull(column: string): this;
49
+ /**
50
+ * Add an order by clause
51
+ */
52
+ orderBy(column: string, direction?: 'asc' | 'desc'): this;
53
+ /**
54
+ * Add a limit clause
55
+ */
56
+ limit(limit: number): this;
57
+ /**
58
+ * Add an offset clause
59
+ */
60
+ offset(offset: number): this;
61
+ /**
62
+ * Execute the query and get all results
63
+ */
64
+ get(): Promise<any[]>;
65
+ /**
66
+ * Execute the query and get the first result
67
+ */
68
+ first(): Promise<any | null>;
69
+ /**
70
+ * Insert a record
71
+ */
72
+ insert(data: Record<string, any>): Promise<any>;
73
+ /**
74
+ * Update records
75
+ */
76
+ update(data: Record<string, any>): Promise<number>;
77
+ /**
78
+ * Delete records
79
+ */
80
+ delete(): Promise<number>;
81
+ /**
82
+ * Get the count of records
83
+ */
84
+ count(column?: string): Promise<number>;
85
+ /**
86
+ * Build the SELECT query
87
+ */
88
+ private buildSelectQuery;
89
+ /**
90
+ * Build the WHERE clause
91
+ */
92
+ private buildWhereClause;
93
+ }
94
+ //# sourceMappingURL=QueryBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryBuilder.d.ts","sourceRoot":"","sources":["../../src/Query/QueryBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,IAAI,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAa9E,qBAAa,YAAa,YAAW,qBAAqB;IAS1C,OAAO,CAAC,UAAU;IAR9B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,cAAc,CAA4D;IAClF,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,kBAAkB,CAA2B;gBAEjC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAEhE;;OAEG;YACW,qBAAqB;IAOnC;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B;;OAEG;IACH,MAAM,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAKlC;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI;IAkBvD;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI;IAkBzD;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI;IAW5C;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI;IAW/C;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAU/B;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUlC;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,KAAK,GAAG,MAAc,GAAG,IAAI;IAKhE;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK5B;;OAEG;IACG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAM3B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IAMlC;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAcrD;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBxD;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAa/B;;OAEG;IACG,KAAK,CAAC,MAAM,GAAE,MAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAalD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA6BxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CA4C3B"}
@@ -0,0 +1,276 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QueryBuilder = void 0;
4
+ class QueryBuilder {
5
+ constructor(connection) {
6
+ this.connection = connection;
7
+ this.selectColumns = ['*'];
8
+ this.whereClauses = [];
9
+ this.orderByColumns = [];
10
+ this.resolvedConnection = null;
11
+ }
12
+ /**
13
+ * Get the resolved connection
14
+ */
15
+ async getResolvedConnection() {
16
+ if (!this.resolvedConnection) {
17
+ this.resolvedConnection = await this.connection;
18
+ }
19
+ return this.resolvedConnection;
20
+ }
21
+ /**
22
+ * Set the table for the query
23
+ */
24
+ table(table) {
25
+ this.tableName = table;
26
+ return this;
27
+ }
28
+ /**
29
+ * Add a select clause
30
+ */
31
+ select(...columns) {
32
+ this.selectColumns = columns;
33
+ return this;
34
+ }
35
+ /**
36
+ * Add a where clause
37
+ */
38
+ where(column, operator, value) {
39
+ // Handle where(column, value) syntax
40
+ if (value === undefined) {
41
+ value = operator;
42
+ operator = '=';
43
+ }
44
+ this.whereClauses.push({
45
+ type: 'basic',
46
+ column,
47
+ operator,
48
+ value,
49
+ boolean: 'and',
50
+ });
51
+ return this;
52
+ }
53
+ /**
54
+ * Add an OR where clause
55
+ */
56
+ orWhere(column, operator, value) {
57
+ // Handle orWhere(column, value) syntax
58
+ if (value === undefined) {
59
+ value = operator;
60
+ operator = '=';
61
+ }
62
+ this.whereClauses.push({
63
+ type: 'basic',
64
+ column,
65
+ operator,
66
+ value,
67
+ boolean: 'or',
68
+ });
69
+ return this;
70
+ }
71
+ /**
72
+ * Add a where in clause
73
+ */
74
+ whereIn(column, values) {
75
+ this.whereClauses.push({
76
+ type: 'in',
77
+ column,
78
+ value: values,
79
+ boolean: 'and',
80
+ });
81
+ return this;
82
+ }
83
+ /**
84
+ * Add a where not in clause
85
+ */
86
+ whereNotIn(column, values) {
87
+ this.whereClauses.push({
88
+ type: 'notIn',
89
+ column,
90
+ value: values,
91
+ boolean: 'and',
92
+ });
93
+ return this;
94
+ }
95
+ /**
96
+ * Add a where null clause
97
+ */
98
+ whereNull(column) {
99
+ this.whereClauses.push({
100
+ type: 'null',
101
+ column,
102
+ boolean: 'and',
103
+ });
104
+ return this;
105
+ }
106
+ /**
107
+ * Add a where not null clause
108
+ */
109
+ whereNotNull(column) {
110
+ this.whereClauses.push({
111
+ type: 'notNull',
112
+ column,
113
+ boolean: 'and',
114
+ });
115
+ return this;
116
+ }
117
+ /**
118
+ * Add an order by clause
119
+ */
120
+ orderBy(column, direction = 'asc') {
121
+ this.orderByColumns.push({ column, direction });
122
+ return this;
123
+ }
124
+ /**
125
+ * Add a limit clause
126
+ */
127
+ limit(limit) {
128
+ this.limitValue = limit;
129
+ return this;
130
+ }
131
+ /**
132
+ * Add an offset clause
133
+ */
134
+ offset(offset) {
135
+ this.offsetValue = offset;
136
+ return this;
137
+ }
138
+ /**
139
+ * Execute the query and get all results
140
+ */
141
+ async get() {
142
+ const { sql, bindings } = this.buildSelectQuery();
143
+ const connection = await this.getResolvedConnection();
144
+ return await connection.query(sql, bindings);
145
+ }
146
+ /**
147
+ * Execute the query and get the first result
148
+ */
149
+ async first() {
150
+ this.limit(1);
151
+ const results = await this.get();
152
+ return results.length > 0 ? results[0] : null;
153
+ }
154
+ /**
155
+ * Insert a record
156
+ */
157
+ async insert(data) {
158
+ if (!this.tableName) {
159
+ throw new Error('Table name is required');
160
+ }
161
+ const columns = Object.keys(data);
162
+ const values = Object.values(data);
163
+ const placeholders = values.map((_, i) => `?`).join(', ');
164
+ const sql = `INSERT INTO ${this.tableName} (${columns.join(', ')}) VALUES (${placeholders})`;
165
+ const connection = await this.getResolvedConnection();
166
+ return await connection.query(sql, values);
167
+ }
168
+ /**
169
+ * Update records
170
+ */
171
+ async update(data) {
172
+ if (!this.tableName) {
173
+ throw new Error('Table name is required');
174
+ }
175
+ const columns = Object.keys(data);
176
+ const values = Object.values(data);
177
+ const setClause = columns.map(col => `${col} = ?`).join(', ');
178
+ const { whereClause, bindings: whereBindings } = this.buildWhereClause();
179
+ const sql = `UPDATE ${this.tableName} SET ${setClause}${whereClause}`;
180
+ const connection = await this.getResolvedConnection();
181
+ const result = await connection.query(sql, [...values, ...whereBindings]);
182
+ return result.affectedRows || result.rowCount || 0;
183
+ }
184
+ /**
185
+ * Delete records
186
+ */
187
+ async delete() {
188
+ if (!this.tableName) {
189
+ throw new Error('Table name is required');
190
+ }
191
+ const { whereClause, bindings } = this.buildWhereClause();
192
+ const sql = `DELETE FROM ${this.tableName}${whereClause}`;
193
+ const connection = await this.getResolvedConnection();
194
+ const result = await connection.query(sql, bindings);
195
+ return result.affectedRows || result.rowCount || 0;
196
+ }
197
+ /**
198
+ * Get the count of records
199
+ */
200
+ async count(column = '*') {
201
+ if (!this.tableName) {
202
+ throw new Error('Table name is required');
203
+ }
204
+ const { whereClause, bindings } = this.buildWhereClause();
205
+ const sql = `SELECT COUNT(${column}) as count FROM ${this.tableName}${whereClause}`;
206
+ const connection = await this.getResolvedConnection();
207
+ const result = await connection.query(sql, bindings);
208
+ return parseInt(result[0].count);
209
+ }
210
+ /**
211
+ * Build the SELECT query
212
+ */
213
+ buildSelectQuery() {
214
+ if (!this.tableName) {
215
+ throw new Error('Table name is required');
216
+ }
217
+ const columns = this.selectColumns.join(', ');
218
+ let sql = `SELECT ${columns} FROM ${this.tableName}`;
219
+ const { whereClause, bindings } = this.buildWhereClause();
220
+ sql += whereClause;
221
+ if (this.orderByColumns.length > 0) {
222
+ const orderBy = this.orderByColumns
223
+ .map(({ column, direction }) => `${column} ${direction.toUpperCase()}`)
224
+ .join(', ');
225
+ sql += ` ORDER BY ${orderBy}`;
226
+ }
227
+ if (this.limitValue !== undefined) {
228
+ sql += ` LIMIT ${this.limitValue}`;
229
+ }
230
+ if (this.offsetValue !== undefined) {
231
+ sql += ` OFFSET ${this.offsetValue}`;
232
+ }
233
+ return { sql, bindings };
234
+ }
235
+ /**
236
+ * Build the WHERE clause
237
+ */
238
+ buildWhereClause() {
239
+ if (this.whereClauses.length === 0) {
240
+ return { whereClause: '', bindings: [] };
241
+ }
242
+ const bindings = [];
243
+ const clauses = [];
244
+ this.whereClauses.forEach((where, index) => {
245
+ const boolean = index === 0 ? '' : ` ${where.boolean.toUpperCase()} `;
246
+ switch (where.type) {
247
+ case 'basic':
248
+ clauses.push(`${boolean}${where.column} ${where.operator} ?`);
249
+ bindings.push(where.value);
250
+ break;
251
+ case 'in':
252
+ const inPlaceholders = where.value.map(() => '?').join(', ');
253
+ clauses.push(`${boolean}${where.column} IN (${inPlaceholders})`);
254
+ bindings.push(...where.value);
255
+ break;
256
+ case 'notIn':
257
+ const notInPlaceholders = where.value.map(() => '?').join(', ');
258
+ clauses.push(`${boolean}${where.column} NOT IN (${notInPlaceholders})`);
259
+ bindings.push(...where.value);
260
+ break;
261
+ case 'null':
262
+ clauses.push(`${boolean}${where.column} IS NULL`);
263
+ break;
264
+ case 'notNull':
265
+ clauses.push(`${boolean}${where.column} IS NOT NULL`);
266
+ break;
267
+ }
268
+ });
269
+ return {
270
+ whereClause: ' WHERE ' + clauses.join(''),
271
+ bindings,
272
+ };
273
+ }
274
+ }
275
+ exports.QueryBuilder = QueryBuilder;
276
+ //# sourceMappingURL=QueryBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../src/Query/QueryBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { TableBlueprint, ColumnDefinition } from '../Schema';
2
+ /**
3
+ * Base grammar class for schema building
4
+ */
5
+ export declare abstract class Grammar {
6
+ /**
7
+ * Compile the create table SQL
8
+ */
9
+ abstract compileCreate(blueprint: TableBlueprint): string;
10
+ /**
11
+ * Compile the drop table SQL
12
+ */
13
+ abstract compileDrop(tableName: string): string;
14
+ /**
15
+ * Compile the drop table if exists SQL
16
+ */
17
+ abstract compileDropIfExists(tableName: string): string;
18
+ /**
19
+ * Map a column definition to its SQL type
20
+ */
21
+ protected abstract getType(column: ColumnDefinition): string;
22
+ /**
23
+ * Get the default value SQL
24
+ */
25
+ protected getDefault(column: ColumnDefinition): string;
26
+ }
27
+ //# sourceMappingURL=Grammar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grammar.d.ts","sourceRoot":"","sources":["../../../src/Schema/Grammars/Grammar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7D;;GAEG;AACH,8BAAsB,OAAO;IACzB;;OAEG;aACa,aAAa,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM;IAEhE;;OAEG;aACa,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAEtD;;OAEG;aACa,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAE9D;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;IAE5D;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;CAYzD"}