@iamkirbki/database-handler-core 4.3.0 → 4.4.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/Controller.d.ts +17 -0
- package/dist/abstract/Controller.d.ts.map +1 -0
- package/dist/abstract/Controller.js +47 -0
- package/dist/abstract/Model.d.ts +33 -19
- package/dist/abstract/Model.d.ts.map +1 -1
- package/dist/abstract/Model.js +177 -120
- package/dist/abstract/SchemaTableBuilder.d.ts +1 -1
- package/dist/abstract/SchemaTableBuilder.d.ts.map +1 -1
- package/dist/abstract/model/ModelRelation.d.ts +23 -0
- package/dist/abstract/model/ModelRelation.d.ts.map +1 -0
- package/dist/abstract/model/ModelRelation.js +130 -0
- package/dist/base/Query.d.ts +10 -13
- package/dist/base/Query.d.ts.map +1 -1
- package/dist/base/Query.js +68 -26
- package/dist/base/Record.d.ts +4 -2
- package/dist/base/Record.d.ts.map +1 -1
- package/dist/base/Record.js +24 -14
- package/dist/base/Table.d.ts +12 -7
- package/dist/base/Table.d.ts.map +1 -1
- package/dist/base/Table.js +87 -47
- package/dist/helpers/Errors/AdapterErrors/AdapterNotFoundError.d.ts +4 -0
- package/dist/helpers/Errors/AdapterErrors/AdapterNotFoundError.d.ts.map +1 -0
- package/dist/helpers/Errors/AdapterErrors/AdapterNotFoundError.js +6 -0
- package/dist/helpers/Errors/AdapterErrors/ConnectionFailedError.d.ts +4 -0
- package/dist/helpers/Errors/AdapterErrors/ConnectionFailedError.d.ts.map +1 -0
- package/dist/helpers/Errors/AdapterErrors/ConnectionFailedError.js +6 -0
- package/dist/helpers/Errors/AdapterErrors/NoDefaultAdapterError.d.ts +4 -0
- package/dist/helpers/Errors/AdapterErrors/NoDefaultAdapterError.d.ts.map +1 -0
- package/dist/helpers/Errors/AdapterErrors/NoDefaultAdapterError.js +6 -0
- package/dist/helpers/Errors/ExpressionErrors/InvalidExpressionParametersError.d.ts +4 -0
- package/dist/helpers/Errors/ExpressionErrors/InvalidExpressionParametersError.d.ts.map +1 -0
- package/dist/helpers/Errors/ExpressionErrors/InvalidExpressionParametersError.js +6 -0
- package/dist/helpers/Errors/ExpressionErrors/UnknownExpressionTypeError.d.ts +4 -0
- package/dist/helpers/Errors/ExpressionErrors/UnknownExpressionTypeError.d.ts.map +1 -0
- package/dist/helpers/Errors/ExpressionErrors/UnknownExpressionTypeError.js +6 -0
- package/dist/helpers/Errors/ExpressionErrors/UnsupportedQueryPhaseError.d.ts +4 -0
- package/dist/helpers/Errors/ExpressionErrors/UnsupportedQueryPhaseError.d.ts.map +1 -0
- package/dist/helpers/Errors/ExpressionErrors/UnsupportedQueryPhaseError.js +6 -0
- package/dist/helpers/Errors/QueryErrors/UnexpectedEmptyQueryError.d.ts +4 -0
- package/dist/helpers/Errors/QueryErrors/UnexpectedEmptyQueryError.d.ts.map +1 -0
- package/dist/helpers/Errors/QueryErrors/UnexpectedEmptyQueryError.js +6 -0
- package/dist/helpers/Errors/TableErrors/UnknownTableError.d.ts +4 -0
- package/dist/helpers/Errors/TableErrors/UnknownTableError.d.ts.map +1 -0
- package/dist/helpers/Errors/TableErrors/UnknownTableError.js +6 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseDeleteQueryBuilder.d.ts +1 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseDeleteQueryBuilder.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseDeleteQueryBuilder.js +1 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseInsertQueryBuilder.d.ts +1 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseInsertQueryBuilder.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseInsertQueryBuilder.js +11 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseSelectQueryBuilder.d.ts +11 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseSelectQueryBuilder.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseSelectQueryBuilder.js +27 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseUpdateQueryBuilder.d.ts +1 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseUpdateQueryBuilder.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseUpdateQueryBuilder.js +1 -0
- package/dist/helpers/QueryBuilders/ExpressionBuilders/JsonAggregateExpression.d.ts +9 -0
- package/dist/helpers/QueryBuilders/ExpressionBuilders/JsonAggregateExpression.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/ExpressionBuilders/JsonAggregateExpression.js +102 -0
- package/dist/helpers/QueryBuilders/ExpressionBuilders/SpatialDistanceExpression.d.ts +8 -0
- package/dist/helpers/QueryBuilders/ExpressionBuilders/SpatialDistanceExpression.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/ExpressionBuilders/SpatialDistanceExpression.js +63 -0
- package/dist/helpers/QueryBuilders/ExpressionBuilders/TextRelevanceExpression.d.ts +8 -0
- package/dist/helpers/QueryBuilders/ExpressionBuilders/TextRelevanceExpression.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/ExpressionBuilders/TextRelevanceExpression.js +49 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/ExpressionDecorator.d.ts +19 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/ExpressionDecorator.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/ExpressionDecorator.js +60 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/GroupByDecorator.d.ts +9 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/GroupByDecorator.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/GroupByDecorator.js +27 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/JoinDecorator.d.ts +15 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/JoinDecorator.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/JoinDecorator.js +74 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/LimitDecorator.d.ts +10 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/LimitDecorator.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/LimitDecorator.js +29 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/OrderByDecorator.d.ts +9 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/OrderByDecorator.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/OrderByDecorator.js +27 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/QueryDecorator.d.ts +8 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/QueryDecorator.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/QueryDecorator.js +5 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/ValuesDecorator.d.ts +1 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/ValuesDecorator.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/ValuesDecorator.js +17 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/WhereDecorator.d.ts +9 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/WhereDecorator.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/QueryDecorators/WhereDecorator.js +29 -0
- package/dist/helpers/QueryBuilders/QueryExpressionBuilder.d.ts +54 -0
- package/dist/helpers/QueryBuilders/QueryExpressionBuilder.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/QueryExpressionBuilder.js +102 -0
- package/dist/helpers/QueryBuilders/QueryStatementBuilder.d.ts +16 -0
- package/dist/helpers/QueryBuilders/QueryStatementBuilder.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/QueryStatementBuilder.js +169 -0
- package/dist/helpers/QueryBuilders/SqlRenderer.d.ts +15 -0
- package/dist/helpers/QueryBuilders/SqlRenderer.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/SqlRenderer.js +79 -0
- package/dist/helpers/QueryBuilders/oldQueryStatementBuilder.d.ts +160 -0
- package/dist/helpers/QueryBuilders/oldQueryStatementBuilder.d.ts.map +1 -0
- package/dist/helpers/QueryBuilders/oldQueryStatementBuilder.js +217 -0
- package/dist/interfaces/IExpressionBuilder.d.ts +7 -0
- package/dist/interfaces/IExpressionBuilder.d.ts.map +1 -0
- package/dist/interfaces/IExpressionBuilder.js +1 -0
- package/dist/interfaces/IQueryBuilder.d.ts +5 -0
- package/dist/interfaces/IQueryBuilder.d.ts.map +1 -0
- package/dist/interfaces/IQueryBuilder.js +1 -0
- package/dist/interfaces/ISchemaBuilder.d.ts +1 -1
- package/dist/interfaces/ISchemaBuilder.d.ts.map +1 -1
- package/dist/runtime/Container.d.ts +3 -0
- package/dist/runtime/Container.d.ts.map +1 -1
- package/dist/runtime/Container.js +12 -2
- package/dist/runtime/QueryCache.d.ts +12 -0
- package/dist/runtime/QueryCache.d.ts.map +1 -0
- package/dist/runtime/QueryCache.js +26 -0
- package/dist/runtime/Repository.d.ts +13 -7
- package/dist/runtime/Repository.d.ts.map +1 -1
- package/dist/runtime/Repository.js +114 -70
- package/dist/types/expressions.d.ts +154 -0
- package/dist/types/expressions.d.ts.map +1 -0
- package/dist/types/expressions.js +6 -0
- package/dist/types/factories.d.ts +7 -0
- package/dist/types/factories.d.ts.map +1 -0
- package/dist/types/factories.js +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/model.d.ts +8 -8
- package/dist/types/model.d.ts.map +1 -1
- package/dist/types/query.d.ts +63 -1
- package/dist/types/query.d.ts.map +1 -1
- package/package.json +11 -3
- package/dist/helpers/QueryStatementBuilder.d.ts +0 -304
- package/dist/helpers/QueryStatementBuilder.d.ts.map +0 -1
- package/dist/helpers/QueryStatementBuilder.js +0 -417
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelRelation.d.ts","sourceRoot":"","sources":["../../../src/abstract/model/ModelRelation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAA6B,mBAAmB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACvI,OAAO,KAAK,MAAM,yBAAyB,CAAC;AAC5C,OAAO,UAAU,MAAM,6BAA6B,CAAC;AAErD,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,cAAc,CACxC,IAAI,SAAS,UAAU,EACvB,IAAI,SAAS,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;IAEtC,SAAS,CAAC,cAAc,EAAE,YAAY,EAAE,CAAM;IAC9C,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAM;IAErC,QAAQ,KAAK,aAAa,IAAI,WAAW,CAAC;IAC1C,SAAS,CAAC,QAAQ,KAAK,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5D,SAAS,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC;IAEpC,IAAW,cAAc,IAAI,YAAY,EAAE,CAE1C;IAED,IAAW,SAAS,IAAI,QAAQ,EAAE,CAEjC;IAEY,0BAA0B,CACnC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;cAYA,UAAU,CAAC,SAAS,SAAS,KAAK,CAAC,UAAU,CAAC,EAC1D,KAAK,EAAE,SAAS,EAChB,UAAU,GAAE,MAA+E,EAC3F,QAAQ,GAAE,MAAsC,EAChD,UAAU,GAAE,MAAuC,EACnD,eAAe,GAAE,MAAkD,EACnE,aAAa,GAAE,MAAqD,GACrE,OAAO,CAAC,IAAI,CAAC;IAoBhB,SAAS,CAAC,OAAO,CAAC,SAAS,SAAS,KAAK,CAAC,UAAU,CAAC,EACjD,KAAK,EAAE,SAAS,EAChB,UAAU,GAAE,MAAuE,EACnF,QAAQ,GAAE,MAAsC,GACjD,IAAI;IAUP,SAAS,CAAC,MAAM,CAAC,SAAS,SAAS,KAAK,CAAC,UAAU,CAAC,EAChD,KAAK,EAAE,SAAS,EAChB,UAAU,GAAE,MAA4C,EACxD,QAAQ,GAAE,MAAyE,GACpF,IAAI;IAUP,SAAS,CAAC,SAAS,CAAC,SAAS,SAAS,KAAK,CAAC,UAAU,CAAC,EACnD,KAAK,EAAE,SAAS,EAChB,UAAU,GAAE,MAAyE,EACrF,QAAQ,GAAE,MAAuC,GAClD,IAAI;WAUO,IAAI,CAAC,kBAAkB,SAAS,KAAK,CAAC,UAAU,CAAC,EAC3D,IAAI,EAAE,UAAU,kBAAkB,EAClC,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,mBAAmB,GAClC,kBAAkB;IAKd,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,mBAAmB,GAAG,IAAI;IAsBzD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBnF,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjE,OAAO,CAAC,oBAAoB;CAuB/B"}
|
|
@@ -0,0 +1,130 @@
|
|
|
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
|
+
export default class ModelRelations {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.joinedEntities = [];
|
|
13
|
+
this.relations = [];
|
|
14
|
+
}
|
|
15
|
+
get JoinedEntities() {
|
|
16
|
+
return this.joinedEntities;
|
|
17
|
+
}
|
|
18
|
+
get Relations() {
|
|
19
|
+
return this.relations;
|
|
20
|
+
}
|
|
21
|
+
insertRecordIntoPivotTable(otherTable, foreignKey) {
|
|
22
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
yield this.callRelationMethod(otherTable);
|
|
24
|
+
const relation = this.relations.pop();
|
|
25
|
+
if (!relation) {
|
|
26
|
+
throw new Error(`Relation for pivot table insertion not found.`);
|
|
27
|
+
}
|
|
28
|
+
yield this.repository.insertRecordIntoPivotTable(foreignKey, this.self, relation);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
ManyToMany(model_1) {
|
|
32
|
+
return __awaiter(this, arguments, void 0, function* (model, pivotTable = [this.Configuration.table, model.Configuration.table].sort().join('_'), localKey = this.Configuration.primaryKey, foreignKey = model.Configuration.primaryKey, pivotForeignKey = `${this.Configuration.table}_${localKey}`, pivotLocalKey = `${model.Configuration.table}_${foreignKey}`) {
|
|
33
|
+
const relation = yield this.repository.getManyToManyRelation({
|
|
34
|
+
type: 'manyToMany',
|
|
35
|
+
model: model,
|
|
36
|
+
pivotTable: pivotTable,
|
|
37
|
+
foreignKey: foreignKey,
|
|
38
|
+
pivotForeignKey: pivotForeignKey,
|
|
39
|
+
localKey: localKey,
|
|
40
|
+
pivotLocalKey: pivotLocalKey,
|
|
41
|
+
});
|
|
42
|
+
if (!relation) {
|
|
43
|
+
throw new Error(`Failed to create many-to-many relation for model ${model.Configuration.table}`);
|
|
44
|
+
}
|
|
45
|
+
this.relations.push(relation);
|
|
46
|
+
return this;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
hasMany(model, foreignKey = `${this.Configuration.table}_${this.Configuration.primaryKey}`, localKey = this.Configuration.primaryKey) {
|
|
50
|
+
this.relations.push({
|
|
51
|
+
type: 'hasMany',
|
|
52
|
+
model: model,
|
|
53
|
+
foreignKey: foreignKey,
|
|
54
|
+
localKey: localKey,
|
|
55
|
+
});
|
|
56
|
+
return this;
|
|
57
|
+
}
|
|
58
|
+
hasOne(model, foreignKey = `${model.Configuration.primaryKey}`, localKey = `${model.Configuration.table}_${model.Configuration.primaryKey}`) {
|
|
59
|
+
this.relations.push({
|
|
60
|
+
type: 'hasOne',
|
|
61
|
+
model: model,
|
|
62
|
+
foreignKey: foreignKey,
|
|
63
|
+
localKey: localKey,
|
|
64
|
+
});
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
belongsTo(model, foreignKey = `${model.Configuration.table}_${model.Configuration.primaryKey}`, localKey = model.Configuration.primaryKey) {
|
|
68
|
+
this.relations.push({
|
|
69
|
+
type: 'belongsTo',
|
|
70
|
+
model: model,
|
|
71
|
+
foreignKey: foreignKey,
|
|
72
|
+
localKey: localKey,
|
|
73
|
+
});
|
|
74
|
+
return this;
|
|
75
|
+
}
|
|
76
|
+
static with(relation, queryScopes) {
|
|
77
|
+
const instance = new this();
|
|
78
|
+
return instance.with(relation, queryScopes);
|
|
79
|
+
}
|
|
80
|
+
with(relation, queryScopes) {
|
|
81
|
+
const result = this.callRelationMethod(relation);
|
|
82
|
+
if (result instanceof Promise) {
|
|
83
|
+
throw new Error(`Relation method '${relation}' is asynchronous. Use asyncWith() instead of with().`);
|
|
84
|
+
}
|
|
85
|
+
const lastRelation = this.relations[this.relations.length - 1];
|
|
86
|
+
const tableName = lastRelation.model.Configuration.table;
|
|
87
|
+
const normalizedScopes = this.normalizeQueryScopes(queryScopes, tableName);
|
|
88
|
+
this.joinedEntities.push({
|
|
89
|
+
relation: relation,
|
|
90
|
+
queryScopes: normalizedScopes
|
|
91
|
+
});
|
|
92
|
+
return this;
|
|
93
|
+
}
|
|
94
|
+
asyncWith(relation, queryScopes) {
|
|
95
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
96
|
+
yield this.callRelationMethod(relation);
|
|
97
|
+
const lastRelation = this.relations[this.relations.length - 1];
|
|
98
|
+
const tableName = lastRelation.model.Configuration.table;
|
|
99
|
+
const normalizedScopes = this.normalizeQueryScopes(queryScopes, tableName);
|
|
100
|
+
this.joinedEntities.push({
|
|
101
|
+
relation: relation,
|
|
102
|
+
queryScopes: normalizedScopes
|
|
103
|
+
});
|
|
104
|
+
return this;
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
callRelationMethod(relation) {
|
|
108
|
+
const method = Reflect.get(this, relation);
|
|
109
|
+
if (typeof method !== 'function') {
|
|
110
|
+
throw new Error(`Relation method '${relation}' does not exist`);
|
|
111
|
+
}
|
|
112
|
+
const result = method.call(this);
|
|
113
|
+
//@TODO: check if method is not static
|
|
114
|
+
// Only return promise if the method is actually async
|
|
115
|
+
return result instanceof Promise ? result : undefined;
|
|
116
|
+
}
|
|
117
|
+
normalizeQueryScopes(queryScopes, tableName) {
|
|
118
|
+
if (!queryScopes) {
|
|
119
|
+
return undefined;
|
|
120
|
+
}
|
|
121
|
+
const isSingleParameter = Object.keys(queryScopes).length === 3 &&
|
|
122
|
+
'column' in queryScopes &&
|
|
123
|
+
'operator' in queryScopes &&
|
|
124
|
+
'value' in queryScopes;
|
|
125
|
+
const scopesArray = isSingleParameter
|
|
126
|
+
? [queryScopes]
|
|
127
|
+
: this.repository.ConvertParamsToArray(queryScopes);
|
|
128
|
+
return scopesArray.map(scope => (Object.assign(Object.assign({}, scope), { column: `${tableName}.${scope.column}` })));
|
|
129
|
+
}
|
|
130
|
+
}
|
package/dist/base/Query.d.ts
CHANGED
|
@@ -1,32 +1,29 @@
|
|
|
1
|
-
import { columnType, QueryWhereCondition, QueryIsEqualParameter, TableColumnInfo, QueryComparisonParameters } from
|
|
2
|
-
import { Record } from
|
|
3
|
-
export type QueryConstructorType = {
|
|
4
|
-
tableName: string;
|
|
5
|
-
query?: string;
|
|
6
|
-
parameters?: QueryWhereCondition;
|
|
7
|
-
adapterName?: string;
|
|
8
|
-
};
|
|
1
|
+
import { columnType, QueryWhereCondition, QueryIsEqualParameter, TableColumnInfo, QueryComparisonParameters, QueryConstructorType } from '../types/index.js';
|
|
2
|
+
import { Record } from '../index.js';
|
|
9
3
|
/** Query class for executing custom SQL queries */
|
|
10
4
|
export default class Query {
|
|
11
5
|
readonly TableName: string;
|
|
12
6
|
private readonly _adapter;
|
|
7
|
+
private readonly _recordFactory;
|
|
8
|
+
private readonly _queryCache;
|
|
13
9
|
private _query?;
|
|
14
10
|
private _parameters;
|
|
15
11
|
get Parameters(): QueryWhereCondition;
|
|
16
|
-
constructor({ tableName, query, parameters, adapterName }: QueryConstructorType);
|
|
12
|
+
constructor({ tableName, query, parameters, adapterName, recordFactory, }: QueryConstructorType);
|
|
13
|
+
private throwIfTableNotExists;
|
|
17
14
|
/** Execute a non-SELECT query (INSERT, UPDATE, DELETE, etc.) */
|
|
18
15
|
Run<Type>(): Promise<Type>;
|
|
19
16
|
/** Execute a SELECT query and return all matching rows */
|
|
20
17
|
All<Type extends columnType>(): Promise<Record<Type>[]>;
|
|
21
18
|
/** Execute a SELECT query and return the first matching row */
|
|
22
19
|
Get<Type extends columnType>(): Promise<Record<Type> | undefined>;
|
|
23
|
-
|
|
20
|
+
TableColumnInformation(tableName: string): Promise<TableColumnInfo[]>;
|
|
24
21
|
DoesTableExist(): Promise<boolean>;
|
|
25
22
|
Count(): Promise<number>;
|
|
26
|
-
|
|
23
|
+
ConvertParamsToArray(params: QueryWhereCondition): QueryComparisonParameters[];
|
|
27
24
|
/** Convert various parameter formats to a consistent object format */
|
|
28
|
-
|
|
25
|
+
ConvertParamsToObject(params: QueryWhereCondition): QueryIsEqualParameter;
|
|
29
26
|
/** Databases don't like numeric values when inserting with a query */
|
|
30
|
-
|
|
27
|
+
ConvertValueToString(params: QueryIsEqualParameter): QueryIsEqualParameter;
|
|
31
28
|
}
|
|
32
29
|
//# sourceMappingURL=Query.d.ts.map
|
package/dist/base/Query.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Query.d.ts","sourceRoot":"","sources":["../../src/base/Query.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Query.d.ts","sourceRoot":"","sources":["../../src/base/Query.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,EACf,yBAAyB,EACzB,oBAAoB,EAErB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAa,MAAM,EAAoB,MAAM,gBAAgB,CAAC;AAKrE,mDAAmD;AACnD,MAAM,CAAC,OAAO,OAAO,KAAK;IACxB,SAAgB,SAAS,EAAE,MAAM,CAAC;IAElC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,WAAW,CAA2B;IAE9C,IAAW,UAAU,IAAI,mBAAmB,CAE3C;gBAEW,EACV,SAAS,EACT,KAAK,EACL,UAAU,EACV,WAAW,EACX,aACoC,GACrC,EAAE,oBAAoB;YAaT,qBAAqB;IAWnC,gEAAgE;IACnD,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC;IAUvC,0DAA0D;IAC7C,GAAG,CAAC,IAAI,SAAS,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IAWpE,+DAA+D;IAClD,GAAG,CAAC,IAAI,SAAS,UAAU,KAAK,OAAO,CAClD,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CACzB;IAaY,sBAAsB,CACjC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,EAAE,CAAC;IAUhB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAalC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAW9B,oBAAoB,CACzB,MAAM,EAAE,mBAAmB,GAC1B,yBAAyB,EAAE;IAkB9B,sEAAsE;IAC/D,qBAAqB,CAC1B,MAAM,EAAE,mBAAmB,GAC1B,qBAAqB;IAaxB,sEAAsE;IAC/D,oBAAoB,CACzB,MAAM,EAAE,qBAAqB,GAC5B,qBAAqB;CAYzB"}
|
package/dist/base/Query.js
CHANGED
|
@@ -7,74 +7,110 @@ 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 { Container, Record } from
|
|
10
|
+
import { Container, Record } from '../index.js';
|
|
11
|
+
import UnknownTableError from '../helpers/Errors/TableErrors/UnknownTableError.js';
|
|
12
|
+
import UnexpectedEmptyQueryError from '../helpers/Errors/QueryErrors/UnexpectedEmptyQueryError.js';
|
|
13
|
+
import QueryCache from '../runtime/QueryCache.js';
|
|
11
14
|
/** Query class for executing custom SQL queries */
|
|
12
15
|
export default class Query {
|
|
13
16
|
get Parameters() {
|
|
14
17
|
return this._parameters;
|
|
15
18
|
}
|
|
16
|
-
constructor({ tableName, query, parameters, adapterName }) {
|
|
17
|
-
this._query = "";
|
|
19
|
+
constructor({ tableName, query, parameters, adapterName, recordFactory = (table, values, adapter) => new Record(table, values, adapter), }) {
|
|
18
20
|
this._parameters = {};
|
|
19
21
|
this.TableName = tableName;
|
|
20
22
|
this._query = query;
|
|
21
23
|
if (parameters)
|
|
22
|
-
this._parameters =
|
|
24
|
+
this._parameters = this.ConvertParamsToObject(parameters);
|
|
25
|
+
// eslint-disable-next-line no-undef
|
|
26
|
+
if (Container.getInstance().logging)
|
|
27
|
+
this._query ? console.info(this._query, "\n", this._parameters) : console.info("No query found, probably checking if a table exists or getting the table column information.");
|
|
23
28
|
this._adapter = Container.getInstance().getAdapter(adapterName);
|
|
29
|
+
this._queryCache = QueryCache.getInstance();
|
|
30
|
+
this._recordFactory = recordFactory;
|
|
31
|
+
}
|
|
32
|
+
throwIfTableNotExists() {
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
if (!this._queryCache.doesTableExist(this.TableName)) {
|
|
35
|
+
const exists = yield this.DoesTableExist();
|
|
36
|
+
if (!exists) {
|
|
37
|
+
throw new UnknownTableError(this.TableName);
|
|
38
|
+
}
|
|
39
|
+
this._queryCache.addExistingTable(this.TableName);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
24
42
|
}
|
|
25
43
|
/** Execute a non-SELECT query (INSERT, UPDATE, DELETE, etc.) */
|
|
26
44
|
Run() {
|
|
27
45
|
return __awaiter(this, void 0, void 0, function* () {
|
|
46
|
+
yield this.throwIfTableNotExists();
|
|
28
47
|
if (!this._query) {
|
|
29
|
-
throw new
|
|
48
|
+
throw new UnexpectedEmptyQueryError();
|
|
30
49
|
}
|
|
31
50
|
const stmt = yield this._adapter.prepare(this._query);
|
|
32
|
-
return yield stmt.run(this.Parameters);
|
|
51
|
+
return (yield stmt.run(this.Parameters));
|
|
33
52
|
});
|
|
34
53
|
}
|
|
35
54
|
/** Execute a SELECT query and return all matching rows */
|
|
36
55
|
All() {
|
|
37
56
|
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
yield this.throwIfTableNotExists();
|
|
38
58
|
if (!this._query) {
|
|
39
|
-
throw new Error(
|
|
59
|
+
throw new Error('No query defined to run.');
|
|
40
60
|
}
|
|
41
61
|
const stmt = yield this._adapter.prepare(this._query);
|
|
42
|
-
const results = yield stmt.all(this.Parameters);
|
|
43
|
-
return results.map(res =>
|
|
62
|
+
const results = (yield stmt.all(this.Parameters));
|
|
63
|
+
return results.map((res) => this._recordFactory(this.TableName, res));
|
|
44
64
|
});
|
|
45
65
|
}
|
|
46
66
|
/** Execute a SELECT query and return the first matching row */
|
|
47
67
|
Get() {
|
|
48
68
|
return __awaiter(this, void 0, void 0, function* () {
|
|
69
|
+
yield this.throwIfTableNotExists();
|
|
49
70
|
if (!this._query) {
|
|
50
|
-
throw new Error(
|
|
71
|
+
throw new Error('No query defined to run.');
|
|
51
72
|
}
|
|
52
73
|
const stmt = yield this._adapter.prepare(this._query);
|
|
53
|
-
const results = yield stmt.get(this.Parameters);
|
|
54
|
-
return results
|
|
74
|
+
const results = (yield stmt.get(this.Parameters));
|
|
75
|
+
return results
|
|
76
|
+
? this._recordFactory(this.TableName, results)
|
|
77
|
+
: undefined;
|
|
55
78
|
});
|
|
56
79
|
}
|
|
57
|
-
|
|
80
|
+
TableColumnInformation(tableName) {
|
|
58
81
|
return __awaiter(this, void 0, void 0, function* () {
|
|
59
|
-
|
|
82
|
+
let tableColumnInfo = this._queryCache.getTableColumnInformation(tableName);
|
|
83
|
+
if (tableColumnInfo)
|
|
84
|
+
return tableColumnInfo;
|
|
85
|
+
tableColumnInfo = yield this._adapter.tableColumnInformation(tableName);
|
|
86
|
+
this._queryCache.setTableColumnInformation(tableName, tableColumnInfo);
|
|
87
|
+
return tableColumnInfo;
|
|
60
88
|
});
|
|
61
89
|
}
|
|
62
90
|
DoesTableExist() {
|
|
63
91
|
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
-
|
|
92
|
+
if (this._queryCache.doesTableExist(this.TableName)) {
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
const exists = yield this._adapter.tableExists(this.TableName);
|
|
96
|
+
if (exists) {
|
|
97
|
+
this._queryCache.addExistingTable(this.TableName);
|
|
98
|
+
}
|
|
99
|
+
return exists;
|
|
65
100
|
});
|
|
66
101
|
}
|
|
67
102
|
Count() {
|
|
68
103
|
return __awaiter(this, void 0, void 0, function* () {
|
|
104
|
+
yield this.throwIfTableNotExists();
|
|
69
105
|
if (!this._query) {
|
|
70
|
-
throw new Error(
|
|
106
|
+
throw new Error('No query defined to run.');
|
|
71
107
|
}
|
|
72
108
|
const stmt = yield this._adapter.prepare(this._query);
|
|
73
|
-
const result = yield stmt.get(this.Parameters);
|
|
109
|
+
const result = (yield stmt.get(this.Parameters));
|
|
74
110
|
return parseInt(result.count) || 0;
|
|
75
111
|
});
|
|
76
112
|
}
|
|
77
|
-
|
|
113
|
+
ConvertParamsToArray(params) {
|
|
78
114
|
const paramArray = [];
|
|
79
115
|
if (Array.isArray(params)) {
|
|
80
116
|
return params;
|
|
@@ -83,18 +119,18 @@ export default class Query {
|
|
|
83
119
|
Object.entries(params).forEach(([key, value]) => {
|
|
84
120
|
return paramArray.push({
|
|
85
121
|
column: key,
|
|
86
|
-
operator:
|
|
87
|
-
value
|
|
122
|
+
operator: '=',
|
|
123
|
+
value,
|
|
88
124
|
});
|
|
89
125
|
});
|
|
90
126
|
}
|
|
91
127
|
return paramArray;
|
|
92
128
|
}
|
|
93
129
|
/** Convert various parameter formats to a consistent object format */
|
|
94
|
-
|
|
130
|
+
ConvertParamsToObject(params) {
|
|
95
131
|
const paramObject = {};
|
|
96
132
|
if (Array.isArray(params)) {
|
|
97
|
-
params.forEach(param => {
|
|
133
|
+
params.forEach((param) => {
|
|
98
134
|
paramObject[param.column] = param.value;
|
|
99
135
|
});
|
|
100
136
|
}
|
|
@@ -104,9 +140,15 @@ export default class Query {
|
|
|
104
140
|
return this.ConvertValueToString(paramObject);
|
|
105
141
|
}
|
|
106
142
|
/** Databases don't like numeric values when inserting with a query */
|
|
107
|
-
|
|
108
|
-
return Object.entries(params)
|
|
109
|
-
|
|
110
|
-
|
|
143
|
+
ConvertValueToString(params) {
|
|
144
|
+
return Object.entries(params)
|
|
145
|
+
.map(([key, value]) => {
|
|
146
|
+
return {
|
|
147
|
+
[key]: value !== null && !(value instanceof Date) && value !== undefined
|
|
148
|
+
? value.toString()
|
|
149
|
+
: value,
|
|
150
|
+
};
|
|
151
|
+
})
|
|
152
|
+
.reduce((acc, curr) => (Object.assign(Object.assign({}, acc), curr)), {});
|
|
111
153
|
}
|
|
112
154
|
}
|
package/dist/base/Record.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { inspect } from "util";
|
|
2
|
-
import { columnType, QueryIsEqualParameter } from "../types/index.js";
|
|
2
|
+
import { columnType, QueryIsEqualParameter, QueryFactory, RecordFactory } from "../types/index.js";
|
|
3
3
|
/** Record class represents a single database row */
|
|
4
4
|
export default class Record<ColumnValuesType extends columnType> {
|
|
5
5
|
private _values;
|
|
6
6
|
private readonly _tableName;
|
|
7
7
|
private readonly _customAdapter?;
|
|
8
|
-
|
|
8
|
+
private readonly _queryFactory;
|
|
9
|
+
private readonly _recordFactory;
|
|
10
|
+
constructor(table: string, values: ColumnValuesType, adapter?: string, queryFactory?: QueryFactory, recordFactory?: RecordFactory);
|
|
9
11
|
/** Get the raw values object for this record */
|
|
10
12
|
get values(): ColumnValuesType;
|
|
11
13
|
Insert(): Promise<this | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Record.d.ts","sourceRoot":"","sources":["../../src/base/Record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,
|
|
1
|
+
{"version":3,"file":"Record.d.ts","sourceRoot":"","sources":["../../src/base/Record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EACH,UAAU,EAGV,qBAAqB,EACrB,YAAY,EACZ,aAAa,EAChB,MAAM,sBAAsB,CAAC;AAI9B,oDAAoD;AACpD,MAAM,CAAC,OAAO,OAAO,MAAM,CAAC,gBAAgB,SAAS,UAAU;IAC3D,OAAO,CAAC,OAAO,CAA4C;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;gBAG3C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,MAAM,EAChB,YAAY,GAAE,YAA4C,EAC1D,aAAa,GAAE,aAA8E;IASjG,gDAAgD;IAChD,IAAW,MAAM,IAAI,gBAAgB,CAEpC;IAEY,MAAM,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAkDhD,yCAAyC;IAC5B,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAAE,eAAe,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BhH,2CAA2C;IAC9B,MAAM,CAAC,UAAU,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBtE,qDAAqD;IAC9C,MAAM,IAAI,gBAAgB;IAIjC,mDAAmD;IAC5C,QAAQ,IAAI,MAAM;IAIzB,uCAAuC;IACvC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,gBAAgB;CAGvC"}
|
package/dist/base/Record.js
CHANGED
|
@@ -9,14 +9,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { inspect } from "util";
|
|
11
11
|
import Query from "./Query.js";
|
|
12
|
-
import QueryStatementBuilder from "../helpers/QueryStatementBuilder.js";
|
|
12
|
+
import QueryStatementBuilder from "../helpers/QueryBuilders/QueryStatementBuilder.js";
|
|
13
|
+
import oldQueryStatementBuilder from "../helpers/QueryBuilders/oldQueryStatementBuilder.js";
|
|
13
14
|
/** Record class represents a single database row */
|
|
14
15
|
export default class Record {
|
|
15
|
-
constructor(table, values, adapter) {
|
|
16
|
+
constructor(table, values, adapter, queryFactory = (config) => new Query(config), recordFactory = (table, values, adapter) => new Record(table, values, adapter)) {
|
|
16
17
|
this._values = {};
|
|
17
18
|
this._tableName = table;
|
|
18
19
|
this._values = values;
|
|
19
20
|
this._customAdapter = adapter;
|
|
21
|
+
this._queryFactory = queryFactory;
|
|
22
|
+
this._recordFactory = recordFactory;
|
|
20
23
|
}
|
|
21
24
|
/** Get the raw values object for this record */
|
|
22
25
|
get values() {
|
|
@@ -30,12 +33,13 @@ export default class Record {
|
|
|
30
33
|
if (columns.length === 0) {
|
|
31
34
|
throw new Error("Cannot insert record with no columns");
|
|
32
35
|
}
|
|
33
|
-
const queryStr =
|
|
34
|
-
const query =
|
|
36
|
+
const queryStr = yield oldQueryStatementBuilder.BuildInsert(this._tableName, this._values);
|
|
37
|
+
const query = this._queryFactory({
|
|
35
38
|
tableName: this._tableName,
|
|
36
39
|
query: queryStr,
|
|
37
40
|
parameters: this._values,
|
|
38
|
-
adapterName: this._customAdapter
|
|
41
|
+
adapterName: this._customAdapter,
|
|
42
|
+
recordFactory: this._recordFactory
|
|
39
43
|
});
|
|
40
44
|
const result = yield query.Run();
|
|
41
45
|
let recordId;
|
|
@@ -49,12 +53,14 @@ export default class Record {
|
|
|
49
53
|
if (recordId === undefined) {
|
|
50
54
|
return undefined;
|
|
51
55
|
}
|
|
52
|
-
const
|
|
53
|
-
const
|
|
56
|
+
const builder = new QueryStatementBuilder({ base: { from: this._tableName, where: Object.assign({}, this._values) } });
|
|
57
|
+
const queryStrSelect = yield builder.build();
|
|
58
|
+
const querySelect = this._queryFactory({
|
|
54
59
|
tableName: this._tableName,
|
|
55
60
|
query: queryStrSelect,
|
|
56
61
|
parameters: this._values,
|
|
57
|
-
adapterName: this._customAdapter
|
|
62
|
+
adapterName: this._customAdapter,
|
|
63
|
+
recordFactory: this._recordFactory
|
|
58
64
|
});
|
|
59
65
|
const insertedRecord = yield querySelect.All();
|
|
60
66
|
if (insertedRecord.length > 0) {
|
|
@@ -71,17 +77,18 @@ export default class Record {
|
|
|
71
77
|
if (originalValues.updated_at !== undefined) {
|
|
72
78
|
newValues.updated_at = new Date().toISOString();
|
|
73
79
|
}
|
|
74
|
-
const queryStr =
|
|
80
|
+
const queryStr = yield oldQueryStatementBuilder.BuildUpdate(this._tableName, newValues, whereParameters);
|
|
75
81
|
// Merge newValues and originalValues for parameters (with 'where_' prefix for where clause)
|
|
76
82
|
const params = Object.assign({}, newValues);
|
|
77
83
|
Object.entries(originalValues).forEach(([key, value]) => {
|
|
78
84
|
params[`where_${key}`] = value;
|
|
79
85
|
});
|
|
80
|
-
const _query =
|
|
86
|
+
const _query = this._queryFactory({
|
|
81
87
|
tableName: this._tableName,
|
|
82
88
|
query: queryStr,
|
|
83
89
|
parameters: params,
|
|
84
|
-
adapterName: this._customAdapter
|
|
90
|
+
adapterName: this._customAdapter,
|
|
91
|
+
recordFactory: this._recordFactory
|
|
85
92
|
});
|
|
86
93
|
yield _query.Run();
|
|
87
94
|
this._values = Object.assign(Object.assign({}, this._values), newValues);
|
|
@@ -97,10 +104,13 @@ export default class Record {
|
|
|
97
104
|
yield this.Update(this._values, this._values.id ? { id: this._values.id } : primaryKey || {});
|
|
98
105
|
return;
|
|
99
106
|
}
|
|
100
|
-
const queryStr =
|
|
101
|
-
const _query =
|
|
107
|
+
const queryStr = yield oldQueryStatementBuilder.BuildDelete(this._tableName, this._values);
|
|
108
|
+
const _query = this._queryFactory({
|
|
102
109
|
tableName: this._tableName,
|
|
103
|
-
query: queryStr,
|
|
110
|
+
query: queryStr,
|
|
111
|
+
parameters: this.values,
|
|
112
|
+
adapterName: this._customAdapter,
|
|
113
|
+
recordFactory: this._recordFactory
|
|
104
114
|
});
|
|
105
115
|
yield _query.Run();
|
|
106
116
|
});
|
package/dist/base/Table.d.ts
CHANGED
|
@@ -1,27 +1,32 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Record } from "../index.js";
|
|
1
|
+
import { ReadableTableColumnInfo, TableColumnInfo, columnType, QueryFactory, RecordFactory, QueryLayers } from "../types/index.js";
|
|
2
|
+
import { Record, Query } from "../index.js";
|
|
3
3
|
/** Table class for interacting with a database table */
|
|
4
4
|
export default class Table {
|
|
5
|
+
private readonly _query;
|
|
5
6
|
private readonly _customAdapter?;
|
|
6
7
|
private readonly _name;
|
|
8
|
+
private readonly _queryFactory;
|
|
9
|
+
private readonly _recordFactory;
|
|
7
10
|
/** Private constructor - use Table.create() */
|
|
8
|
-
constructor(name: string, customAdapter?: string);
|
|
11
|
+
constructor(name: string, customAdapter?: string, queryFactory?: QueryFactory, recordFactory?: RecordFactory);
|
|
12
|
+
get QueryHelperObject(): Query;
|
|
9
13
|
/** Get raw column information */
|
|
10
|
-
TableColumnInformation(): Promise<TableColumnInfo[]>;
|
|
14
|
+
TableColumnInformation(tableName?: string): Promise<TableColumnInfo[]>;
|
|
11
15
|
/** Get readable, formatted column information */
|
|
12
16
|
ReadableTableColumnInformation(): Promise<ReadableTableColumnInfo[]>;
|
|
13
17
|
Drop(): Promise<void>;
|
|
14
18
|
/** Fetch records with optional filtering, ordering, and pagination */
|
|
15
|
-
Records<Type extends columnType>(
|
|
19
|
+
Records<Type extends columnType>(queryLayers: QueryLayers): Promise<Record<Type>[]>;
|
|
16
20
|
/** Fetch a single record from the table */
|
|
17
|
-
Record<Type extends columnType>(
|
|
21
|
+
Record<Type extends columnType>(queryLayers: QueryLayers): Promise<Record<Type> | undefined>;
|
|
18
22
|
/** Get the total count of records */
|
|
19
23
|
RecordsCount(): Promise<number>;
|
|
20
24
|
exists(): Promise<boolean>;
|
|
21
25
|
/** Insert a record into the table */
|
|
22
26
|
Insert<Type extends columnType>(values: Type): Promise<Record<Type> | undefined>;
|
|
23
27
|
/** Perform JOIN operations with other tables */
|
|
24
|
-
Join<Type extends columnType>(
|
|
28
|
+
Join<Type extends columnType>(queryLayers: QueryLayers): Promise<Record<Type>[]>;
|
|
25
29
|
private splitJoinValues;
|
|
30
|
+
toSql(queryLayers: QueryLayers): Promise<string>;
|
|
26
31
|
}
|
|
27
32
|
//# sourceMappingURL=Table.d.ts.map
|
package/dist/base/Table.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/base/Table.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,
|
|
1
|
+
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/base/Table.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,uBAAuB,EACvB,eAAe,EACf,UAAU,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE/C,wDAAwD;AACxD,MAAM,CAAC,OAAO,OAAO,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAE/C,+CAA+C;gBAE3C,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,MAAM,EACtB,YAAY,GAAE,YAA4C,EAC1D,aAAa,GAAE,aAA8E;IAcjG,IAAW,iBAAiB,IAAI,KAAK,CAEpC;IAED,iCAAiC;IACpB,sBAAsB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAInF,iDAAiD;IACpC,8BAA8B,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAWpE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAWlC,sEAAsE;IACzD,OAAO,CAAC,IAAI,SAAS,UAAU,EACxC,WAAW,EAAE,WAAW,GACzB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IAqB1B,2CAA2C;IAC9B,MAAM,CAAC,IAAI,SAAS,UAAU,EACvC,WAAW,EAAE,WAAW,GACzB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IAYpC,qCAAqC;IACxB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAU/B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAUvC,qCAAqC;IACxB,MAAM,CAAC,IAAI,SAAS,UAAU,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IAM7F,gDAAgD;IACnC,IAAI,CAAC,IAAI,SAAS,UAAU,EACrC,WAAW,EAAE,WAAW,GACzB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAsCZ,eAAe;IAkChB,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;CAoBhE"}
|