@iamkirbki/database-handler-core 4.4.7 → 4.4.8

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 (172) hide show
  1. package/dist/abstract/Controller.d.ts +2 -2
  2. package/dist/abstract/Controller.d.ts.map +1 -1
  3. package/dist/abstract/Controller.js +1 -1
  4. package/dist/abstract/Model.d.ts +10 -9
  5. package/dist/abstract/Model.d.ts.map +1 -1
  6. package/dist/abstract/Model.js +92 -70
  7. package/dist/abstract/SchemaTableBuilder.d.ts +1 -1
  8. package/dist/abstract/SchemaTableBuilder.d.ts.map +1 -1
  9. package/dist/abstract/SchemaTableBuilder.js +1 -1
  10. package/dist/abstract/model/ModelRelation.d.ts +5 -4
  11. package/dist/abstract/model/ModelRelation.d.ts.map +1 -1
  12. package/dist/abstract/model/ModelRelation.js +35 -27
  13. package/dist/base/Query.d.ts +4 -8
  14. package/dist/base/Query.d.ts.map +1 -1
  15. package/dist/base/Query.js +91 -73
  16. package/dist/base/Record.d.ts +5 -4
  17. package/dist/base/Record.d.ts.map +1 -1
  18. package/dist/base/Record.js +44 -23
  19. package/dist/base/Table.d.ts +17 -14
  20. package/dist/base/Table.d.ts.map +1 -1
  21. package/dist/base/Table.js +123 -89
  22. package/dist/factories/ModelFactory.d.ts +7 -0
  23. package/dist/factories/ModelFactory.d.ts.map +1 -0
  24. package/dist/factories/ModelFactory.js +6 -0
  25. package/dist/factories/QueryFactory.d.ts +7 -0
  26. package/dist/factories/QueryFactory.d.ts.map +1 -0
  27. package/dist/factories/QueryFactory.js +6 -0
  28. package/dist/factories/RecordFactory.d.ts +8 -0
  29. package/dist/factories/RecordFactory.d.ts.map +1 -0
  30. package/dist/factories/RecordFactory.js +6 -0
  31. package/dist/factories/TableFactory.d.ts +7 -0
  32. package/dist/factories/TableFactory.d.ts.map +1 -0
  33. package/dist/factories/TableFactory.js +6 -0
  34. package/dist/helpers/Errors/AdapterErrors/AdapterNotFoundError.d.ts +2 -1
  35. package/dist/helpers/Errors/AdapterErrors/AdapterNotFoundError.d.ts.map +1 -1
  36. package/dist/helpers/Errors/AdapterErrors/AdapterNotFoundError.js +3 -3
  37. package/dist/helpers/Errors/AdapterErrors/ConnectionFailedError.d.ts +2 -1
  38. package/dist/helpers/Errors/AdapterErrors/ConnectionFailedError.d.ts.map +1 -1
  39. package/dist/helpers/Errors/AdapterErrors/ConnectionFailedError.js +3 -3
  40. package/dist/helpers/Errors/AdapterErrors/NoDefaultAdapterError.d.ts +2 -1
  41. package/dist/helpers/Errors/AdapterErrors/NoDefaultAdapterError.d.ts.map +1 -1
  42. package/dist/helpers/Errors/AdapterErrors/NoDefaultAdapterError.js +3 -3
  43. package/dist/helpers/Errors/DatabaseHandlerError.d.ts +9 -0
  44. package/dist/helpers/Errors/DatabaseHandlerError.d.ts.map +1 -0
  45. package/dist/helpers/Errors/DatabaseHandlerError.js +10 -0
  46. package/dist/helpers/Errors/ExpressionErrors/InvalidExpressionParametersError.d.ts +2 -1
  47. package/dist/helpers/Errors/ExpressionErrors/InvalidExpressionParametersError.d.ts.map +1 -1
  48. package/dist/helpers/Errors/ExpressionErrors/InvalidExpressionParametersError.js +5 -3
  49. package/dist/helpers/Errors/ExpressionErrors/UnknownExpressionTypeError.d.ts +2 -1
  50. package/dist/helpers/Errors/ExpressionErrors/UnknownExpressionTypeError.d.ts.map +1 -1
  51. package/dist/helpers/Errors/ExpressionErrors/UnknownExpressionTypeError.js +5 -3
  52. package/dist/helpers/Errors/ExpressionErrors/UnsupportedQueryPhaseError.d.ts +2 -1
  53. package/dist/helpers/Errors/ExpressionErrors/UnsupportedQueryPhaseError.d.ts.map +1 -1
  54. package/dist/helpers/Errors/ExpressionErrors/UnsupportedQueryPhaseError.js +3 -3
  55. package/dist/helpers/Errors/ModelErrors/InvalidOperationError.d.ts +5 -0
  56. package/dist/helpers/Errors/ModelErrors/InvalidOperationError.d.ts.map +1 -0
  57. package/dist/helpers/Errors/ModelErrors/InvalidOperationError.js +6 -0
  58. package/dist/helpers/Errors/ModelErrors/RecordNotFoundError.d.ts +6 -0
  59. package/dist/helpers/Errors/ModelErrors/RecordNotFoundError.d.ts.map +1 -0
  60. package/dist/helpers/Errors/ModelErrors/RecordNotFoundError.js +6 -0
  61. package/dist/helpers/Errors/ModelErrors/RelationError.d.ts +5 -0
  62. package/dist/helpers/Errors/ModelErrors/RelationError.d.ts.map +1 -0
  63. package/dist/helpers/Errors/ModelErrors/RelationError.js +6 -0
  64. package/dist/helpers/Errors/QueryErrors/InvalidWhereConditionError.d.ts +5 -0
  65. package/dist/helpers/Errors/QueryErrors/InvalidWhereConditionError.d.ts.map +1 -0
  66. package/dist/helpers/Errors/QueryErrors/InvalidWhereConditionError.js +6 -0
  67. package/dist/helpers/Errors/QueryErrors/QueryExecutionError.d.ts +5 -0
  68. package/dist/helpers/Errors/QueryErrors/QueryExecutionError.d.ts.map +1 -0
  69. package/dist/helpers/Errors/QueryErrors/QueryExecutionError.js +6 -0
  70. package/dist/helpers/Errors/QueryErrors/UnexpectedEmptyQueryError.d.ts +2 -1
  71. package/dist/helpers/Errors/QueryErrors/UnexpectedEmptyQueryError.d.ts.map +1 -1
  72. package/dist/helpers/Errors/QueryErrors/UnexpectedEmptyQueryError.js +3 -3
  73. package/dist/helpers/Errors/TableErrors/UnknownTableError.d.ts +3 -2
  74. package/dist/helpers/Errors/TableErrors/UnknownTableError.d.ts.map +1 -1
  75. package/dist/helpers/Errors/TableErrors/UnknownTableError.js +4 -4
  76. package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseSelectQueryBuilder.d.ts +2 -2
  77. package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseSelectQueryBuilder.d.ts.map +1 -1
  78. package/dist/helpers/QueryBuilders/BaseQueryBuilders/BaseSelectQueryBuilder.js +1 -1
  79. package/dist/helpers/QueryBuilders/ExpressionBuilders/JsonAggregateExpression.d.ts +3 -4
  80. package/dist/helpers/QueryBuilders/ExpressionBuilders/JsonAggregateExpression.d.ts.map +1 -1
  81. package/dist/helpers/QueryBuilders/ExpressionBuilders/JsonAggregateExpression.js +46 -44
  82. package/dist/helpers/QueryBuilders/ExpressionBuilders/SpatialDistanceExpression.d.ts +3 -4
  83. package/dist/helpers/QueryBuilders/ExpressionBuilders/SpatialDistanceExpression.d.ts.map +1 -1
  84. package/dist/helpers/QueryBuilders/ExpressionBuilders/SpatialDistanceExpression.js +34 -32
  85. package/dist/helpers/QueryBuilders/ExpressionBuilders/TextRelevanceExpression.d.ts +3 -4
  86. package/dist/helpers/QueryBuilders/ExpressionBuilders/TextRelevanceExpression.d.ts.map +1 -1
  87. package/dist/helpers/QueryBuilders/ExpressionBuilders/TextRelevanceExpression.js +9 -20
  88. package/dist/helpers/QueryBuilders/QueryDecorators/ExpressionDecorator.d.ts +4 -4
  89. package/dist/helpers/QueryBuilders/QueryDecorators/ExpressionDecorator.d.ts.map +1 -1
  90. package/dist/helpers/QueryBuilders/QueryDecorators/ExpressionDecorator.js +14 -17
  91. package/dist/helpers/QueryBuilders/QueryDecorators/GroupByDecorator.d.ts +3 -3
  92. package/dist/helpers/QueryBuilders/QueryDecorators/GroupByDecorator.d.ts.map +1 -1
  93. package/dist/helpers/QueryBuilders/QueryDecorators/GroupByDecorator.js +2 -2
  94. package/dist/helpers/QueryBuilders/QueryDecorators/JoinDecorator.d.ts +4 -4
  95. package/dist/helpers/QueryBuilders/QueryDecorators/JoinDecorator.d.ts.map +1 -1
  96. package/dist/helpers/QueryBuilders/QueryDecorators/JoinDecorator.js +17 -14
  97. package/dist/helpers/QueryBuilders/QueryDecorators/LimitDecorator.d.ts +3 -3
  98. package/dist/helpers/QueryBuilders/QueryDecorators/LimitDecorator.d.ts.map +1 -1
  99. package/dist/helpers/QueryBuilders/QueryDecorators/LimitDecorator.js +2 -2
  100. package/dist/helpers/QueryBuilders/QueryDecorators/OrderByDecorator.d.ts +3 -3
  101. package/dist/helpers/QueryBuilders/QueryDecorators/OrderByDecorator.d.ts.map +1 -1
  102. package/dist/helpers/QueryBuilders/QueryDecorators/OrderByDecorator.js +2 -2
  103. package/dist/helpers/QueryBuilders/QueryDecorators/QueryDecorator.d.ts +2 -2
  104. package/dist/helpers/QueryBuilders/QueryDecorators/QueryDecorator.d.ts.map +1 -1
  105. package/dist/helpers/QueryBuilders/QueryDecorators/QueryDecorator.js +1 -1
  106. package/dist/helpers/QueryBuilders/QueryDecorators/WhereDecorator.d.ts +5 -5
  107. package/dist/helpers/QueryBuilders/QueryDecorators/WhereDecorator.d.ts.map +1 -1
  108. package/dist/helpers/QueryBuilders/QueryDecorators/WhereDecorator.js +3 -4
  109. package/dist/helpers/QueryBuilders/QueryExpressionBuilder.d.ts +1 -3
  110. package/dist/helpers/QueryBuilders/QueryExpressionBuilder.d.ts.map +1 -1
  111. package/dist/helpers/QueryBuilders/QueryExpressionBuilder.js +4 -22
  112. package/dist/helpers/QueryBuilders/QueryStatementBuilder.d.ts +3 -4
  113. package/dist/helpers/QueryBuilders/QueryStatementBuilder.d.ts.map +1 -1
  114. package/dist/helpers/QueryBuilders/QueryStatementBuilder.js +59 -45
  115. package/dist/helpers/QueryBuilders/{SqlRenderer.d.ts → SqlGenerator.d.ts} +3 -3
  116. package/dist/helpers/QueryBuilders/SqlGenerator.d.ts.map +1 -0
  117. package/dist/helpers/QueryBuilders/{SqlRenderer.js → SqlGenerator.js} +30 -19
  118. package/dist/helpers/QueryBuilders/{oldQueryStatementBuilder.d.ts → depricatedQueryStatementBuilder.d.ts} +19 -46
  119. package/dist/helpers/QueryBuilders/depricatedQueryStatementBuilder.d.ts.map +1 -0
  120. package/dist/helpers/QueryBuilders/{oldQueryStatementBuilder.js → depricatedQueryStatementBuilder.js} +31 -67
  121. package/dist/index.d.ts +13 -13
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +7 -7
  124. package/dist/interfaces/IController.d.ts +1 -1
  125. package/dist/interfaces/IController.d.ts.map +1 -1
  126. package/dist/interfaces/IDatabaseAdapter.d.ts +2 -2
  127. package/dist/interfaces/IDatabaseAdapter.d.ts.map +1 -1
  128. package/dist/interfaces/IExpressionBuilder.d.ts +1 -2
  129. package/dist/interfaces/IExpressionBuilder.d.ts.map +1 -1
  130. package/dist/interfaces/IFactory.d.ts +4 -0
  131. package/dist/interfaces/IFactory.d.ts.map +1 -0
  132. package/dist/interfaces/IFactory.js +1 -0
  133. package/dist/interfaces/IMigration.d.ts +4 -4
  134. package/dist/interfaces/IMigration.d.ts.map +1 -1
  135. package/dist/interfaces/IQueryBuilder.d.ts +1 -1
  136. package/dist/interfaces/IQueryBuilder.d.ts.map +1 -1
  137. package/dist/interfaces/ISchemaBuilder.d.ts +2 -2
  138. package/dist/interfaces/ISchemaBuilder.d.ts.map +1 -1
  139. package/dist/interfaces/IStatementAdapter.d.ts +1 -1
  140. package/dist/interfaces/IStatementAdapter.d.ts.map +1 -1
  141. package/dist/runtime/Container.d.ts +2 -3
  142. package/dist/runtime/Container.d.ts.map +1 -1
  143. package/dist/runtime/Container.js +3 -4
  144. package/dist/runtime/QueryCache.d.ts +1 -1
  145. package/dist/runtime/QueryCache.d.ts.map +1 -1
  146. package/dist/runtime/QueryCache.js +1 -1
  147. package/dist/runtime/Repository.d.ts +23 -12
  148. package/dist/runtime/Repository.d.ts.map +1 -1
  149. package/dist/runtime/Repository.js +324 -65
  150. package/dist/types/expressions.d.ts +12 -47
  151. package/dist/types/expressions.d.ts.map +1 -1
  152. package/dist/types/expressions.js +1 -6
  153. package/dist/types/factories.d.ts +5 -3
  154. package/dist/types/factories.d.ts.map +1 -1
  155. package/dist/types/index.d.ts +1 -1
  156. package/dist/types/index.d.ts.map +1 -1
  157. package/dist/types/index.js +1 -1
  158. package/dist/types/model.d.ts +5 -23
  159. package/dist/types/model.d.ts.map +1 -1
  160. package/dist/types/query.d.ts +5 -4
  161. package/dist/types/query.d.ts.map +1 -1
  162. package/dist/types/record.d.ts +11 -0
  163. package/dist/types/record.d.ts.map +1 -0
  164. package/dist/types/record.js +1 -0
  165. package/dist/types/repository.d.ts +8 -0
  166. package/dist/types/repository.d.ts.map +1 -0
  167. package/dist/types/repository.js +1 -0
  168. package/dist/types/table.d.ts +9 -1
  169. package/dist/types/table.d.ts.map +1 -1
  170. package/package.json +1 -1
  171. package/dist/helpers/QueryBuilders/SqlRenderer.d.ts.map +0 -1
  172. package/dist/helpers/QueryBuilders/oldQueryStatementBuilder.d.ts.map +0 -1
@@ -1,6 +1,6 @@
1
- import Model from './Model.js';
1
+ import { Model } from './Model.js';
2
2
  import { columnType } from '../types/index.js';
3
- export default abstract class Controller<Type extends columnType> {
3
+ export declare abstract class Controller<Type extends columnType> {
4
4
  abstract index(): Promise<Model<Type>[]>;
5
5
  abstract show(value: string | number): Promise<Model<Type>>;
6
6
  abstract edit(value: string | number): Promise<Model<Type>>;
@@ -1 +1 @@
1
- {"version":3,"file":"Controller.d.ts","sourceRoot":"","sources":["../../src/abstract/Controller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,UAAU,CAAC,IAAI,SAAS,UAAU;IAC9D,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3D,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3D,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3E,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjD,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;WAElC,KAAK,CAAC,UAAU,SAAS,UAAU,EACrD,IAAI,EAAE,UAAU,UAAU,CAAC,UAAU,CAAC,GACrC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;WAKX,IAAI,CAAC,UAAU,SAAS,UAAU,EACpD,IAAI,EAAE,UAAU,UAAU,CAAC,UAAU,CAAC,EACtC,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;WAKT,IAAI,CAAC,UAAU,SAAS,UAAU,EACpD,IAAI,EAAE,UAAU,UAAU,CAAC,UAAU,CAAC,EACtC,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;WAKT,MAAM,CAAC,UAAU,SAAS,UAAU,EACtD,IAAI,EAAE,UAAU,UAAU,CAAC,UAAU,CAAC,EACtC,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;WAKT,MAAM,CAAC,UAAU,SAAS,UAAU,EACtD,IAAI,EAAE,UAAU,UAAU,CAAC,UAAU,CAAC,EACtC,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;WAKT,MAAM,CAAC,UAAU,SAAS,UAAU,EACtD,IAAI,EAAE,UAAU,UAAU,CAAC,UAAU,CAAC,EACtC,EAAE,EAAE,MAAM,GAAG,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC;CAIpB"}
1
+ {"version":3,"file":"Controller.d.ts","sourceRoot":"","sources":["../../src/abstract/Controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,8BAAsB,UAAU,CAAC,IAAI,SAAS,UAAU;IACtD,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3D,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3D,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3E,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjD,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;WAElC,KAAK,CAAC,UAAU,SAAS,UAAU,EACrD,IAAI,EAAE,UAAU,UAAU,CAAC,UAAU,CAAC,GACrC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;WAKX,IAAI,CAAC,UAAU,SAAS,UAAU,EACpD,IAAI,EAAE,UAAU,UAAU,CAAC,UAAU,CAAC,EACtC,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;WAKT,IAAI,CAAC,UAAU,SAAS,UAAU,EACpD,IAAI,EAAE,UAAU,UAAU,CAAC,UAAU,CAAC,EACtC,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;WAKT,MAAM,CAAC,UAAU,SAAS,UAAU,EACtD,IAAI,EAAE,UAAU,UAAU,CAAC,UAAU,CAAC,EACtC,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;WAKT,MAAM,CAAC,UAAU,SAAS,UAAU,EACtD,IAAI,EAAE,UAAU,UAAU,CAAC,UAAU,CAAC,EACtC,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;WAKT,MAAM,CAAC,UAAU,SAAS,UAAU,EACtD,IAAI,EAAE,UAAU,UAAU,CAAC,UAAU,CAAC,EACtC,EAAE,EAAE,MAAM,GAAG,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC;CAIpB"}
@@ -1,4 +1,4 @@
1
- export default class Controller {
1
+ export class Controller {
2
2
  static async index() {
3
3
  const instance = new this();
4
4
  return await instance.index();
@@ -1,8 +1,8 @@
1
- import Repository from '../runtime/Repository.js';
2
- import ModelRelations from '../abstract/model/ModelRelation.js';
3
- import { columnType, QueryWhereCondition, QueryValues, ModelConfig, SpatialPoint, SpatialPointColumns, NestedJsonAggregateDefinition, QueryLayers } from '../types/index.js';
1
+ import { Repository } from '../runtime/Repository.js';
2
+ import { ModelRelations } from '../abstract/model/ModelRelation.js';
3
+ import { columnType, QueryValues, ModelConfig, SpatialPoint, SpatialPointColumns, NestedJsonAggregateDefinition, QueryLayers, QueryWhereCondition } from '../types/index.js';
4
4
  /** Abstract Model class for ORM-style database interactions */
5
- export default abstract class Model<ModelType extends columnType> extends ModelRelations<ModelType> {
5
+ export declare abstract class Model<ModelType extends columnType> extends ModelRelations<ModelType> {
6
6
  private _repository?;
7
7
  protected get repository(): Repository<ModelType, Model<ModelType>>;
8
8
  protected get self(): Model<ModelType>;
@@ -23,10 +23,9 @@ export default abstract class Model<ModelType extends columnType> extends ModelR
23
23
  static orderBy<ParamterModelType extends Model<columnType>>(this: new () => ParamterModelType, column: string, direction?: 'ASC' | 'DESC'): ParamterModelType;
24
24
  orderBy(column: string, direction?: 'ASC' | 'DESC'): this;
25
25
  static where<ParamterModelType extends Model<columnType>>(this: new () => ParamterModelType, conditions: QueryWhereCondition): ParamterModelType;
26
- private normalizeConditions;
27
26
  where(conditions: QueryWhereCondition): this;
28
- static whereId<ParamterModelType extends Model<columnType>>(this: new () => ParamterModelType, id: QueryValues): Promise<ParamterModelType>;
29
- whereId(id: QueryValues): Promise<this>;
27
+ static whereId<ParamterModelType extends Model<columnType>>(this: new () => ParamterModelType, id: QueryValues): ParamterModelType;
28
+ whereId(id: QueryValues): this;
30
29
  static find<ParamterModelType extends Model<columnType>>(this: new () => ParamterModelType, primaryKeyValue: QueryValues): ParamterModelType;
31
30
  find(primaryKeyValue: QueryValues): this;
32
31
  static findOrFail<ParamterModelType extends Model<columnType>>(this: new () => ParamterModelType, primaryKeyValue: QueryValues): Promise<ParamterModelType>;
@@ -39,14 +38,16 @@ export default abstract class Model<ModelType extends columnType> extends ModelR
39
38
  static set<ParamterModelType extends Model<columnType>>(this: new () => ParamterModelType, attributes: Partial<columnType>): ParamterModelType;
40
39
  set(attributes: Partial<ModelType>): this;
41
40
  save(): Promise<this>;
42
- update(attributes: Partial<ModelType>): Promise<this>;
41
+ update(attributes?: Partial<ModelType>): Promise<this>;
43
42
  near(params: {
44
43
  referencePoint: SpatialPoint;
45
44
  targetColumns: SpatialPointColumns;
46
- maxDistance: number;
45
+ maxDistance?: number;
46
+ minDistance?: number;
47
47
  unit: 'km' | 'miles';
48
48
  orderByDistance: 'ASC' | 'DESC';
49
49
  alias?: string;
50
+ valueClauseKeywords: Record<'lon' | 'lat', string>;
50
51
  }): this;
51
52
  isTextRelevant(params: {
52
53
  targetColumns: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"Model.d.ts","sourceRoot":"","sources":["../../src/abstract/Model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Model.d.ts","sourceRoot":"","sources":["../../src/abstract/Model.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
- import Repository from '../runtime/Repository.js';
2
- import ModelRelations from '../abstract/model/ModelRelation.js';
3
- import { QueryEvaluationPhase, } from '../types/index.js';
1
+ import { Repository } from '../runtime/Repository.js';
2
+ import { ModelRelations } from '../abstract/model/ModelRelation.js';
3
+ import { RecordNotFoundError } from '../helpers/Errors/ModelErrors/RecordNotFoundError.js';
4
+ import { InvalidOperationError } from '../helpers/Errors/ModelErrors/InvalidOperationError.js';
4
5
  /** Abstract Model class for ORM-style database interactions */
5
- export default class Model extends ModelRelations {
6
+ export class Model extends ModelRelations {
6
7
  constructor() {
7
8
  super(...arguments);
8
9
  this.configuration = {
@@ -24,7 +25,7 @@ export default class Model extends ModelRelations {
24
25
  from: this.Configuration.table,
25
26
  },
26
27
  pretty: {},
27
- final: {}
28
+ final: {},
28
29
  };
29
30
  }
30
31
  get repository() {
@@ -66,7 +67,7 @@ export default class Model extends ModelRelations {
66
67
  offset(value) {
67
68
  var _a;
68
69
  if (!((_a = this.queryLayers.final) === null || _a === void 0 ? void 0 : _a.limit)) {
69
- throw new Error('Offset cannot be set without a limit.');
70
+ throw new InvalidOperationError('Offset cannot be set without a limit.');
70
71
  }
71
72
  this.queryLayers.final.offset = value;
72
73
  return this;
@@ -87,24 +88,19 @@ export default class Model extends ModelRelations {
87
88
  const instance = new this();
88
89
  return instance.where(conditions);
89
90
  }
90
- normalizeConditions(conditions) {
91
- if (Array.isArray(conditions)) {
92
- return conditions;
93
- }
94
- return Object.entries(conditions).map(([column, value]) => ({
95
- column,
96
- operator: '=',
97
- value,
98
- }));
99
- }
100
91
  where(conditions) {
101
- const normalized = this.normalizeConditions(conditions);
102
- if (!this.queryLayers.base.where) {
103
- this.queryLayers.base.where = normalized;
92
+ const normalizedConditions = Array.isArray(conditions)
93
+ ? conditions
94
+ : Object.entries(conditions).map(([key, value]) => ({
95
+ column: key,
96
+ operator: '=',
97
+ value,
98
+ }));
99
+ if (this.queryLayers.base.where) {
100
+ this.queryLayers.base.where.push(...normalizedConditions);
104
101
  }
105
102
  else {
106
- const existing = this.normalizeConditions(this.queryLayers.base.where);
107
- this.queryLayers.base.where = [...existing, ...normalized];
103
+ this.queryLayers.base.where = normalizedConditions;
108
104
  }
109
105
  return this;
110
106
  }
@@ -112,9 +108,14 @@ export default class Model extends ModelRelations {
112
108
  const instance = new this();
113
109
  return instance.whereId(id);
114
110
  }
115
- async whereId(id) {
116
- this.queryLayers.base.where = [{ column: this.primaryKeyColumn, operator: '=', value: id }];
117
- await this.first();
111
+ whereId(id) {
112
+ this.queryLayers.base.where = [
113
+ {
114
+ column: this.primaryKeyColumn,
115
+ operator: '=',
116
+ value: id,
117
+ },
118
+ ];
118
119
  return this;
119
120
  }
120
121
  static find(primaryKeyValue) {
@@ -122,23 +123,29 @@ export default class Model extends ModelRelations {
122
123
  return instance.find(primaryKeyValue);
123
124
  }
124
125
  find(primaryKeyValue) {
125
- this.queryLayers.base.where = [{ column: this.primaryKeyColumn, operator: '=', value: primaryKeyValue }];
126
+ this.queryLayers.base.where = [
127
+ {
128
+ column: this.primaryKeyColumn,
129
+ operator: '=',
130
+ value: primaryKeyValue,
131
+ },
132
+ ];
126
133
  return this;
127
134
  }
128
135
  static async findOrFail(primaryKeyValue) {
129
136
  const instance = new this();
130
- return (await instance.findOrFail(primaryKeyValue));
137
+ return await instance.findOrFail(primaryKeyValue);
131
138
  }
132
139
  async findOrFail(primaryKeyValue) {
133
140
  var _a;
134
141
  if (primaryKeyValue) {
135
- this.queryLayers.base.where = [{ column: this.primaryKeyColumn, operator: '=', value: primaryKeyValue }];
142
+ this.find(primaryKeyValue);
136
143
  }
137
144
  this.queryLayers.base.from = this.Configuration.table;
138
145
  const query = this.queryLayers;
139
146
  const record = await ((_a = this.repository) === null || _a === void 0 ? void 0 : _a.first(query, this));
140
147
  if (!record) {
141
- throw new Error(`Record with primary key ${primaryKeyValue} not found.`);
148
+ throw new RecordNotFoundError(primaryKeyValue, this.Configuration.table);
142
149
  }
143
150
  this.attributes = record;
144
151
  this.originalAttributes = { ...this.attributes };
@@ -152,15 +159,15 @@ export default class Model extends ModelRelations {
152
159
  async first(primaryKeyValue) {
153
160
  var _a;
154
161
  if (primaryKeyValue !== undefined) {
155
- this.queryLayers.base.where = [{ column: this.primaryKeyColumn, operator: '=', value: primaryKeyValue }, ...this.normalizeConditions(this.queryLayers.base.where || [])];
162
+ this.find(primaryKeyValue);
156
163
  }
157
164
  const attributes = (await ((_a = this.repository) === null || _a === void 0 ? void 0 : _a.first({
158
165
  ...this.queryLayers,
159
166
  base: {
160
167
  ...this.queryLayers.base,
161
168
  from: this.Configuration.table,
162
- where: this.normalizeConditions(this.queryLayers.base.where || []),
163
- }
169
+ where: this.queryLayers.base.where,
170
+ },
164
171
  }, this)));
165
172
  if (attributes) {
166
173
  this.attributes = attributes;
@@ -175,7 +182,7 @@ export default class Model extends ModelRelations {
175
182
  base: {
176
183
  ...this.queryLayers.base,
177
184
  from: this.Configuration.table,
178
- }
185
+ },
179
186
  }, this);
180
187
  return records.map((record) => {
181
188
  const instance = new this.constructor();
@@ -196,7 +203,7 @@ export default class Model extends ModelRelations {
196
203
  base: {
197
204
  ...this.queryLayers.base,
198
205
  from: this.Configuration.table,
199
- }
206
+ },
200
207
  });
201
208
  return records.map((record) => {
202
209
  const instance = new this.constructor();
@@ -229,43 +236,56 @@ export default class Model extends ModelRelations {
229
236
  this.dirty = false;
230
237
  return this;
231
238
  }
232
- async update(attributes) {
239
+ async update(attributes = {}) {
233
240
  var _a;
234
241
  if (this.primaryKey === undefined) {
235
- throw new Error('Primary key value is undefined. Cannot update record without a valid primary key.');
242
+ throw new InvalidOperationError('Primary key value is undefined. Cannot update record without a valid primary key.');
236
243
  }
237
- const newRecord = await ((_a = this.repository) === null || _a === void 0 ? void 0 : _a.update({ [this.primaryKeyColumn]: this.primaryKey }, attributes, this.Configuration.table));
244
+ if (Object.keys(attributes).length > 0) {
245
+ this.set(attributes);
246
+ }
247
+ const dirtyAttributes = {};
248
+ for (const key in this.attributes) {
249
+ if (this.attributes[key] !== this.originalAttributes[key]) {
250
+ dirtyAttributes[key] = this.attributes[key];
251
+ }
252
+ }
253
+ const newRecord = await ((_a = this.repository) === null || _a === void 0 ? void 0 : _a.update({ [this.primaryKeyColumn]: this.primaryKey }, dirtyAttributes, this.Configuration.table));
238
254
  if (newRecord) {
239
- this.originalAttributes = newRecord.values;
255
+ this.attributes = { ...newRecord };
256
+ this.originalAttributes = { ...this.attributes };
240
257
  this.exists = true;
258
+ this.dirty = false;
241
259
  }
242
260
  return this;
243
261
  }
244
262
  near(params) {
245
263
  var _a;
246
264
  var _b;
247
- const { referencePoint, targetColumns, maxDistance, unit, orderByDistance, alias = 'distance' } = params;
248
- const valueClauseKeywords = [`${alias}_lat`, `${alias}_lon`];
265
+ const { referencePoint, targetColumns, maxDistance, minDistance, unit, orderByDistance, alias = 'distance', valueClauseKeywords, } = params;
249
266
  const expression = {
250
267
  type: 'spatialDistance',
251
- requirements: {
252
- phase: QueryEvaluationPhase.PROJECTION,
253
- cardinality: 'row',
254
- requiresAlias: true,
255
- requiresSelectWrapping: true,
256
- },
257
268
  parameters: {
258
269
  referencePoint: referencePoint,
259
270
  targetColumns: targetColumns,
260
271
  alias: alias,
261
272
  maxDistance: maxDistance,
273
+ minDistance: minDistance,
262
274
  orderByDistance: orderByDistance,
263
275
  valueClauseKeywords: valueClauseKeywords,
264
276
  unit: unit,
265
- where: {
266
- [valueClauseKeywords[0]]: referencePoint.lat,
267
- [valueClauseKeywords[1]]: referencePoint.lon,
268
- }
277
+ where: [
278
+ {
279
+ column: valueClauseKeywords.lat,
280
+ operator: '=',
281
+ value: referencePoint.lat,
282
+ },
283
+ {
284
+ column: valueClauseKeywords.lon,
285
+ operator: '=',
286
+ value: referencePoint.lon,
287
+ },
288
+ ],
269
289
  },
270
290
  };
271
291
  (_a = (_b = this.queryLayers.base).expressions) !== null && _a !== void 0 ? _a : (_b.expressions = []);
@@ -275,26 +295,26 @@ export default class Model extends ModelRelations {
275
295
  isTextRelevant(params) {
276
296
  var _a, _b, _c, _d;
277
297
  var _e, _f, _g, _h;
278
- const { targetColumns, searchTerm, minimumRelevance, alias = 'relevance', orderByRelevance = "ASC" } = params;
279
- const valueClauseKeyword = `${alias}_searchTerm`;
298
+ const { targetColumns, searchTerm, minimumRelevance, alias = 'relevance', orderByRelevance = 'ASC', } = params;
299
+ const valueClauseKeywords = {
300
+ searchTerm: `${alias}_searchTerm`,
301
+ };
280
302
  const expression = {
281
303
  type: 'textRelevance',
282
- requirements: {
283
- phase: QueryEvaluationPhase.PROJECTION,
284
- cardinality: 'row',
285
- requiresAlias: true,
286
- requiresSelectWrapping: true,
287
- },
288
304
  parameters: {
289
305
  targetColumns: targetColumns,
290
306
  searchTerm: searchTerm,
291
307
  alias: alias,
292
308
  minimumRelevance: minimumRelevance,
293
309
  orderByRelevance: orderByRelevance,
294
- valueClauseKeywords: [valueClauseKeyword],
295
- where: {
296
- [valueClauseKeyword]: searchTerm,
297
- }
310
+ valueClauseKeywords: valueClauseKeywords,
311
+ where: [
312
+ {
313
+ column: valueClauseKeywords.searchTerm,
314
+ operator: '=',
315
+ value: searchTerm,
316
+ },
317
+ ],
298
318
  },
299
319
  };
300
320
  (_a = (_e = this.queryLayers.base).expressions) !== null && _a !== void 0 ? _a : (_e.expressions = []);
@@ -316,19 +336,21 @@ export default class Model extends ModelRelations {
316
336
  const { table, columns, groupByColumns = [], alias = table, nested, having, } = params;
317
337
  const expression = {
318
338
  type: 'jsonAggregate',
319
- requirements: {
320
- phase: QueryEvaluationPhase.PROJECTION,
321
- cardinality: 'row',
322
- requiresAlias: true,
323
- requiresSelectWrapping: true,
324
- },
325
339
  parameters: {
326
340
  columns: columns,
327
341
  table: table,
328
342
  groupByColumns: groupByColumns,
329
343
  alias: alias,
330
344
  nested: nested,
331
- having: having,
345
+ having: having
346
+ ? Array.isArray(having)
347
+ ? having
348
+ : Object.entries(having).map(([key, value]) => ({
349
+ column: key,
350
+ operator: '=',
351
+ value: value,
352
+ }))
353
+ : undefined,
332
354
  },
333
355
  };
334
356
  (_a = (_f = this.queryLayers.base).expressionsSelect) !== null && _a !== void 0 ? _a : (_f.expressionsSelect = []);
@@ -353,12 +375,12 @@ export default class Model extends ModelRelations {
353
375
  base: {
354
376
  ...this.queryLayers.base,
355
377
  from: this.Configuration.table,
356
- }
378
+ },
357
379
  }, this));
358
380
  return sql === null || sql === void 0 ? void 0 : sql.replace(/\s+/g, ' ').replace(/\n/g, '');
359
381
  }
360
382
  collectSelectAliases(def) {
361
- const columnAliases = def.columns.map(col => `${def.table}.${col} AS ${def.table}_${col}`);
383
+ const columnAliases = def.columns.map((col) => `${def.table}.${col} AS ${def.table}_${col}`);
362
384
  if (def.nested) {
363
385
  for (const child of def.nested) {
364
386
  columnAliases.push(...this.collectSelectAliases(child));
@@ -1,5 +1,5 @@
1
1
  import { ColumnDefinition } from "../types/index.js";
2
- export default abstract class SchemaTableBuilder {
2
+ export declare abstract class SchemaTableBuilder {
3
3
  protected columns: ColumnDefinition[];
4
4
  protected addColumn(data: ColumnDefinition): this;
5
5
  abstract build(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaTableBuilder.d.ts","sourceRoot":"","sources":["../../src/abstract/SchemaTableBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,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;IA2BjD,QAAQ,CAAC,KAAK,IAAI,MAAM;IAExB,QAAQ,CAAC,UAAU,IAAI,IAAI;IAC3B,QAAQ,CAAC,UAAU,IAAI,IAAI;IAC3B,QAAQ,CAAC,QAAQ,IAAI,IAAI;IACzB,QAAQ,CAAC,MAAM,IAAI,IAAI;IACvB,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IACxC,QAAQ,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAE1E,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACjC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IACnD,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACjC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAEpC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACjC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAEpD,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACpC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IACxE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAElC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACjC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACtC,QAAQ,CAAC,UAAU,IAAI,IAAI;IAE3B,QAAQ,CAAC,WAAW,IAAI,IAAI;IAC5B,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CACtC"}
1
+ {"version":3,"file":"SchemaTableBuilder.d.ts","sourceRoot":"","sources":["../../src/abstract/SchemaTableBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,8BAAsB,kBAAkB;IACpC,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAM;IAE3C,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IA2BjD,QAAQ,CAAC,KAAK,IAAI,MAAM;IAExB,QAAQ,CAAC,UAAU,IAAI,IAAI;IAC3B,QAAQ,CAAC,UAAU,IAAI,IAAI;IAC3B,QAAQ,CAAC,QAAQ,IAAI,IAAI;IACzB,QAAQ,CAAC,MAAM,IAAI,IAAI;IACvB,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IACxC,QAAQ,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAE1E,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACjC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IACnD,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACjC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAEpC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACjC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAEpD,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACpC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IACxE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAElC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACjC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACtC,QAAQ,CAAC,UAAU,IAAI,IAAI;IAE3B,QAAQ,CAAC,WAAW,IAAI,IAAI;IAC5B,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CACtC"}
@@ -1,4 +1,4 @@
1
- export default class SchemaTableBuilder {
1
+ export class SchemaTableBuilder {
2
2
  constructor() {
3
3
  this.columns = [];
4
4
  }
@@ -1,7 +1,7 @@
1
- import { columnType, joinedEntity, ModelConfig, QueryWhereCondition, relation } from "../../types/index.js";
2
- import Model from "../../abstract/Model.js";
3
- import Repository from '../../runtime/Repository.js';
4
- export default abstract class ModelRelations<Type extends columnType, Self extends Model<Type> = Model<Type>> {
1
+ import { columnType, joinedEntity, ModelConfig, QueryWhereCondition, relation } from '../../types/index.js';
2
+ import { Model } from '../../abstract/Model.js';
3
+ import { Repository } from '../../runtime/Repository.js';
4
+ export declare abstract class ModelRelations<Type extends columnType, Self extends Model<Type> = Model<Type>> {
5
5
  protected joinedEntities: joinedEntity[];
6
6
  protected relations: relation[];
7
7
  abstract get Configuration(): ModelConfig;
@@ -17,6 +17,7 @@ export default abstract class ModelRelations<Type extends columnType, Self exten
17
17
  static with<ParameterModelType extends Model<columnType>>(this: new () => ParameterModelType, relation: string, queryScopes?: QueryWhereCondition): ParameterModelType;
18
18
  with(relation: string, queryScopes?: QueryWhereCondition): this;
19
19
  asyncWith(relation: string, queryScopes?: QueryWhereCondition): Promise<this>;
20
+ private finishWith;
20
21
  callRelationMethod(relation: string): void | Promise<void>;
21
22
  private normalizeQueryScopes;
22
23
  }
@@ -1 +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,EACpE,IAAI,GAAE,MAAmB,EACzB,IAAI,GAAE,MAA2B,GAClC,OAAO,CAAC,IAAI,CAAC;IAsBhB,SAAS,CAAC,OAAO,CAAC,SAAS,SAAS,KAAK,CAAC,UAAU,CAAC,EACjD,KAAK,EAAE,SAAS,EAChB,UAAU,GAAE,MAAuE,EACnF,QAAQ,GAAE,MAAsC,EAChD,IAAI,GAAE,MAAmE,EACzE,IAAI,GAAE,MAA2B,GAClC,IAAI;IAYP,SAAS,CAAC,MAAM,CAAC,SAAS,SAAS,KAAK,CAAC,UAAU,CAAC,EAChD,KAAK,EAAE,SAAS,EAChB,UAAU,GAAE,MAA4C,EACxD,QAAQ,GAAE,MAAyE,EACnF,IAAI,GAAE,MAAmE,EACzE,IAAI,GAAE,MAA2B,GAClC,IAAI;IAYP,SAAS,CAAC,SAAS,CAAC,SAAS,SAAS,KAAK,CAAC,UAAU,CAAC,EACnD,KAAK,EAAE,SAAS,EAChB,UAAU,GAAE,MAAyE,EACrF,QAAQ,GAAE,MAAuC,EACjD,IAAI,GAAE,MAAmE,EACzE,IAAI,GAAE,MAA2B,GAClC,IAAI;WAYO,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;IAuBzD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBnF,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjE,OAAO,CAAC,oBAAoB;CAuB/B"}
1
+ {"version":3,"file":"ModelRelation.d.ts","sourceRoot":"","sources":["../../../src/abstract/model/ModelRelation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,WAAW,EAEX,mBAAmB,EACnB,QAAQ,EACT,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAIzD,8BAAsB,cAAc,CAClC,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,CACrC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;cAgBA,UAAU,CAAC,SAAS,SAAS,KAAK,CAAC,UAAU,CAAC,EAC5D,KAAK,EAAE,SAAS,EAChB,UAAU,GAAE,MAEA,EACZ,QAAQ,GAAE,MAAsC,EAChD,UAAU,GAAE,MAAuC,EACnD,eAAe,GAAE,MAAkD,EACnE,aAAa,GAAE,MAAqD,EACpE,IAAI,GAAE,MAAmB,EACzB,IAAI,GAAE,MAA2B,GAChC,OAAO,CAAC,IAAI,CAAC;IAyBhB,SAAS,CAAC,OAAO,CAAC,SAAS,SAAS,KAAK,CAAC,UAAU,CAAC,EACnD,KAAK,EAAE,SAAS,EAChB,UAAU,GAAE,MAAuE,EACnF,QAAQ,GAAE,MAAsC,EAChD,IAAI,GAAE,MAAmE,EACzE,IAAI,GAAE,MAA2B,GAChC,IAAI;IAYP,SAAS,CAAC,MAAM,CAAC,SAAS,SAAS,KAAK,CAAC,UAAU,CAAC,EAClD,KAAK,EAAE,SAAS,EAChB,UAAU,GAAE,MAA4C,EACxD,QAAQ,GAAE,MAAyE,EACnF,IAAI,GAAE,MAAmE,EACzE,IAAI,GAAE,MAA2B,GAChC,IAAI;IAYP,SAAS,CAAC,SAAS,CAAC,SAAS,SAAS,KAAK,CAAC,UAAU,CAAC,EACrD,KAAK,EAAE,SAAS,EAChB,UAAU,GAAE,MAAyE,EACrF,QAAQ,GAAE,MAAuC,EACjD,IAAI,GAAE,MAAmE,EACzE,IAAI,GAAE,MAA2B,GAChC,IAAI;WAYO,IAAI,CAAC,kBAAkB,SAAS,KAAK,CAAC,UAAU,CAAC,EAC7D,IAAI,EAAE,UAAU,kBAAkB,EAClC,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,mBAAmB,GAChC,kBAAkB;IAKd,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,mBAAmB,GAAG,IAAI;IAazD,SAAS,CACpB,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,mBAAmB,GAChC,OAAO,CAAC,IAAI,CAAC;IAMhB,OAAO,CAAC,UAAU;IAoBX,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjE,OAAO,CAAC,oBAAoB;CA6B7B"}
@@ -1,4 +1,6 @@
1
- export default class ModelRelations {
1
+ import { RelationError } from '../../helpers/Errors/ModelErrors/RelationError.js';
2
+ import { InvalidOperationError } from '../../helpers/Errors/ModelErrors/InvalidOperationError.js';
3
+ export class ModelRelations {
2
4
  constructor() {
3
5
  this.joinedEntities = [];
4
6
  this.relations = [];
@@ -13,11 +15,13 @@ export default class ModelRelations {
13
15
  await this.callRelationMethod(otherTable);
14
16
  const relation = this.relations.pop();
15
17
  if (!relation) {
16
- throw new Error(`Relation for pivot table insertion not found.`);
18
+ throw new RelationError('pivot table insertion', 'Relation not found');
17
19
  }
18
20
  await this.repository.insertRecordIntoPivotTable(foreignKey, this.self, relation);
19
21
  }
20
- async ManyToMany(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}`, path = pivotTable, name = path.split('.')[1]) {
22
+ async ManyToMany(model, pivotTable = [this.Configuration.table, model.Configuration.table]
23
+ .sort()
24
+ .join('_'), localKey = this.Configuration.primaryKey, foreignKey = model.Configuration.primaryKey, pivotForeignKey = `${this.Configuration.table}_${localKey}`, pivotLocalKey = `${model.Configuration.table}_${foreignKey}`, path = pivotTable, name = path.split('.')[1]) {
21
25
  const relation = await this.repository.getManyToManyRelation({
22
26
  type: 'manyToMany',
23
27
  model: model,
@@ -30,7 +34,7 @@ export default class ModelRelations {
30
34
  pivotLocalKey: pivotLocalKey,
31
35
  });
32
36
  if (!relation) {
33
- throw new Error(`Failed to create many-to-many relation for model ${model.Configuration.table}`);
37
+ throw new RelationError(model.Configuration.table, 'Failed to create many-to-many relation');
34
38
  }
35
39
  this.relations.push(relation);
36
40
  return this;
@@ -42,7 +46,7 @@ export default class ModelRelations {
42
46
  foreignKey: foreignKey,
43
47
  localKey: localKey,
44
48
  path: path,
45
- name: name
49
+ name: name,
46
50
  });
47
51
  return this;
48
52
  }
@@ -53,7 +57,7 @@ export default class ModelRelations {
53
57
  foreignKey: foreignKey,
54
58
  localKey: localKey,
55
59
  path: path,
56
- name: name
60
+ name: name,
57
61
  });
58
62
  return this;
59
63
  }
@@ -64,7 +68,7 @@ export default class ModelRelations {
64
68
  foreignKey: foreignKey,
65
69
  localKey: localKey,
66
70
  path: path,
67
- name: name
71
+ name: name,
68
72
  });
69
73
  return this;
70
74
  }
@@ -73,39 +77,37 @@ export default class ModelRelations {
73
77
  return instance.with(relation, queryScopes);
74
78
  }
75
79
  with(relation, queryScopes) {
76
- const result = this.callRelationMethod(relation);
80
+ const [relationName, alias] = relation.split(' as ').map((s) => s.trim());
81
+ const result = this.callRelationMethod(relationName);
77
82
  if (result instanceof Promise) {
78
- throw new Error(`Relation method '${relation}' is asynchronous. Use asyncWith() instead of with().`);
83
+ throw new InvalidOperationError(`Relation method '${relationName}' is asynchronous. Use asyncWith() instead of with().`);
79
84
  }
80
- const lastRelation = this.relations[this.relations.length - 1];
81
- const tableName = lastRelation.model.Configuration.table;
82
- const normalizedScopes = this.normalizeQueryScopes(queryScopes, tableName);
83
- this.joinedEntities.push({
84
- relation: relation,
85
- path: lastRelation.path,
86
- queryScopes: normalizedScopes
87
- });
88
- return this;
85
+ return this.finishWith(alias, relationName, queryScopes);
89
86
  }
90
87
  async asyncWith(relation, queryScopes) {
91
- await this.callRelationMethod(relation);
88
+ const [relationName, alias] = relation.split(' as ').map((s) => s.trim());
89
+ await this.callRelationMethod(relationName);
90
+ return this.finishWith(alias, relationName, queryScopes);
91
+ }
92
+ finishWith(alias, relationName, queryScopes) {
92
93
  const lastRelation = this.relations[this.relations.length - 1];
93
- const tableName = lastRelation.model.Configuration.table;
94
+ const tableName = alias || lastRelation.model.Configuration.table;
94
95
  const normalizedScopes = this.normalizeQueryScopes(queryScopes, tableName);
95
96
  this.joinedEntities.push({
96
- relation: relation,
97
+ relation: relationName,
98
+ alias: alias,
97
99
  path: lastRelation.path,
98
- queryScopes: normalizedScopes
100
+ queryScopes: normalizedScopes,
99
101
  });
100
102
  return this;
101
103
  }
102
104
  callRelationMethod(relation) {
103
105
  const method = Reflect.get(this, relation);
104
106
  if (typeof method !== 'function') {
105
- throw new Error(`Relation method '${relation}' does not exist`);
107
+ throw new RelationError(relation, 'Relation method does not exist');
106
108
  }
107
109
  const result = method.call(this);
108
- //@TODO: check if method is not static
110
+ //@TODO: check if method is not static
109
111
  // Only return promise if the method is actually async
110
112
  return result instanceof Promise ? result : undefined;
111
113
  }
@@ -119,10 +121,16 @@ export default class ModelRelations {
119
121
  'value' in queryScopes;
120
122
  const scopesArray = isSingleParameter
121
123
  ? [queryScopes]
122
- : this.repository.ConvertParamsToArray(queryScopes);
123
- return scopesArray.map(scope => ({
124
+ : (Array.isArray(queryScopes)
125
+ ? queryScopes
126
+ : Object.entries(queryScopes).map(([key, value]) => ({
127
+ column: key,
128
+ operator: '=',
129
+ value,
130
+ })));
131
+ return scopesArray.map((scope) => ({
124
132
  ...scope,
125
- column: `${tableName}.${scope.column}`
133
+ column: `${tableName}.${scope.column}`,
126
134
  }));
127
135
  }
128
136
  }
@@ -1,14 +1,15 @@
1
- import { columnType, QueryWhereCondition, QueryIsEqualParameter, TableColumnInfo, QueryComparisonParameters, QueryConstructorType } from '../types/index.js';
1
+ import { columnType, QueryIsEqualParameter, TableColumnInfo, QueryConstructorType } from '../types/index.js';
2
2
  import { Record } from '../index.js';
3
3
  /** Query class for executing custom SQL queries */
4
- export default class Query {
4
+ export declare class Query {
5
5
  readonly TableName: string;
6
6
  private readonly _adapter;
7
7
  private readonly _recordFactory;
8
8
  private readonly _queryCache;
9
9
  private _query?;
10
10
  private _parameters;
11
- get Parameters(): QueryWhereCondition;
11
+ get Parameters(): QueryIsEqualParameter;
12
+ private serializeParameters;
12
13
  constructor({ tableName, query, parameters, adapterName, recordFactory, }: QueryConstructorType);
13
14
  private throwIfTableNotExists;
14
15
  /** Execute a non-SELECT query (INSERT, UPDATE, DELETE, etc.) */
@@ -20,10 +21,5 @@ export default class Query {
20
21
  TableColumnInformation(tableName: string): Promise<TableColumnInfo[]>;
21
22
  DoesTableExist(): Promise<boolean>;
22
23
  Count(): Promise<number>;
23
- ConvertParamsToArray(params: QueryWhereCondition): QueryComparisonParameters[];
24
- /** Convert various parameter formats to a consistent object format */
25
- ConvertParamsToObject(params: QueryWhereCondition): QueryIsEqualParameter;
26
- /** Databases don't like numeric values when inserting with a query */
27
- ConvertValueToString(params: QueryIsEqualParameter): QueryIsEqualParameter;
28
24
  }
29
25
  //# sourceMappingURL=Query.d.ts.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"Query.d.ts","sourceRoot":"","sources":["../../src/base/Query.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAa,MAAM,EAAoB,MAAM,gBAAgB,CAAC;AAOrE,mDAAmD;AACnD,qBAAa,KAAK;IAChB,SAAgB,SAAS,EAAE,MAAM,CAAC;IAElC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAC3D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IAEzC,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,WAAW,CAA6B;IAEhD,IAAW,UAAU,IAAI,qBAAqB,CAE7C;IAED,OAAO,CAAC,mBAAmB;gBAmBf,EACV,SAAS,EACT,KAAK,EACL,UAAU,EACV,WAAW,EACX,aAA+C,GAChD,EAAE,oBAAoB;YAmBT,qBAAqB;IAWnC,gEAAgE;IACnD,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC;IAcvC,0DAA0D;IAC7C,GAAG,CAAC,IAAI,SAAS,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IAoBpE,+DAA+D;IAClD,GAAG,CAAC,IAAI,SAAS,UAAU,KAAK,OAAO,CAClD,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CACzB;IAoBY,sBAAsB,CACjC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,EAAE,CAAC;IAiBhB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAoBlC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;CActC"}