@abedmurrar/objection 4.0.0-alpha.0 → 4.0.0-beta.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 (192) hide show
  1. package/README.md +103 -67
  2. package/lib/index.mjs +6 -0
  3. package/lib/initialize.js +6 -9
  4. package/lib/model/AjvValidator.js +235 -282
  5. package/lib/model/Model.js +653 -823
  6. package/lib/model/ModifierNotFoundError.js +5 -7
  7. package/lib/model/NotFoundError.js +14 -18
  8. package/lib/model/RelationDoesNotExistError.js +6 -9
  9. package/lib/model/ValidationError.js +33 -41
  10. package/lib/model/Validator.js +15 -21
  11. package/lib/model/getModel.js +1 -3
  12. package/lib/model/graph/ModelGraph.js +44 -64
  13. package/lib/model/graph/ModelGraphBuilder.js +164 -217
  14. package/lib/model/graph/ModelGraphEdge.js +31 -43
  15. package/lib/model/graph/ModelGraphNode.js +192 -231
  16. package/lib/model/inheritModel.js +9 -18
  17. package/lib/model/modelBindKnex.js +48 -62
  18. package/lib/model/modelClone.js +79 -98
  19. package/lib/model/modelColPropMap.js +16 -26
  20. package/lib/model/modelConcurrency.js +24 -0
  21. package/lib/model/modelId.js +44 -49
  22. package/lib/model/modelJsonAttributes.js +56 -76
  23. package/lib/model/modelParseRelations.js +68 -67
  24. package/lib/model/modelQueryProps.js +76 -107
  25. package/lib/model/modelSet.js +92 -112
  26. package/lib/model/modelTableMetadata.js +60 -72
  27. package/lib/model/modelToJson.js +120 -150
  28. package/lib/model/modelUtils.js +30 -37
  29. package/lib/model/modelValidate.js +34 -42
  30. package/lib/model/modelValues.js +78 -91
  31. package/lib/model/modelVisitor.js +22 -29
  32. package/lib/objection.js +42 -67
  33. package/lib/queryBuilder/FunctionBuilder.js +231 -279
  34. package/lib/queryBuilder/InternalOptions.js +19 -24
  35. package/lib/queryBuilder/JoinBuilder.js +116 -149
  36. package/lib/queryBuilder/QueryBuilder.js +1009 -1271
  37. package/lib/queryBuilder/QueryBuilderBase.js +647 -865
  38. package/lib/queryBuilder/QueryBuilderContext.js +14 -21
  39. package/lib/queryBuilder/QueryBuilderContextBase.js +20 -29
  40. package/lib/queryBuilder/QueryBuilderOperationSupport.js +462 -536
  41. package/lib/queryBuilder/QueryBuilderUserContext.js +19 -25
  42. package/lib/queryBuilder/RawBuilder.js +58 -73
  43. package/lib/queryBuilder/ReferenceBuilder.js +232 -270
  44. package/lib/queryBuilder/RelationExpression.js +322 -380
  45. package/lib/queryBuilder/StaticHookArguments.js +94 -106
  46. package/lib/queryBuilder/ValueBuilder.js +100 -112
  47. package/lib/queryBuilder/expressions.js +86 -116
  48. package/lib/queryBuilder/functions/mysql.js +642 -697
  49. package/lib/queryBuilder/graph/GraphAction.js +44 -59
  50. package/lib/queryBuilder/graph/GraphData.js +7 -9
  51. package/lib/queryBuilder/graph/GraphFetcher.js +115 -151
  52. package/lib/queryBuilder/graph/GraphNodeDbExistence.js +114 -152
  53. package/lib/queryBuilder/graph/GraphOperation.js +16 -22
  54. package/lib/queryBuilder/graph/GraphOptions.js +143 -185
  55. package/lib/queryBuilder/graph/GraphUpsert.js +167 -241
  56. package/lib/queryBuilder/graph/delete/GraphDelete.js +8 -13
  57. package/lib/queryBuilder/graph/delete/GraphDeleteAction.js +44 -62
  58. package/lib/queryBuilder/graph/insert/GraphInsert.js +99 -128
  59. package/lib/queryBuilder/graph/insert/GraphInsertAction.js +151 -193
  60. package/lib/queryBuilder/graph/insert/JoinRowGraphInsertAction.js +57 -79
  61. package/lib/queryBuilder/graph/patch/GraphPatch.js +8 -13
  62. package/lib/queryBuilder/graph/patch/GraphPatchAction.js +181 -234
  63. package/lib/queryBuilder/graph/recursiveUpsert/GraphRecursiveUpsert.js +16 -21
  64. package/lib/queryBuilder/graph/recursiveUpsert/GraphRecursiveUpsertAction.js +80 -110
  65. package/lib/queryBuilder/join/JoinResultColumn.js +14 -18
  66. package/lib/queryBuilder/join/JoinResultParser.js +88 -101
  67. package/lib/queryBuilder/join/RelationJoiner.js +205 -288
  68. package/lib/queryBuilder/join/TableNode.js +117 -144
  69. package/lib/queryBuilder/join/TableTree.js +60 -76
  70. package/lib/queryBuilder/join/utils.js +10 -16
  71. package/lib/queryBuilder/operations/DelegateOperation.js +93 -133
  72. package/lib/queryBuilder/operations/DeleteOperation.js +33 -37
  73. package/lib/queryBuilder/operations/FindByIdOperation.js +20 -28
  74. package/lib/queryBuilder/operations/FindByIdsOperation.js +17 -23
  75. package/lib/queryBuilder/operations/FindOperation.js +114 -131
  76. package/lib/queryBuilder/operations/FirstOperation.js +14 -19
  77. package/lib/queryBuilder/operations/FromOperation.js +69 -88
  78. package/lib/queryBuilder/operations/InsertAndFetchOperation.js +28 -39
  79. package/lib/queryBuilder/operations/InsertGraphAndFetchOperation.js +25 -35
  80. package/lib/queryBuilder/operations/InsertGraphOperation.js +77 -98
  81. package/lib/queryBuilder/operations/InsertOperation.js +132 -165
  82. package/lib/queryBuilder/operations/InstanceDeleteOperation.js +27 -36
  83. package/lib/queryBuilder/operations/InstanceFindOperation.js +9 -13
  84. package/lib/queryBuilder/operations/InstanceInsertOperation.js +13 -17
  85. package/lib/queryBuilder/operations/InstanceUpdateOperation.js +32 -46
  86. package/lib/queryBuilder/operations/JoinRelatedOperation.js +66 -86
  87. package/lib/queryBuilder/operations/KnexOperation.js +4 -7
  88. package/lib/queryBuilder/operations/MergeOperation.js +32 -45
  89. package/lib/queryBuilder/operations/ObjectionToKnexConvertingOperation.js +131 -150
  90. package/lib/queryBuilder/operations/OnBuildKnexOperation.js +17 -23
  91. package/lib/queryBuilder/operations/OnBuildOperation.js +17 -23
  92. package/lib/queryBuilder/operations/OnErrorOperation.js +17 -23
  93. package/lib/queryBuilder/operations/QueryBuilderOperation.js +231 -270
  94. package/lib/queryBuilder/operations/RangeOperation.js +30 -40
  95. package/lib/queryBuilder/operations/RelateOperation.js +14 -21
  96. package/lib/queryBuilder/operations/ReturningOperation.js +12 -18
  97. package/lib/queryBuilder/operations/RunAfterOperation.js +17 -23
  98. package/lib/queryBuilder/operations/RunBeforeOperation.js +17 -23
  99. package/lib/queryBuilder/operations/UnrelateOperation.js +12 -17
  100. package/lib/queryBuilder/operations/UpdateAndFetchOperation.js +48 -65
  101. package/lib/queryBuilder/operations/UpdateOperation.js +104 -129
  102. package/lib/queryBuilder/operations/UpsertGraphAndFetchOperation.js +25 -35
  103. package/lib/queryBuilder/operations/UpsertGraphOperation.js +36 -55
  104. package/lib/queryBuilder/operations/WhereCompositeOperation.js +30 -39
  105. package/lib/queryBuilder/operations/WhereInOperation.js +34 -36
  106. package/lib/queryBuilder/operations/eager/EagerOperation.js +37 -52
  107. package/lib/queryBuilder/operations/eager/JoinEagerOperation.js +34 -44
  108. package/lib/queryBuilder/operations/eager/NaiveEagerOperation.js +4 -7
  109. package/lib/queryBuilder/operations/eager/WhereInEagerOperation.js +193 -251
  110. package/lib/queryBuilder/operations/jsonApi/WhereJsonHasOperation.js +18 -25
  111. package/lib/queryBuilder/operations/jsonApi/WhereJsonNotObjectOperation.js +25 -41
  112. package/lib/queryBuilder/operations/jsonApi/WhereJsonOperation.js +19 -20
  113. package/lib/queryBuilder/operations/jsonApi/WhereJsonOverlapsOperation.js +23 -21
  114. package/lib/queryBuilder/operations/jsonApi/mysqlJsonApi.js +106 -118
  115. package/lib/queryBuilder/operations/jsonApi/postgresJsonApi.js +79 -108
  116. package/lib/queryBuilder/operations/select/SelectOperation.js +37 -53
  117. package/lib/queryBuilder/operations/select/Selection.js +94 -105
  118. package/lib/queryBuilder/operations/whereInComposite/WhereInCompositeMsSqlOperation.js +68 -101
  119. package/lib/queryBuilder/operations/whereInComposite/WhereInCompositeOperation.js +65 -75
  120. package/lib/queryBuilder/operations/whereInComposite/WhereInCompositeSqliteOperation.js +75 -84
  121. package/lib/queryBuilder/parsers/jsonFieldExpressionParser.js +760 -859
  122. package/lib/queryBuilder/parsers/relationExpressionParser.js +840 -952
  123. package/lib/queryBuilder/transformations/CompositeQueryTransformation.js +10 -15
  124. package/lib/queryBuilder/transformations/QueryTransformation.js +4 -6
  125. package/lib/queryBuilder/transformations/WrapMysqlModifySubqueryTransformation.js +35 -49
  126. package/lib/queryBuilder/transformations/index.js +3 -9
  127. package/lib/queryBuilder/whereScopes.js +158 -186
  128. package/lib/relations/Relation.js +279 -363
  129. package/lib/relations/RelationDeleteOperation.js +16 -22
  130. package/lib/relations/RelationFindOperation.js +100 -133
  131. package/lib/relations/RelationInsertOperation.js +19 -27
  132. package/lib/relations/RelationOwner.js +167 -204
  133. package/lib/relations/RelationProperty.js +177 -217
  134. package/lib/relations/RelationUpdateOperation.js +16 -23
  135. package/lib/relations/belongsToOne/BelongsToOneDeleteOperation.js +11 -16
  136. package/lib/relations/belongsToOne/BelongsToOneInsertOperation.js +24 -35
  137. package/lib/relations/belongsToOne/BelongsToOneRelateOperation.js +30 -41
  138. package/lib/relations/belongsToOne/BelongsToOneRelation.js +33 -41
  139. package/lib/relations/belongsToOne/BelongsToOneUnrelateOperation.js +38 -53
  140. package/lib/relations/hasMany/HasManyInsertOperation.js +35 -51
  141. package/lib/relations/hasMany/HasManyRelateOperation.js +38 -54
  142. package/lib/relations/hasMany/HasManyRelation.js +30 -38
  143. package/lib/relations/hasMany/HasManyUnrelateOperation.js +19 -26
  144. package/lib/relations/hasOne/HasOneRelation.js +4 -7
  145. package/lib/relations/hasOneThrough/HasOneThroughRelation.js +4 -7
  146. package/lib/relations/manyToMany/ManyToManyModifyMixin.js +67 -90
  147. package/lib/relations/manyToMany/ManyToManyRelation.js +349 -451
  148. package/lib/relations/manyToMany/ManyToManySqliteModifyMixin.js +19 -26
  149. package/lib/relations/manyToMany/delete/ManyToManyDeleteOperation.js +3 -5
  150. package/lib/relations/manyToMany/delete/ManyToManyDeleteOperationBase.js +14 -20
  151. package/lib/relations/manyToMany/delete/ManyToManyDeleteSqliteOperation.js +3 -7
  152. package/lib/relations/manyToMany/find/ManyToManyFindOperation.js +71 -94
  153. package/lib/relations/manyToMany/insert/ManyToManyInsertOperation.js +31 -43
  154. package/lib/relations/manyToMany/relate/ManyToManyRelateOperation.js +50 -67
  155. package/lib/relations/manyToMany/unrelate/ManyToManyUnrelateOperation.js +4 -7
  156. package/lib/relations/manyToMany/unrelate/ManyToManyUnrelateOperationBase.js +20 -27
  157. package/lib/relations/manyToMany/unrelate/ManyToManyUnrelateSqliteOperation.js +5 -10
  158. package/lib/relations/manyToMany/update/ManyToManyUpdateOperation.js +3 -5
  159. package/lib/relations/manyToMany/update/ManyToManyUpdateOperationBase.js +55 -72
  160. package/lib/relations/manyToMany/update/ManyToManyUpdateSqliteOperation.js +3 -7
  161. package/lib/transaction.js +53 -83
  162. package/lib/utils/assert.js +15 -21
  163. package/lib/utils/buildUtils.js +17 -19
  164. package/lib/utils/classUtils.js +7 -11
  165. package/lib/utils/cloneDeep.js +365 -0
  166. package/lib/utils/createModifier.js +36 -41
  167. package/lib/utils/deprecate.js +8 -12
  168. package/lib/utils/identifierMapping.js +153 -192
  169. package/lib/utils/internalPropUtils.js +4 -8
  170. package/lib/utils/knexUtils.js +61 -56
  171. package/lib/utils/mixin.js +16 -23
  172. package/lib/utils/mysqlJsonPath.js +55 -40
  173. package/lib/utils/normalizeIds.js +110 -127
  174. package/lib/utils/objectUtils.js +236 -338
  175. package/lib/utils/parseFieldExpression.js +66 -44
  176. package/lib/utils/postgresJsonPath.js +48 -62
  177. package/lib/utils/promiseUtils/after.js +10 -13
  178. package/lib/utils/promiseUtils/afterReturn.js +10 -13
  179. package/lib/utils/promiseUtils/index.js +15 -17
  180. package/lib/utils/promiseUtils/isPromise.js +6 -9
  181. package/lib/utils/promiseUtils/map.js +75 -89
  182. package/lib/utils/promiseUtils/mapAfterAllReturn.js +17 -23
  183. package/lib/utils/promiseUtils/try.js +15 -18
  184. package/lib/utils/resolveModel.js +91 -94
  185. package/lib/utils/tmpColumnUtils.js +4 -13
  186. package/package.json +50 -23
  187. package/typings/objection/index.d.mts +362 -0
  188. package/typings/objection/index.d.ts +36 -9
  189. package/lib/.eslintrc.json +0 -8
  190. package/lib/queryBuilder/parsers/jsonFieldExpressionParser.pegjs +0 -97
  191. package/lib/queryBuilder/parsers/relationExpressionParser.pegjs +0 -141
  192. package/lib/utils/clone.js +0 -2329
@@ -1,82 +1,65 @@
1
1
  'use strict';
2
-
3
2
  const { withWhereScope } = require('../../../queryBuilder/whereScopes');
4
3
  const { UpdateOperation } = require('../../../queryBuilder/operations/UpdateOperation');
5
-
6
4
  class ManyToManyUpdateOperationBase extends UpdateOperation {
7
- constructor(name, opt) {
8
- super(name, opt);
9
-
10
- this.relation = opt.relation;
11
- this.owner = opt.owner;
12
-
13
- this.hasExtraProps = false;
14
- this.joinTablePatch = {};
15
- this.joinTablePatchFilterQuery = null;
16
- }
17
-
18
- onAdd(builder, args) {
19
- const obj = args[0];
20
-
21
- // Copy all extra properties to the `joinTablePatch` object.
22
- for (const extra of this.relation.joinTableExtras) {
23
- if (extra.aliasProp in obj) {
24
- this.hasExtraProps = true;
25
- this.joinTablePatch[extra.joinTableProp] = obj[extra.aliasProp];
26
- }
5
+ constructor(name, opt) {
6
+ super(name, opt);
7
+ this.relation = opt.relation;
8
+ this.owner = opt.owner;
9
+ this.hasExtraProps = false;
10
+ this.joinTablePatch = {};
11
+ this.joinTablePatchFilterQuery = null;
27
12
  }
28
-
29
- const res = super.onAdd(builder, args);
30
-
31
- if (this.hasExtraProps) {
32
- // Make sure we don't try to insert the extra properties
33
- // to the target table.
34
- this.relation.omitExtraProps([this.model]);
13
+ onAdd(builder, args) {
14
+ const obj = args[0];
15
+ // Copy all extra properties to the `joinTablePatch` object.
16
+ for (const extra of this.relation.joinTableExtras) {
17
+ if (extra.aliasProp in obj) {
18
+ this.hasExtraProps = true;
19
+ this.joinTablePatch[extra.joinTableProp] = obj[extra.aliasProp];
20
+ }
21
+ }
22
+ const res = super.onAdd(builder, args);
23
+ if (this.hasExtraProps) {
24
+ // Make sure we don't try to insert the extra properties
25
+ // to the target table.
26
+ this.relation.omitExtraProps([this.model]);
27
+ }
28
+ return res;
35
29
  }
36
-
37
- return res;
38
- }
39
-
40
- async onAfter1(builder, result) {
41
- if (this.hasExtraProps) {
42
- const joinTableUpdateQuery = this.relation
43
- .getJoinModelClass(builder.knex())
44
- .query()
45
- .childQueryOf(builder)
46
- .patch(this.joinTablePatch);
47
-
48
- withWhereScope(joinTableUpdateQuery, () => {
49
- this.applyModifyFilterForJoinTable(joinTableUpdateQuery);
50
- });
51
-
52
- await joinTableUpdateQuery.modify(this.relation.joinTableModify);
53
- return result;
54
- } else {
55
- return result;
30
+ async onAfter1(builder, result) {
31
+ if (this.hasExtraProps) {
32
+ const joinTableUpdateQuery = this.relation
33
+ .getJoinModelClass(builder.knex())
34
+ .query()
35
+ .childQueryOf(builder)
36
+ .patch(this.joinTablePatch);
37
+ withWhereScope(joinTableUpdateQuery, () => {
38
+ this.applyModifyFilterForJoinTable(joinTableUpdateQuery);
39
+ });
40
+ await joinTableUpdateQuery.modify(this.relation.joinTableModify);
41
+ return result;
42
+ }
43
+ else {
44
+ return result;
45
+ }
46
+ }
47
+ /* istanbul ignore next */
48
+ applyModifyFilterForRelatedTable(builder) {
49
+ throw new Error('not implemented');
50
+ }
51
+ /* istanbul ignore next */
52
+ applyModifyFilterForJoinTable(builder) {
53
+ throw new Error('not implemented');
54
+ }
55
+ clone() {
56
+ const clone = super.clone();
57
+ clone.hasExtraProps = this.hasExtraProps;
58
+ clone.joinTablePatch = this.joinTablePatch;
59
+ clone.joinTablePatchFilterQuery = this.joinTablePatchFilterQuery;
60
+ return clone;
56
61
  }
57
- }
58
-
59
- /* istanbul ignore next */
60
- applyModifyFilterForRelatedTable(builder) {
61
- throw new Error('not implemented');
62
- }
63
-
64
- /* istanbul ignore next */
65
- applyModifyFilterForJoinTable(builder) {
66
- throw new Error('not implemented');
67
- }
68
-
69
- clone() {
70
- const clone = super.clone();
71
-
72
- clone.hasExtraProps = this.hasExtraProps;
73
- clone.joinTablePatch = this.joinTablePatch;
74
- clone.joinTablePatchFilterQuery = this.joinTablePatchFilterQuery;
75
-
76
- return clone;
77
- }
78
62
  }
79
-
80
63
  module.exports = {
81
- ManyToManyUpdateOperationBase,
64
+ ManyToManyUpdateOperationBase,
82
65
  };
@@ -1,12 +1,8 @@
1
1
  'use strict';
2
-
3
2
  const { ManyToManyUpdateOperationBase } = require('./ManyToManyUpdateOperationBase');
4
3
  const { ManyToManySqliteModifyMixin } = require('../ManyToManySqliteModifyMixin');
5
-
6
- class ManyToManyUpdateSqliteOperation extends ManyToManySqliteModifyMixin(
7
- ManyToManyUpdateOperationBase,
8
- ) {}
9
-
4
+ class ManyToManyUpdateSqliteOperation extends ManyToManySqliteModifyMixin(ManyToManyUpdateOperationBase) {
5
+ }
10
6
  module.exports = {
11
- ManyToManyUpdateSqliteOperation,
7
+ ManyToManyUpdateSqliteOperation,
12
8
  };
@@ -1,96 +1,66 @@
1
1
  'use strict';
2
-
3
2
  const promiseUtils = require('./utils/promiseUtils');
4
3
  const { isFunction } = require('./utils/objectUtils');
5
-
6
4
  function transaction() {
7
- // There must be at least one model class and the callback.
8
- if (arguments.length < 2) {
9
- return Promise.reject(
10
- new Error(
11
- 'objection.transaction: provide at least one Model class to bind to the transaction or a knex instance',
12
- ),
13
- );
14
- }
15
-
16
- let args = Array.from(arguments);
17
-
18
- if (!isModelClass(args[0]) && isFunction(args[0].transaction)) {
19
- let knex = args[0];
20
- args = args.slice(1);
21
-
22
- return knex.transaction.apply(knex, args);
23
- } else {
24
- // The last argument should be the callback and all other Model subclasses.
25
- let callback = args[args.length - 1];
26
- let modelClasses = args.slice(0, args.length - 1);
27
- let i;
28
-
29
- for (i = 0; i < modelClasses.length; ++i) {
30
- if (!isModelClass(modelClasses[i])) {
31
- return Promise.reject(
32
- new Error('objection.transaction: all but the last argument should be Model subclasses'),
33
- );
34
- }
5
+ // There must be at least one model class and the callback.
6
+ if (arguments.length < 2) {
7
+ return Promise.reject(new Error('objection.transaction: provide at least one Model class to bind to the transaction or a knex instance'));
35
8
  }
36
-
37
- let knex = modelClasses[0].knex();
38
- for (i = 0; i < modelClasses.length; ++i) {
39
- if (modelClasses[i].knex() !== knex) {
40
- return Promise.reject(
41
- new Error(
42
- 'objection.transaction: all Model subclasses must be bound to the same database',
43
- ),
44
- );
45
- }
9
+ let args = Array.from(arguments);
10
+ if (!isModelClass(args[0]) && isFunction(args[0].transaction)) {
11
+ const knex = args[0];
12
+ args = args.slice(1);
13
+ return knex.transaction.apply(knex, args);
14
+ }
15
+ else {
16
+ // The last argument should be the callback and all other Model subclasses.
17
+ const callback = args[args.length - 1];
18
+ const modelClasses = args.slice(0, args.length - 1);
19
+ let i;
20
+ for (i = 0; i < modelClasses.length; ++i) {
21
+ if (!isModelClass(modelClasses[i])) {
22
+ return Promise.reject(new Error('objection.transaction: all but the last argument should be Model subclasses'));
23
+ }
24
+ }
25
+ const knex = modelClasses[0].knex();
26
+ for (i = 0; i < modelClasses.length; ++i) {
27
+ if (modelClasses[i].knex() !== knex) {
28
+ return Promise.reject(new Error('objection.transaction: all Model subclasses must be bound to the same database'));
29
+ }
30
+ }
31
+ return knex.transaction((trx) => {
32
+ const args = new Array(modelClasses.length + 1);
33
+ for (let i = 0; i < modelClasses.length; ++i) {
34
+ args[i] = modelClasses[i].bindTransaction(trx);
35
+ }
36
+ args[args.length - 1] = trx;
37
+ return promiseUtils.try(() => {
38
+ return callback.apply(trx, args);
39
+ });
40
+ });
46
41
  }
47
-
48
- return knex.transaction((trx) => {
49
- let args = new Array(modelClasses.length + 1);
50
-
51
- for (let i = 0; i < modelClasses.length; ++i) {
52
- args[i] = modelClasses[i].bindTransaction(trx);
53
- }
54
-
55
- args[args.length - 1] = trx;
56
-
57
- return promiseUtils.try(() => {
58
- return callback.apply(trx, args);
59
- });
60
- });
61
- }
62
42
  }
63
-
64
43
  transaction.start = function (modelClassOrKnex) {
65
- let knex = modelClassOrKnex;
66
-
67
- if (isModelClass(modelClassOrKnex)) {
68
- knex = modelClassOrKnex.knex();
69
- }
70
-
71
- if (!knex || !isFunction(knex.transaction)) {
72
- return Promise.reject(
73
- new Error(
74
- 'objection.transaction.start: first argument must be a model class or a knex instance',
75
- ),
76
- );
77
- }
78
-
79
- return new Promise((resolve, reject) => {
80
- knex
81
- .transaction((trx) => {
82
- resolve(trx);
83
- })
84
- .catch((err) => {
85
- reject(err);
86
- });
87
- });
44
+ let knex = modelClassOrKnex;
45
+ if (isModelClass(modelClassOrKnex)) {
46
+ knex = modelClassOrKnex.knex();
47
+ }
48
+ if (!knex || !isFunction(knex.transaction)) {
49
+ return Promise.reject(new Error('objection.transaction.start: first argument must be a model class or a knex instance'));
50
+ }
51
+ return new Promise((resolve, reject) => {
52
+ knex
53
+ .transaction((trx) => {
54
+ resolve(trx);
55
+ })
56
+ .catch((err) => {
57
+ reject(err);
58
+ });
59
+ });
88
60
  };
89
-
90
61
  function isModelClass(maybeModel) {
91
- return isFunction(maybeModel) && maybeModel.isObjectionModelClass;
62
+ return isFunction(maybeModel) && maybeModel.isObjectionModelClass;
92
63
  }
93
-
94
64
  module.exports = {
95
- transaction,
65
+ transaction,
96
66
  };
@@ -1,25 +1,19 @@
1
- 'use strict';
2
-
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertHasId = assertHasId;
4
+ exports.assertIdNotUndefined = assertIdNotUndefined;
3
5
  function assertHasId(model) {
4
- if (!model.$hasId()) {
5
- const modelClass = model.constructor;
6
- const ids = modelClass.getIdColumnArray().join(', ');
7
-
8
- throw new Error(
9
- `one of the identifier columns [${ids}] is null or undefined. Have you specified the correct identifier column for the model '${modelClass.name}' using the 'idColumn' property?`,
10
- );
11
- }
6
+ if (!model.$hasId()) {
7
+ const modelClass = model.constructor;
8
+ const ids = modelClass.getIdColumnArray().join(', ');
9
+ throw new Error(`one of the identifier columns [${ids}] is null or undefined. Have you specified the correct identifier column for the model '${modelClass.name}' using the 'idColumn' property?`);
10
+ }
12
11
  }
13
-
14
12
  function assertIdNotUndefined(id, message) {
15
- if (Array.isArray(id)) {
16
- id.forEach((id) => assertIdNotUndefined(id, message));
17
- } else if (id === undefined) {
18
- throw Error(message);
19
- }
13
+ if (Array.isArray(id)) {
14
+ id.forEach((id) => assertIdNotUndefined(id, message));
15
+ }
16
+ else if (id === undefined) {
17
+ throw Error(message);
18
+ }
20
19
  }
21
-
22
- module.exports = {
23
- assertHasId,
24
- assertIdNotUndefined,
25
- };
@@ -1,21 +1,19 @@
1
- 'use strict';
2
-
3
- const { isObject, isFunction } = require('./objectUtils');
4
-
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildArg = buildArg;
4
+ const objectUtils_1 = require("./objectUtils");
5
5
  function buildArg(arg, builder) {
6
- if (!isObject(arg)) {
7
- return arg;
8
- }
9
-
10
- if (isFunction(arg.toKnexRaw)) {
11
- return arg.toKnexRaw(builder);
12
- } else if (arg.isObjectionQueryBuilderBase === true) {
13
- return arg.subqueryOf(builder).toKnexQuery();
14
- } else {
15
- return arg;
16
- }
6
+ if (!(0, objectUtils_1.isObject)(arg)) {
7
+ return arg;
8
+ }
9
+ const buildable = arg;
10
+ if ((0, objectUtils_1.isFunction)(buildable.toKnexRaw)) {
11
+ return buildable.toKnexRaw(builder);
12
+ }
13
+ else if (buildable.isObjectionQueryBuilderBase === true) {
14
+ return buildable.subqueryOf(builder).toKnexQuery();
15
+ }
16
+ else {
17
+ return arg;
18
+ }
17
19
  }
18
-
19
- module.exports = {
20
- buildArg,
21
- };
@@ -1,13 +1,9 @@
1
- 'use strict';
2
-
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.inherit = inherit;
3
4
  function inherit(Constructor, BaseConstructor) {
4
- Constructor.prototype = Object.create(BaseConstructor.prototype);
5
- Constructor.prototype.constructor = BaseConstructor;
6
- Object.setPrototypeOf(Constructor, BaseConstructor);
7
-
8
- return Constructor;
5
+ Constructor.prototype = Object.create(BaseConstructor.prototype);
6
+ Constructor.prototype.constructor = BaseConstructor;
7
+ Object.setPrototypeOf(Constructor, BaseConstructor);
8
+ return Constructor;
9
9
  }
10
-
11
- module.exports = {
12
- inherit,
13
- };