@iamkirbki/database-handler-core 3.1.3 → 4.0.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.
- package/dist/abstract/Model.d.ts +39 -16
- package/dist/abstract/Model.d.ts.map +1 -1
- package/dist/abstract/Model.js +148 -36
- package/dist/abstract/{Schema.d.ts → SchemaTableBuilder.d.ts} +3 -8
- package/dist/abstract/SchemaTableBuilder.d.ts.map +1 -0
- package/dist/abstract/{Schema.js → SchemaTableBuilder.js} +1 -3
- package/dist/base/Database.d.ts +13 -0
- package/dist/base/Database.d.ts.map +1 -0
- package/dist/base/Database.js +27 -0
- package/dist/base/Query.d.ts +43 -0
- package/dist/base/Query.d.ts.map +1 -0
- package/dist/base/Query.js +87 -0
- package/dist/base/Record.d.ts +23 -0
- package/dist/base/Record.d.ts.map +1 -0
- package/dist/base/Record.js +72 -0
- package/dist/base/Table.d.ts +27 -0
- package/dist/base/Table.d.ts.map +1 -0
- package/dist/base/Table.js +128 -0
- package/dist/helpers/QueryStatementBuilder.d.ts +4 -35
- package/dist/helpers/QueryStatementBuilder.d.ts.map +1 -1
- package/dist/helpers/QueryStatementBuilder.js +6 -37
- package/dist/index.d.ts +13 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -8
- package/dist/interfaces/IController.d.ts +8 -0
- package/dist/interfaces/IController.d.ts.map +1 -0
- package/dist/interfaces/IController.js +1 -0
- package/dist/interfaces/IDatabaseAdapter.d.ts.map +1 -1
- package/dist/interfaces/IMigration.d.ts +6 -0
- package/dist/interfaces/IMigration.d.ts.map +1 -0
- package/dist/interfaces/IMigration.js +1 -0
- package/dist/interfaces/ISchemaBuilder.d.ts +7 -0
- package/dist/interfaces/ISchemaBuilder.d.ts.map +1 -0
- package/dist/interfaces/ISchemaBuilder.js +1 -0
- package/dist/runtime/Container.d.ts +12 -0
- package/dist/runtime/Container.d.ts.map +1 -0
- package/dist/runtime/Container.js +29 -0
- package/dist/runtime/Repository.d.ts +17 -0
- package/dist/runtime/Repository.d.ts.map +1 -0
- package/dist/runtime/Repository.js +101 -0
- package/dist/types/index.d.ts +1 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/model.d.ts +71 -0
- package/dist/types/model.d.ts.map +1 -0
- package/dist/types/model.js +2 -0
- package/dist/types/table.d.ts +6 -2
- package/dist/types/table.d.ts.map +1 -1
- package/package.json +5 -4
- package/dist/Database.d.ts +0 -98
- package/dist/Database.d.ts.map +0 -1
- package/dist/Database.js +0 -126
- package/dist/Query.d.ts +0 -143
- package/dist/Query.d.ts.map +0 -1
- package/dist/Query.js +0 -205
- package/dist/Record.d.ts +0 -125
- package/dist/Record.d.ts.map +0 -1
- package/dist/Record.js +0 -174
- package/dist/Table.d.ts +0 -158
- package/dist/Table.d.ts.map +0 -1
- package/dist/Table.js +0 -258
- package/dist/abstract/Controller.d.ts +0 -13
- package/dist/abstract/Controller.d.ts.map +0 -1
- package/dist/abstract/Controller.js +0 -6
- package/dist/abstract/Migration.d.ts +0 -6
- package/dist/abstract/Migration.d.ts.map +0 -1
- package/dist/abstract/Migration.js +0 -2
- package/dist/abstract/Schema.d.ts.map +0 -1
- package/dist/abstract/User.d.ts +0 -8
- package/dist/abstract/User.d.ts.map +0 -1
- package/dist/abstract/User.js +0 -6
package/dist/abstract/Model.d.ts
CHANGED
|
@@ -1,18 +1,41 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { QueryCondition } from "../types/
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
import Repository from "../runtime/Repository.js";
|
|
2
|
+
import { columnType, QueryCondition, QueryValues, ModelConfig, relation } from "../types/index.js";
|
|
3
|
+
/** Abstract Model class for ORM-style database interactions */
|
|
4
|
+
export default abstract class Model<ModelType extends columnType> {
|
|
5
|
+
private _repository?;
|
|
6
|
+
protected get repository(): Repository<ModelType, Model<ModelType>>;
|
|
7
|
+
protected configuration: ModelConfig;
|
|
8
|
+
get Configuration(): ModelConfig;
|
|
9
|
+
protected originalAttributes: Partial<ModelType>;
|
|
10
|
+
protected attributes: Partial<ModelType>;
|
|
11
|
+
protected exists: boolean;
|
|
12
|
+
protected dirty: boolean;
|
|
13
|
+
protected queryScopes?: QueryCondition;
|
|
14
|
+
get primaryKeyColumn(): string;
|
|
15
|
+
get primaryKey(): QueryValues | undefined;
|
|
16
|
+
get values(): Partial<ModelType> | ModelType;
|
|
17
|
+
static where<ParamterModelType extends Model<columnType>>(this: new () => ParamterModelType, conditions: QueryCondition): ParamterModelType;
|
|
18
|
+
where(conditions: QueryCondition): this;
|
|
19
|
+
static whereId<ParamterModelType extends Model<columnType>>(this: new () => ParamterModelType, id: QueryValues): ParamterModelType;
|
|
20
|
+
whereId(id: QueryValues): this;
|
|
21
|
+
static find<ParamterModelType extends Model<columnType>>(this: new () => ParamterModelType, primaryKeyValue: QueryValues): ParamterModelType;
|
|
22
|
+
find(primaryKeyValue: QueryValues): this;
|
|
23
|
+
static findOrFail<ParamterModelType extends Model<columnType>>(this: new () => ParamterModelType, primaryKeyValue: QueryValues): Partial<columnType>;
|
|
24
|
+
findOrFail(primaryKeyValue?: QueryValues): Partial<ModelType> | ModelType;
|
|
25
|
+
get(): Promise<Partial<ModelType> | ModelType>;
|
|
26
|
+
static set<ParamterModelType extends Model<columnType>>(this: new () => ParamterModelType, attributes: Partial<columnType>): ParamterModelType;
|
|
27
|
+
set(attributes: Partial<ModelType>): this;
|
|
28
|
+
save(): this;
|
|
29
|
+
update(attributes: Partial<ModelType>): this;
|
|
30
|
+
all(): Promise<Partial<ModelType>[]>;
|
|
31
|
+
protected joinedEntities: string[];
|
|
32
|
+
protected relations: relation[];
|
|
33
|
+
get JoinedEntities(): string[];
|
|
34
|
+
get Relations(): relation[];
|
|
35
|
+
hasMany<modelType extends Model<columnType>>(model: modelType, foreignKey?: string, localKey?: string): this;
|
|
36
|
+
hasOne<modelType extends Model<columnType>>(model: modelType, foreignKey?: string, localKey?: string): this;
|
|
37
|
+
belongsTo<modelType extends Model<columnType>>(model: modelType, foreignKey?: string, localKey?: string): this;
|
|
38
|
+
static with<ParamterModelType extends Model<columnType>>(this: new () => ParamterModelType, tableName: string): ParamterModelType;
|
|
39
|
+
with(relationName: string): this;
|
|
17
40
|
}
|
|
18
41
|
//# sourceMappingURL=Model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Model.d.ts","sourceRoot":"","sources":["../../src/abstract/Model.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Model.d.ts","sourceRoot":"","sources":["../../src/abstract/Model.ts"],"names":[],"mappings":"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"}
|
package/dist/abstract/Model.js
CHANGED
|
@@ -7,58 +7,170 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import
|
|
10
|
+
import Repository from "../runtime/Repository.js";
|
|
11
|
+
/** Abstract Model class for ORM-style database interactions */
|
|
11
12
|
export default class Model {
|
|
12
|
-
constructor(
|
|
13
|
-
this.
|
|
14
|
-
|
|
13
|
+
constructor() {
|
|
14
|
+
this.configuration = {
|
|
15
|
+
table: '', // Must be set by subclass
|
|
16
|
+
primaryKey: 'id',
|
|
17
|
+
incrementing: true,
|
|
18
|
+
keyType: 'number',
|
|
19
|
+
timestamps: true,
|
|
20
|
+
createdAtColumn: 'created_at',
|
|
21
|
+
updatedAtColumn: 'updated_at',
|
|
22
|
+
guarded: ['*'],
|
|
23
|
+
};
|
|
24
|
+
this.originalAttributes = {};
|
|
25
|
+
this.attributes = {};
|
|
26
|
+
this.exists = false;
|
|
27
|
+
this.dirty = false;
|
|
28
|
+
this.joinedEntities = [];
|
|
29
|
+
this.relations = [];
|
|
15
30
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
31
|
+
get repository() {
|
|
32
|
+
if (!this._repository) {
|
|
33
|
+
this._repository = Repository.getInstance(this.constructor, this.Configuration.table);
|
|
34
|
+
}
|
|
35
|
+
return this._repository;
|
|
21
36
|
}
|
|
22
|
-
|
|
23
|
-
return
|
|
24
|
-
|
|
37
|
+
get Configuration() {
|
|
38
|
+
return this.configuration;
|
|
39
|
+
}
|
|
40
|
+
get primaryKeyColumn() {
|
|
41
|
+
return this.configuration.primaryKey;
|
|
42
|
+
}
|
|
43
|
+
get primaryKey() {
|
|
44
|
+
return this.attributes[this.configuration.primaryKey];
|
|
45
|
+
}
|
|
46
|
+
get values() {
|
|
47
|
+
return this.attributes;
|
|
48
|
+
}
|
|
49
|
+
static where(conditions) {
|
|
50
|
+
const instance = new this();
|
|
51
|
+
return instance.where(conditions);
|
|
52
|
+
}
|
|
53
|
+
where(conditions) {
|
|
54
|
+
this.queryScopes = conditions;
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
static whereId(id) {
|
|
58
|
+
const instance = new this();
|
|
59
|
+
return instance.whereId(id);
|
|
60
|
+
}
|
|
61
|
+
whereId(id) {
|
|
62
|
+
this.queryScopes = { id: id };
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
static find(primaryKeyValue) {
|
|
66
|
+
const instance = new this();
|
|
67
|
+
return instance.find(primaryKeyValue);
|
|
68
|
+
}
|
|
69
|
+
find(primaryKeyValue) {
|
|
70
|
+
this.queryScopes = { [this.primaryKeyColumn]: primaryKeyValue };
|
|
71
|
+
return this;
|
|
72
|
+
}
|
|
73
|
+
static findOrFail(primaryKeyValue) {
|
|
74
|
+
const instance = new this();
|
|
75
|
+
return instance.findOrFail(primaryKeyValue);
|
|
76
|
+
}
|
|
77
|
+
findOrFail(primaryKeyValue) {
|
|
78
|
+
var _a;
|
|
79
|
+
if (primaryKeyValue) {
|
|
80
|
+
this.queryScopes = { [this.primaryKeyColumn]: primaryKeyValue };
|
|
81
|
+
}
|
|
82
|
+
const query = this.queryScopes || {};
|
|
83
|
+
(_a = this.repository) === null || _a === void 0 ? void 0 : _a.get(query, this).then((record) => {
|
|
84
|
+
if (!record) {
|
|
85
|
+
throw new Error(`Record with primary key ${primaryKeyValue} not found.`);
|
|
86
|
+
}
|
|
87
|
+
this.set(record);
|
|
25
88
|
});
|
|
89
|
+
return this.attributes;
|
|
26
90
|
}
|
|
27
91
|
get() {
|
|
28
92
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
-
|
|
30
|
-
|
|
93
|
+
var _a;
|
|
94
|
+
this.attributes = (yield ((_a = this.repository) === null || _a === void 0 ? void 0 : _a.get(this.queryScopes || {}, this)));
|
|
95
|
+
return this.attributes;
|
|
31
96
|
});
|
|
32
97
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return records.map(record => record.values);
|
|
37
|
-
});
|
|
98
|
+
static set(attributes) {
|
|
99
|
+
const instance = new this();
|
|
100
|
+
return instance.set(attributes);
|
|
38
101
|
}
|
|
39
|
-
|
|
40
|
-
this.
|
|
102
|
+
set(attributes) {
|
|
103
|
+
if (attributes[this.primaryKeyColumn] !== undefined && !this.exists) {
|
|
104
|
+
this.repository.syncModel(this);
|
|
105
|
+
}
|
|
106
|
+
this.attributes = Object.assign(Object.assign({}, this.attributes), attributes);
|
|
107
|
+
this.dirty = true;
|
|
41
108
|
return this;
|
|
42
109
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
110
|
+
save() {
|
|
111
|
+
this.repository.save(this.attributes, this.originalAttributes);
|
|
112
|
+
this.originalAttributes = Object.assign(Object.assign({}, this.originalAttributes), this.attributes);
|
|
113
|
+
this.exists = true;
|
|
114
|
+
this.dirty = false;
|
|
115
|
+
return this;
|
|
116
|
+
}
|
|
117
|
+
update(attributes) {
|
|
118
|
+
var _a;
|
|
119
|
+
if (!this.exists) {
|
|
120
|
+
throw new Error("Cannot update a model that does not exist in the database.");
|
|
121
|
+
}
|
|
122
|
+
(_a = this.repository) === null || _a === void 0 ? void 0 : _a.update(attributes);
|
|
123
|
+
return this;
|
|
124
|
+
}
|
|
125
|
+
all() {
|
|
126
|
+
return this.repository.all(this);
|
|
127
|
+
}
|
|
128
|
+
get JoinedEntities() {
|
|
129
|
+
return this.joinedEntities;
|
|
130
|
+
}
|
|
131
|
+
get Relations() {
|
|
132
|
+
return this.relations;
|
|
133
|
+
}
|
|
134
|
+
hasMany(model, foreignKey = `${this.Configuration.table}_${this.Configuration.primaryKey}`, localKey = this.Configuration.primaryKey) {
|
|
135
|
+
this.relations.push({
|
|
136
|
+
type: 'hasMany',
|
|
137
|
+
model: model,
|
|
138
|
+
foreignKey: foreignKey,
|
|
139
|
+
localKey: localKey,
|
|
46
140
|
});
|
|
141
|
+
return this;
|
|
47
142
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
143
|
+
hasOne(model, foreignKey = `${model.Configuration.primaryKey}`, localKey = `${model.Configuration.table}_${model.Configuration.primaryKey}`) {
|
|
144
|
+
this.relations.push({
|
|
145
|
+
type: 'hasOne',
|
|
146
|
+
model: model,
|
|
147
|
+
foreignKey: foreignKey,
|
|
148
|
+
localKey: localKey,
|
|
54
149
|
});
|
|
150
|
+
return this;
|
|
55
151
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
152
|
+
belongsTo(model, foreignKey = `${model.Configuration.table}_${model.Configuration.primaryKey}`, localKey = model.Configuration.primaryKey) {
|
|
153
|
+
this.relations.push({
|
|
154
|
+
type: 'belongsTo',
|
|
155
|
+
model: model,
|
|
156
|
+
foreignKey: foreignKey,
|
|
157
|
+
localKey: localKey,
|
|
62
158
|
});
|
|
159
|
+
return this;
|
|
160
|
+
}
|
|
161
|
+
static with(tableName) {
|
|
162
|
+
const instance = new this();
|
|
163
|
+
return instance.with(tableName);
|
|
164
|
+
}
|
|
165
|
+
with(relationName) {
|
|
166
|
+
this.joinedEntities.push(relationName);
|
|
167
|
+
const method = Reflect.get(this, relationName);
|
|
168
|
+
if (typeof method === 'function') {
|
|
169
|
+
method.call(this);
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
throw new Error(`Relation method '${relationName}' does not exist on ${this.constructor.name}`);
|
|
173
|
+
}
|
|
174
|
+
return this;
|
|
63
175
|
}
|
|
64
176
|
}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
|
-
import { ColumnDefinition } from "
|
|
2
|
-
export
|
|
3
|
-
abstract createTable(name: string, callback: (table: SchemaTableBuilder) => void): Promise<void>;
|
|
4
|
-
abstract dropTable(name: string): Promise<void>;
|
|
5
|
-
abstract alterTable(oldName: string, callback: (table: SchemaTableBuilder) => void): Promise<void>;
|
|
6
|
-
}
|
|
7
|
-
export declare abstract class SchemaTableBuilder {
|
|
1
|
+
import { ColumnDefinition } from "../types/index";
|
|
2
|
+
export default abstract class SchemaTableBuilder {
|
|
8
3
|
protected columns: ColumnDefinition[];
|
|
9
4
|
protected addColumn(data: ColumnDefinition): this;
|
|
10
5
|
abstract build(): string;
|
|
@@ -17,4 +12,4 @@ export declare abstract class SchemaTableBuilder {
|
|
|
17
12
|
abstract boolean(name: string): this;
|
|
18
13
|
abstract timestamps(): this;
|
|
19
14
|
}
|
|
20
|
-
//# sourceMappingURL=
|
|
15
|
+
//# sourceMappingURL=SchemaTableBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaTableBuilder.d.ts","sourceRoot":"","sources":["../../src/abstract/SchemaTableBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,kBAAkB;IAC5C,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAM;IAE3C,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAoBjD,QAAQ,CAAC,KAAK,IAAI,MAAM;IAExB,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACvC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACvC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAExF,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACjC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IACpD,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACpC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACpC,QAAQ,CAAC,UAAU,IAAI,IAAI;CAC9B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import Table from "./Table.js";
|
|
2
|
+
import Query from "./Query.js";
|
|
3
|
+
import IDatabaseAdapter from "../interfaces/IDatabaseAdapter.js";
|
|
4
|
+
/** Main Database class */
|
|
5
|
+
export default class Database {
|
|
6
|
+
adapter: IDatabaseAdapter;
|
|
7
|
+
constructor(adapter: IDatabaseAdapter);
|
|
8
|
+
/** Get a Table instance for an existing table */
|
|
9
|
+
Table(name: string): Promise<Table>;
|
|
10
|
+
/** Create a Query object for executing custom SQL */
|
|
11
|
+
Query(table: Table, query: string): Query;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=Database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Database.d.ts","sourceRoot":"","sources":["../../src/base/Database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AAEpE,0BAA0B;AAC1B,MAAM,CAAC,OAAO,OAAO,QAAQ;IACpB,OAAO,EAAE,gBAAgB,CAAC;gBAErB,OAAO,EAAE,gBAAgB;IAIrC,iDAAiD;IACpC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAIhD,qDAAqD;IAC9C,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK;CAGjD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import Table from "./Table.js";
|
|
11
|
+
import Query from "./Query.js";
|
|
12
|
+
/** Main Database class */
|
|
13
|
+
export default class Database {
|
|
14
|
+
constructor(adapter) {
|
|
15
|
+
this.adapter = adapter;
|
|
16
|
+
}
|
|
17
|
+
/** Get a Table instance for an existing table */
|
|
18
|
+
Table(name) {
|
|
19
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
return new Table(name);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
/** Create a Query object for executing custom SQL */
|
|
24
|
+
Query(table, query) {
|
|
25
|
+
return new Query(table, query, this.adapter);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import Table from "./Table.js";
|
|
2
|
+
import { QueryCondition, QueryWhereParameters } from "../types/index.js";
|
|
3
|
+
import Record from "./Record.js";
|
|
4
|
+
import IDatabaseAdapter from "../interfaces/IDatabaseAdapter.js";
|
|
5
|
+
/** Query class for executing custom SQL queries */
|
|
6
|
+
export default class Query {
|
|
7
|
+
readonly Table: Table;
|
|
8
|
+
private readonly _adapter;
|
|
9
|
+
private _query;
|
|
10
|
+
private _parameters;
|
|
11
|
+
get Parameters(): QueryCondition;
|
|
12
|
+
set Parameters(value: QueryCondition);
|
|
13
|
+
constructor(Table: Table, Query: string, adapter: IDatabaseAdapter);
|
|
14
|
+
/**
|
|
15
|
+
* Execute a query that modifies data (INSERT, UPDATE, DELETE)
|
|
16
|
+
*
|
|
17
|
+
* @template Type - Expected return type (typically { lastInsertRowid: number, changes: number })
|
|
18
|
+
* @returns Result object with lastInsertRowid and changes count
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* // INSERT query
|
|
23
|
+
* const query = db.Query(users, 'INSERT INTO users (name, age) VALUES (@name, @age)');
|
|
24
|
+
* query.Parameters = { name: 'John', age: 30 };
|
|
25
|
+
* const result = query.Run<{ lastInsertRowid: number, changes: number }>();
|
|
26
|
+
* console.log(`Inserted ID: ${result.lastInsertRowid}`);
|
|
27
|
+
*
|
|
28
|
+
* // UPDATE query
|
|
29
|
+
* const update = db.Query(users, 'UPDATE users SET age = @age WHERE id = @id');
|
|
30
|
+
* update.Parameters = { age: 31, id: 1 };
|
|
31
|
+
* const updateResult = update.Run<{ changes: number }>();
|
|
32
|
+
* console.log(`Updated ${updateResult.changes} rows`);
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
Run<Type>(): Promise<Type>;
|
|
36
|
+
/** Execute a SELECT query and return all matching rows */
|
|
37
|
+
All<Type>(): Promise<Record<Type>[]>;
|
|
38
|
+
static ConvertParamsToObject(params: QueryCondition): QueryWhereParameters;
|
|
39
|
+
static ConvertIdToString(params: QueryWhereParameters): QueryWhereParameters;
|
|
40
|
+
/** Execute a SELECT query and return the first matching row */
|
|
41
|
+
Get<Type>(): Promise<Record<Type> | undefined>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=Query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Query.d.ts","sourceRoot":"","sources":["../../src/base/Query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AAEpE,mDAAmD;AACnD,MAAM,CAAC,OAAO,OAAO,KAAK;IACxB,SAAgB,KAAK,EAAE,KAAK,CAAC;IAE7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,WAAW,CAAsB;IAEzC,IAAW,UAAU,IAAI,cAAc,CAEtC;IAED,IAAW,UAAU,CAAC,KAAK,EAAE,cAAc,EAE1C;gBAEW,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB;IAMlE;;;;;;;;;;;;;;;;;;;;OAoBG;IACU,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC;IAKvC,0DAA0D;IAC7C,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;WAMnC,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,oBAAoB;WAanE,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB;IAQnF,+DAA+D;IAClD,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;CAK5D"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import Record from "./Record.js";
|
|
11
|
+
/** Query class for executing custom SQL queries */
|
|
12
|
+
export default class Query {
|
|
13
|
+
get Parameters() {
|
|
14
|
+
return this._parameters;
|
|
15
|
+
}
|
|
16
|
+
set Parameters(value) {
|
|
17
|
+
this._parameters = Query.ConvertParamsToObject(value);
|
|
18
|
+
}
|
|
19
|
+
constructor(Table, Query, adapter) {
|
|
20
|
+
this._query = "";
|
|
21
|
+
this._parameters = {};
|
|
22
|
+
this.Table = Table;
|
|
23
|
+
this._query = Query;
|
|
24
|
+
this._adapter = adapter;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Execute a query that modifies data (INSERT, UPDATE, DELETE)
|
|
28
|
+
*
|
|
29
|
+
* @template Type - Expected return type (typically { lastInsertRowid: number, changes: number })
|
|
30
|
+
* @returns Result object with lastInsertRowid and changes count
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* // INSERT query
|
|
35
|
+
* const query = db.Query(users, 'INSERT INTO users (name, age) VALUES (@name, @age)');
|
|
36
|
+
* query.Parameters = { name: 'John', age: 30 };
|
|
37
|
+
* const result = query.Run<{ lastInsertRowid: number, changes: number }>();
|
|
38
|
+
* console.log(`Inserted ID: ${result.lastInsertRowid}`);
|
|
39
|
+
*
|
|
40
|
+
* // UPDATE query
|
|
41
|
+
* const update = db.Query(users, 'UPDATE users SET age = @age WHERE id = @id');
|
|
42
|
+
* update.Parameters = { age: 31, id: 1 };
|
|
43
|
+
* const updateResult = update.Run<{ changes: number }>();
|
|
44
|
+
* console.log(`Updated ${updateResult.changes} rows`);
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
Run() {
|
|
48
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
const stmt = yield this._adapter.prepare(this._query);
|
|
50
|
+
return yield stmt.run(this.Parameters);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/** Execute a SELECT query and return all matching rows */
|
|
54
|
+
All() {
|
|
55
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
const stmt = yield this._adapter.prepare(this._query);
|
|
57
|
+
const results = yield stmt.all(this.Parameters);
|
|
58
|
+
return results.map(res => new Record(res, this._adapter, this.Table));
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
static ConvertParamsToObject(params) {
|
|
62
|
+
const paramObject = {};
|
|
63
|
+
if (Array.isArray(params)) {
|
|
64
|
+
params.forEach(param => {
|
|
65
|
+
paramObject[param.column] = param.value;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
Object.assign(paramObject, params);
|
|
70
|
+
}
|
|
71
|
+
return this.ConvertIdToString(paramObject);
|
|
72
|
+
}
|
|
73
|
+
static ConvertIdToString(params) {
|
|
74
|
+
if (params.id && typeof params.id === 'number') {
|
|
75
|
+
return Object.assign(Object.assign({}, params), { id: params.id.toString() });
|
|
76
|
+
}
|
|
77
|
+
return params;
|
|
78
|
+
}
|
|
79
|
+
/** Execute a SELECT query and return the first matching row */
|
|
80
|
+
Get() {
|
|
81
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
+
const stmt = yield this._adapter.prepare(this._query);
|
|
83
|
+
const results = yield stmt.get(this.Parameters);
|
|
84
|
+
return results ? new Record(results, this._adapter, this.Table) : undefined;
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { inspect } from "util";
|
|
2
|
+
import Table from "./Table.js";
|
|
3
|
+
import IDatabaseAdapter from "../interfaces/IDatabaseAdapter.js";
|
|
4
|
+
/** Record class represents a single database row */
|
|
5
|
+
export default class Record<ColumnValuesType> {
|
|
6
|
+
private readonly _adapter;
|
|
7
|
+
private _values;
|
|
8
|
+
private readonly _table;
|
|
9
|
+
constructor(values: ColumnValuesType, adapter: IDatabaseAdapter, table: Table);
|
|
10
|
+
/** Get the raw values object for this record */
|
|
11
|
+
get values(): ColumnValuesType;
|
|
12
|
+
/** Update this record in the database */
|
|
13
|
+
Update(newValues: object): Promise<void>;
|
|
14
|
+
/** Delete this record from the database */
|
|
15
|
+
Delete(): Promise<void>;
|
|
16
|
+
/** Returns the values object for JSON.stringify() */
|
|
17
|
+
toJSON(): ColumnValuesType;
|
|
18
|
+
/** Convert record to pretty-printed JSON string */
|
|
19
|
+
toString(): string;
|
|
20
|
+
/** Custom inspect for console.log() */
|
|
21
|
+
[inspect.custom](): ColumnValuesType;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=Record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Record.d.ts","sourceRoot":"","sources":["../../src/base/Record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AAGpE,oDAAoD;AACpD,MAAM,CAAC,OAAO,OAAO,MAAM,CAAC,gBAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,OAAO,CAA4C;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;gBAEnB,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK;IAM7E,gDAAgD;IAChD,IAAW,MAAM,IAAI,gBAAgB,CAEpC;IAED,yCAAyC;IAC5B,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BrD,2CAA2C;IAC9B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAUpC,qDAAqD;IAC9C,MAAM,IAAI,gBAAgB;IAIjC,mDAAmD;IAC5C,QAAQ,IAAI,MAAM;IAIzB,uCAAuC;IACvC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,gBAAgB;CAGvC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { inspect } from "util";
|
|
11
|
+
import Query from "./Query.js";
|
|
12
|
+
/** Record class represents a single database row */
|
|
13
|
+
export default class Record {
|
|
14
|
+
constructor(values, adapter, table) {
|
|
15
|
+
this._values = {};
|
|
16
|
+
this._values = values;
|
|
17
|
+
this._adapter = adapter;
|
|
18
|
+
this._table = table;
|
|
19
|
+
}
|
|
20
|
+
/** Get the raw values object for this record */
|
|
21
|
+
get values() {
|
|
22
|
+
return this._values;
|
|
23
|
+
}
|
|
24
|
+
;
|
|
25
|
+
/** Update this record in the database */
|
|
26
|
+
Update(newValues) {
|
|
27
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
28
|
+
const setClauses = Object.keys(newValues)
|
|
29
|
+
.map(key => `${key} = @${key}`)
|
|
30
|
+
.join(", ");
|
|
31
|
+
const originalValues = this._values;
|
|
32
|
+
if (originalValues.updated_at !== undefined) {
|
|
33
|
+
newValues.updated_at = new Date().toISOString();
|
|
34
|
+
}
|
|
35
|
+
const whereClauses = Object.keys(originalValues)
|
|
36
|
+
.map(key => `${key} = @where_${key}`)
|
|
37
|
+
.join(" AND ");
|
|
38
|
+
const query = `UPDATE "${this._table.Name}" SET ${setClauses} WHERE ${whereClauses};`;
|
|
39
|
+
const _query = new Query(this._table, query, this._adapter);
|
|
40
|
+
const params = Object.assign({}, newValues);
|
|
41
|
+
Object.entries(originalValues).forEach(([key, value]) => {
|
|
42
|
+
params[`where_${key}`] = value;
|
|
43
|
+
});
|
|
44
|
+
_query.Parameters = params;
|
|
45
|
+
yield _query.Run();
|
|
46
|
+
this._values = Object.assign(Object.assign({}, this._values), newValues);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/** Delete this record from the database */
|
|
50
|
+
Delete() {
|
|
51
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
const whereClauses = Object.keys(this._values)
|
|
53
|
+
.map(key => `${key} = @${key}`)
|
|
54
|
+
.join(" AND ");
|
|
55
|
+
const _query = new Query(this._table, `DELETE FROM "${this._table.Name}" WHERE ${whereClauses};`, this._adapter);
|
|
56
|
+
_query.Parameters = Object.assign({}, this._values);
|
|
57
|
+
yield _query.Run();
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
/** Returns the values object for JSON.stringify() */
|
|
61
|
+
toJSON() {
|
|
62
|
+
return this._values;
|
|
63
|
+
}
|
|
64
|
+
/** Convert record to pretty-printed JSON string */
|
|
65
|
+
toString() {
|
|
66
|
+
return JSON.stringify(this._values, null, 2);
|
|
67
|
+
}
|
|
68
|
+
/** Custom inspect for console.log() */
|
|
69
|
+
[inspect.custom]() {
|
|
70
|
+
return this._values;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { DefaultQueryOptions, Join, QueryOptions, ReadableTableColumnInfo, TableColumnInfo, columnType } from "../types/index.js";
|
|
2
|
+
import Record from "../base/Record.js";
|
|
3
|
+
/** Table class for interacting with a database table */
|
|
4
|
+
export default class Table {
|
|
5
|
+
private readonly _name;
|
|
6
|
+
private readonly _adapter;
|
|
7
|
+
/** Private constructor - use Table.create() */
|
|
8
|
+
constructor(name: string);
|
|
9
|
+
/** Get the table name */
|
|
10
|
+
get Name(): string;
|
|
11
|
+
/** Get raw column information */
|
|
12
|
+
TableColumnInformation(): Promise<TableColumnInfo[]>;
|
|
13
|
+
/** Get readable, formatted column information */
|
|
14
|
+
ReadableTableColumnInformation(): Promise<ReadableTableColumnInfo[]>;
|
|
15
|
+
Drop(): Promise<void>;
|
|
16
|
+
/** Fetch records with optional filtering, ordering, and pagination */
|
|
17
|
+
Records<Type>(options?: DefaultQueryOptions & QueryOptions): Promise<Record<Type>[]>;
|
|
18
|
+
/** Fetch a single record from the table */
|
|
19
|
+
Record<Type>(options?: DefaultQueryOptions & QueryOptions): Promise<Record<Type> | undefined>;
|
|
20
|
+
/** Get the total count of records */
|
|
21
|
+
RecordsCount(): Promise<number>;
|
|
22
|
+
/** Insert a record into the table */
|
|
23
|
+
Insert<Type>(values: columnType): Promise<Record<Type> | undefined>;
|
|
24
|
+
/** Perform JOIN operations with other tables */
|
|
25
|
+
Join<Type>(Joins: Join | Join[], options?: DefaultQueryOptions & QueryOptions): Promise<Record<Type>[]>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=Table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/base/Table.ts"],"names":[],"mappings":"AACA,OAAO,EACH,mBAAmB,EACnB,IAAI,EACJ,YAAY,EACZ,uBAAuB,EAEvB,eAAe,EAEf,UAAU,EACb,MAAM,sBAAsB,CAAC;AAE9B,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAI1C,wDAAwD;AACxD,MAAM,CAAC,OAAO,OAAO,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0D;IAEnF,+CAA+C;gBACnC,IAAI,EAAE,MAAM;IAIxB,yBAAyB;IACzB,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,iCAAiC;IACpB,sBAAsB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAIjE,iDAAiD;IACpC,8BAA8B,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAWpE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC,sEAAsE;IACzD,OAAO,CAAC,IAAI,EACrB,OAAO,CAAC,EAAE,mBAAmB,GAAG,YAAY,GAC7C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IAoB1B,2CAA2C;IAC9B,MAAM,CAAC,IAAI,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAAG,YAAY,GAC7C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IAWpC,qCAAqC;IACxB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAM5C,qCAAqC;IACxB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IA+BhF,gDAAgD;IACnC,IAAI,CAAC,IAAI,EAClB,KAAK,EAAE,IAAI,GAAG,IAAI,EAAE,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAAG,YAAY,GAC7C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;CAW7B"}
|