@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.
Files changed (135) hide show
  1. package/dist/abstract/Controller.d.ts +17 -0
  2. package/dist/abstract/Controller.d.ts.map +1 -0
  3. package/dist/abstract/Controller.js +47 -0
  4. package/dist/abstract/Model.d.ts +33 -19
  5. package/dist/abstract/Model.d.ts.map +1 -1
  6. package/dist/abstract/Model.js +177 -120
  7. package/dist/abstract/SchemaTableBuilder.d.ts +1 -1
  8. package/dist/abstract/SchemaTableBuilder.d.ts.map +1 -1
  9. package/dist/abstract/model/ModelRelation.d.ts +23 -0
  10. package/dist/abstract/model/ModelRelation.d.ts.map +1 -0
  11. package/dist/abstract/model/ModelRelation.js +130 -0
  12. package/dist/base/Query.d.ts +10 -13
  13. package/dist/base/Query.d.ts.map +1 -1
  14. package/dist/base/Query.js +68 -26
  15. package/dist/base/Record.d.ts +4 -2
  16. package/dist/base/Record.d.ts.map +1 -1
  17. package/dist/base/Record.js +24 -14
  18. package/dist/base/Table.d.ts +12 -7
  19. package/dist/base/Table.d.ts.map +1 -1
  20. package/dist/base/Table.js +87 -47
  21. package/dist/helpers/Errors/AdapterErrors/AdapterNotFoundError.d.ts +4 -0
  22. package/dist/helpers/Errors/AdapterErrors/AdapterNotFoundError.d.ts.map +1 -0
  23. package/dist/helpers/Errors/AdapterErrors/AdapterNotFoundError.js +6 -0
  24. package/dist/helpers/Errors/AdapterErrors/ConnectionFailedError.d.ts +4 -0
  25. package/dist/helpers/Errors/AdapterErrors/ConnectionFailedError.d.ts.map +1 -0
  26. package/dist/helpers/Errors/AdapterErrors/ConnectionFailedError.js +6 -0
  27. package/dist/helpers/Errors/AdapterErrors/NoDefaultAdapterError.d.ts +4 -0
  28. package/dist/helpers/Errors/AdapterErrors/NoDefaultAdapterError.d.ts.map +1 -0
  29. package/dist/helpers/Errors/AdapterErrors/NoDefaultAdapterError.js +6 -0
  30. package/dist/helpers/Errors/ExpressionErrors/InvalidExpressionParametersError.d.ts +4 -0
  31. package/dist/helpers/Errors/ExpressionErrors/InvalidExpressionParametersError.d.ts.map +1 -0
  32. package/dist/helpers/Errors/ExpressionErrors/InvalidExpressionParametersError.js +6 -0
  33. package/dist/helpers/Errors/ExpressionErrors/UnknownExpressionTypeError.d.ts +4 -0
  34. package/dist/helpers/Errors/ExpressionErrors/UnknownExpressionTypeError.d.ts.map +1 -0
  35. package/dist/helpers/Errors/ExpressionErrors/UnknownExpressionTypeError.js +6 -0
  36. package/dist/helpers/Errors/ExpressionErrors/UnsupportedQueryPhaseError.d.ts +4 -0
  37. package/dist/helpers/Errors/ExpressionErrors/UnsupportedQueryPhaseError.d.ts.map +1 -0
  38. package/dist/helpers/Errors/ExpressionErrors/UnsupportedQueryPhaseError.js +6 -0
  39. package/dist/helpers/Errors/QueryErrors/UnexpectedEmptyQueryError.d.ts +4 -0
  40. package/dist/helpers/Errors/QueryErrors/UnexpectedEmptyQueryError.d.ts.map +1 -0
  41. package/dist/helpers/Errors/QueryErrors/UnexpectedEmptyQueryError.js +6 -0
  42. package/dist/helpers/Errors/TableErrors/UnknownTableError.d.ts +4 -0
  43. package/dist/helpers/Errors/TableErrors/UnknownTableError.d.ts.map +1 -0
  44. package/dist/helpers/Errors/TableErrors/UnknownTableError.js +6 -0
  45. package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseDeleteQueryBuilder.d.ts +1 -0
  46. package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseDeleteQueryBuilder.d.ts.map +1 -0
  47. package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseDeleteQueryBuilder.js +1 -0
  48. package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseInsertQueryBuilder.d.ts +1 -0
  49. package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseInsertQueryBuilder.d.ts.map +1 -0
  50. package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseInsertQueryBuilder.js +11 -0
  51. package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseSelectQueryBuilder.d.ts +11 -0
  52. package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseSelectQueryBuilder.d.ts.map +1 -0
  53. package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseSelectQueryBuilder.js +27 -0
  54. package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseUpdateQueryBuilder.d.ts +1 -0
  55. package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseUpdateQueryBuilder.d.ts.map +1 -0
  56. package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseUpdateQueryBuilder.js +1 -0
  57. package/dist/helpers/QueryBuilders/ExpressionBuilders/JsonAggregateExpression.d.ts +9 -0
  58. package/dist/helpers/QueryBuilders/ExpressionBuilders/JsonAggregateExpression.d.ts.map +1 -0
  59. package/dist/helpers/QueryBuilders/ExpressionBuilders/JsonAggregateExpression.js +102 -0
  60. package/dist/helpers/QueryBuilders/ExpressionBuilders/SpatialDistanceExpression.d.ts +8 -0
  61. package/dist/helpers/QueryBuilders/ExpressionBuilders/SpatialDistanceExpression.d.ts.map +1 -0
  62. package/dist/helpers/QueryBuilders/ExpressionBuilders/SpatialDistanceExpression.js +63 -0
  63. package/dist/helpers/QueryBuilders/ExpressionBuilders/TextRelevanceExpression.d.ts +8 -0
  64. package/dist/helpers/QueryBuilders/ExpressionBuilders/TextRelevanceExpression.d.ts.map +1 -0
  65. package/dist/helpers/QueryBuilders/ExpressionBuilders/TextRelevanceExpression.js +49 -0
  66. package/dist/helpers/QueryBuilders/QueryDecorators/ExpressionDecorator.d.ts +19 -0
  67. package/dist/helpers/QueryBuilders/QueryDecorators/ExpressionDecorator.d.ts.map +1 -0
  68. package/dist/helpers/QueryBuilders/QueryDecorators/ExpressionDecorator.js +60 -0
  69. package/dist/helpers/QueryBuilders/QueryDecorators/GroupByDecorator.d.ts +9 -0
  70. package/dist/helpers/QueryBuilders/QueryDecorators/GroupByDecorator.d.ts.map +1 -0
  71. package/dist/helpers/QueryBuilders/QueryDecorators/GroupByDecorator.js +27 -0
  72. package/dist/helpers/QueryBuilders/QueryDecorators/JoinDecorator.d.ts +15 -0
  73. package/dist/helpers/QueryBuilders/QueryDecorators/JoinDecorator.d.ts.map +1 -0
  74. package/dist/helpers/QueryBuilders/QueryDecorators/JoinDecorator.js +74 -0
  75. package/dist/helpers/QueryBuilders/QueryDecorators/LimitDecorator.d.ts +10 -0
  76. package/dist/helpers/QueryBuilders/QueryDecorators/LimitDecorator.d.ts.map +1 -0
  77. package/dist/helpers/QueryBuilders/QueryDecorators/LimitDecorator.js +29 -0
  78. package/dist/helpers/QueryBuilders/QueryDecorators/OrderByDecorator.d.ts +9 -0
  79. package/dist/helpers/QueryBuilders/QueryDecorators/OrderByDecorator.d.ts.map +1 -0
  80. package/dist/helpers/QueryBuilders/QueryDecorators/OrderByDecorator.js +27 -0
  81. package/dist/helpers/QueryBuilders/QueryDecorators/QueryDecorator.d.ts +8 -0
  82. package/dist/helpers/QueryBuilders/QueryDecorators/QueryDecorator.d.ts.map +1 -0
  83. package/dist/helpers/QueryBuilders/QueryDecorators/QueryDecorator.js +5 -0
  84. package/dist/helpers/QueryBuilders/QueryDecorators/ValuesDecorator.d.ts +1 -0
  85. package/dist/helpers/QueryBuilders/QueryDecorators/ValuesDecorator.d.ts.map +1 -0
  86. package/dist/helpers/QueryBuilders/QueryDecorators/ValuesDecorator.js +17 -0
  87. package/dist/helpers/QueryBuilders/QueryDecorators/WhereDecorator.d.ts +9 -0
  88. package/dist/helpers/QueryBuilders/QueryDecorators/WhereDecorator.d.ts.map +1 -0
  89. package/dist/helpers/QueryBuilders/QueryDecorators/WhereDecorator.js +29 -0
  90. package/dist/helpers/QueryBuilders/QueryExpressionBuilder.d.ts +54 -0
  91. package/dist/helpers/QueryBuilders/QueryExpressionBuilder.d.ts.map +1 -0
  92. package/dist/helpers/QueryBuilders/QueryExpressionBuilder.js +102 -0
  93. package/dist/helpers/QueryBuilders/QueryStatementBuilder.d.ts +16 -0
  94. package/dist/helpers/QueryBuilders/QueryStatementBuilder.d.ts.map +1 -0
  95. package/dist/helpers/QueryBuilders/QueryStatementBuilder.js +169 -0
  96. package/dist/helpers/QueryBuilders/SqlRenderer.d.ts +15 -0
  97. package/dist/helpers/QueryBuilders/SqlRenderer.d.ts.map +1 -0
  98. package/dist/helpers/QueryBuilders/SqlRenderer.js +79 -0
  99. package/dist/helpers/QueryBuilders/oldQueryStatementBuilder.d.ts +160 -0
  100. package/dist/helpers/QueryBuilders/oldQueryStatementBuilder.d.ts.map +1 -0
  101. package/dist/helpers/QueryBuilders/oldQueryStatementBuilder.js +217 -0
  102. package/dist/interfaces/IExpressionBuilder.d.ts +7 -0
  103. package/dist/interfaces/IExpressionBuilder.d.ts.map +1 -0
  104. package/dist/interfaces/IExpressionBuilder.js +1 -0
  105. package/dist/interfaces/IQueryBuilder.d.ts +5 -0
  106. package/dist/interfaces/IQueryBuilder.d.ts.map +1 -0
  107. package/dist/interfaces/IQueryBuilder.js +1 -0
  108. package/dist/interfaces/ISchemaBuilder.d.ts +1 -1
  109. package/dist/interfaces/ISchemaBuilder.d.ts.map +1 -1
  110. package/dist/runtime/Container.d.ts +3 -0
  111. package/dist/runtime/Container.d.ts.map +1 -1
  112. package/dist/runtime/Container.js +12 -2
  113. package/dist/runtime/QueryCache.d.ts +12 -0
  114. package/dist/runtime/QueryCache.d.ts.map +1 -0
  115. package/dist/runtime/QueryCache.js +26 -0
  116. package/dist/runtime/Repository.d.ts +13 -7
  117. package/dist/runtime/Repository.d.ts.map +1 -1
  118. package/dist/runtime/Repository.js +114 -70
  119. package/dist/types/expressions.d.ts +154 -0
  120. package/dist/types/expressions.d.ts.map +1 -0
  121. package/dist/types/expressions.js +6 -0
  122. package/dist/types/factories.d.ts +7 -0
  123. package/dist/types/factories.d.ts.map +1 -0
  124. package/dist/types/factories.js +1 -0
  125. package/dist/types/index.d.ts +2 -0
  126. package/dist/types/index.d.ts.map +1 -1
  127. package/dist/types/index.js +2 -0
  128. package/dist/types/model.d.ts +8 -8
  129. package/dist/types/model.d.ts.map +1 -1
  130. package/dist/types/query.d.ts +63 -1
  131. package/dist/types/query.d.ts.map +1 -1
  132. package/package.json +11 -3
  133. package/dist/helpers/QueryStatementBuilder.d.ts +0 -304
  134. package/dist/helpers/QueryStatementBuilder.d.ts.map +0 -1
  135. 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
+ }
@@ -1,32 +1,29 @@
1
- import { columnType, QueryWhereCondition, QueryIsEqualParameter, TableColumnInfo, QueryComparisonParameters } from "../types/index.js";
2
- import { Record } from "../index.js";
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
- static TableColumnInformation(tableName: string, customAdapter?: string): Promise<TableColumnInfo[]>;
20
+ TableColumnInformation(tableName: string): Promise<TableColumnInfo[]>;
24
21
  DoesTableExist(): Promise<boolean>;
25
22
  Count(): Promise<number>;
26
- static ConvertParamsToArray(params: QueryWhereCondition): QueryComparisonParameters[];
23
+ ConvertParamsToArray(params: QueryWhereCondition): QueryComparisonParameters[];
27
24
  /** Convert various parameter formats to a consistent object format */
28
- static ConvertParamsToObject(params: QueryWhereCondition): QueryIsEqualParameter;
25
+ ConvertParamsToObject(params: QueryWhereCondition): QueryIsEqualParameter;
29
26
  /** Databases don't like numeric values when inserting with a query */
30
- static ConvertValueToString(params: QueryIsEqualParameter): QueryIsEqualParameter;
27
+ ConvertValueToString(params: QueryIsEqualParameter): QueryIsEqualParameter;
31
28
  }
32
29
  //# sourceMappingURL=Query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Query.d.ts","sourceRoot":"","sources":["../../src/base/Query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAC1I,OAAO,EAAa,MAAM,EAAoB,MAAM,gBAAgB,CAAC;AAErE,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,mDAAmD;AACnD,MAAM,CAAC,OAAO,OAAO,KAAK;IACxB,SAAgB,SAAS,EAAE,MAAM,CAAC;IAElC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,MAAM,CAAC,CAAc;IAC7B,OAAO,CAAC,WAAW,CAA2B;IAE9C,IAAW,UAAU,IAAI,mBAAmB,CAE3C;gBAEW,EACV,SAAS,EACT,KAAK,EACL,UAAU,EACV,WAAW,EACZ,EAAE,oBAAoB;IAUvB,gEAAgE;IACnD,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC;IAQvC,0DAA0D;IAC7C,GAAG,CAAC,IAAI,SAAS,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IAUpE,+DAA+D;IAClD,GAAG,CAAC,IAAI,SAAS,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;WAS1D,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAIpG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAIlC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;WASvB,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,yBAAyB,EAAE;IAkB5F,sEAAsE;WACxD,qBAAqB,CAAC,MAAM,EAAE,mBAAmB,GAAG,qBAAqB;IAavF,sEAAsE;WACxD,oBAAoB,CAAC,MAAM,EAAE,qBAAqB,GAAG,qBAAqB;CAKzF"}
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"}
@@ -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 "../index.js";
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 = Query.ConvertParamsToObject(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 Error("No query defined to run.");
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("No query defined to run.");
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 => new Record(this.TableName, 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("No query defined to run.");
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 ? new Record(this.TableName, results) : undefined;
74
+ const results = (yield stmt.get(this.Parameters));
75
+ return results
76
+ ? this._recordFactory(this.TableName, results)
77
+ : undefined;
55
78
  });
56
79
  }
57
- static TableColumnInformation(tableName, customAdapter) {
80
+ TableColumnInformation(tableName) {
58
81
  return __awaiter(this, void 0, void 0, function* () {
59
- return Container.getInstance().getAdapter(customAdapter).tableColumnInformation(tableName);
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
- return yield this._adapter.tableExists(this.TableName);
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("No query defined to run.");
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
- static ConvertParamsToArray(params) {
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
- static ConvertParamsToObject(params) {
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
- static ConvertValueToString(params) {
108
- return Object.entries(params).map(([key, value]) => {
109
- return { [key]: value !== null && !(value instanceof Date) && value !== undefined ? value.toString() : value };
110
- }).reduce((acc, curr) => (Object.assign(Object.assign({}, acc), curr)), {});
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
  }
@@ -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
- constructor(table: string, values: ColumnValuesType, adapter?: string);
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,EAAE,UAAU,EAAoC,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAG3G,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;gBAE7B,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,MAAM;IAMrE,gDAAgD;IAChD,IAAW,MAAM,IAAI,gBAAgB,CAEpC;IAEY,MAAM,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IA+ChD,yCAAyC;IAC5B,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAAE,eAAe,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BhH,2CAA2C;IAC9B,MAAM,CAAC,UAAU,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBtE,qDAAqD;IAC9C,MAAM,IAAI,gBAAgB;IAIjC,mDAAmD;IAC5C,QAAQ,IAAI,MAAM;IAIzB,uCAAuC;IACvC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,gBAAgB;CAGvC"}
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"}
@@ -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 = QueryStatementBuilder.BuildInsert(this._tableName, this._values);
34
- const query = new 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 queryStrSelect = QueryStatementBuilder.BuildSelect(this._tableName, { where: Object.assign({}, this._values) });
53
- const querySelect = new Query({
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 = QueryStatementBuilder.BuildUpdate(this._tableName, newValues, whereParameters);
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 = new 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 = QueryStatementBuilder.BuildDelete(this._tableName, this._values);
101
- const _query = new Query({
107
+ const queryStr = yield oldQueryStatementBuilder.BuildDelete(this._tableName, this._values);
108
+ const _query = this._queryFactory({
102
109
  tableName: this._tableName,
103
- query: queryStr, parameters: this.values, adapterName: this._customAdapter
110
+ query: queryStr,
111
+ parameters: this.values,
112
+ adapterName: this._customAdapter,
113
+ recordFactory: this._recordFactory
104
114
  });
105
115
  yield _query.Run();
106
116
  });
@@ -1,27 +1,32 @@
1
- import { DefaultQueryParameters, Join, ExtraQueryParameters, ReadableTableColumnInfo, TableColumnInfo, columnType } from "../types/index.js";
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>(options?: DefaultQueryParameters & ExtraQueryParameters): Promise<Record<Type>[]>;
19
+ Records<Type extends columnType>(queryLayers: QueryLayers): Promise<Record<Type>[]>;
16
20
  /** Fetch a single record from the table */
17
- Record<Type extends columnType>(options?: DefaultQueryParameters & ExtraQueryParameters): Promise<Record<Type> | undefined>;
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>(Joins: Join | Join[], options?: DefaultQueryParameters & ExtraQueryParameters): Promise<Record<Type>[]>;
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
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/base/Table.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,sBAAsB,EACtB,IAAI,EACJ,oBAAoB,EACpB,uBAAuB,EACvB,eAAe,EACf,UAAU,EACb,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAS,MAAM,gBAAgB,CAAC;AAE/C,wDAAwD;AACxD,MAAM,CAAC,OAAO,OAAO,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B,+CAA+C;gBACnC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;IAKhD,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;IAUlC,sEAAsE;IACzD,OAAO,CAAC,IAAI,SAAS,UAAU,EACxC,OAAO,CAAC,EAAE,sBAAsB,GAAG,oBAAoB,GACxD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IAsB1B,2CAA2C;IAC9B,MAAM,CAAC,IAAI,SAAS,UAAU,EACvC,OAAO,CAAC,EAAE,sBAAsB,GAAG,oBAAoB,GACxD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IAWpC,qCAAqC;IACxB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAS/B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IASvC,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,KAAK,EAAE,IAAI,GAAG,IAAI,EAAE,EACpB,OAAO,CAAC,EAAE,sBAAsB,GAAG,oBAAoB,GACxD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAsBZ,eAAe;CAgChC"}
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"}