@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,29 +1,23 @@
1
1
  'use strict';
2
-
3
2
  const { DeleteOperation } = require('../queryBuilder/operations/DeleteOperation');
4
3
  const { RelationFindOperation } = require('./RelationFindOperation');
5
-
6
4
  class RelationDeleteOperation extends DeleteOperation {
7
- constructor(name, opt) {
8
- super(name, opt);
9
-
10
- this.relation = opt.relation;
11
- this.owner = opt.owner;
12
- }
13
-
14
- onBuild(builder) {
15
- super.onBuild(builder);
16
- this.relation.findQuery(builder, this.owner);
17
- }
18
-
19
- toFindOperation() {
20
- return new RelationFindOperation('find', {
21
- relation: this.relation,
22
- owner: this.owner,
23
- });
24
- }
5
+ constructor(name, opt) {
6
+ super(name, opt);
7
+ this.relation = opt.relation;
8
+ this.owner = opt.owner;
9
+ }
10
+ onBuild(builder) {
11
+ super.onBuild(builder);
12
+ this.relation.findQuery(builder, this.owner);
13
+ }
14
+ toFindOperation() {
15
+ return new RelationFindOperation('find', {
16
+ relation: this.relation,
17
+ owner: this.owner,
18
+ });
19
+ }
25
20
  }
26
-
27
21
  module.exports = {
28
- RelationDeleteOperation,
22
+ RelationDeleteOperation,
29
23
  };
@@ -1,149 +1,116 @@
1
1
  'use strict';
2
-
3
2
  const { FindOperation } = require('../queryBuilder/operations/FindOperation');
4
-
5
3
  class RelationFindOperation extends FindOperation {
6
- constructor(name, opt) {
7
- super(name, opt);
8
-
9
- this.relation = opt.relation;
10
- this.owner = opt.owner;
11
- this.alwaysReturnArray = false;
12
- this.assignResultToOwner = true;
13
- this.relationProperty = opt.relationProperty || this.relation.name;
14
- this.omitProps = [];
15
- this.alias = null;
16
- }
17
-
18
- onBuild(builder) {
19
- this.maybeApplyAlias(builder);
20
- this.relation.findQuery(builder, this.owner);
21
-
22
- if (this.assignResultToOwner && this.owner.isModels) {
23
- this.selectMissingJoinColumns(builder);
4
+ constructor(name, opt) {
5
+ super(name, opt);
6
+ this.relation = opt.relation;
7
+ this.owner = opt.owner;
8
+ this.alwaysReturnArray = false;
9
+ this.assignResultToOwner = true;
10
+ this.relationProperty = opt.relationProperty || this.relation.name;
11
+ this.omitProps = [];
12
+ this.alias = null;
24
13
  }
25
- }
26
-
27
- onAfter2(_, related) {
28
- const isOneToOne = this.relation.isOneToOne();
29
-
30
- if (this.assignResultToOwner && this.owner.isModels) {
31
- const owners = this.owner.modelArray;
32
- const relatedByOwnerId = new Map();
33
-
34
- for (let i = 0, l = related.length; i < l; ++i) {
35
- const rel = related[i];
36
- const key = this.relation.relatedProp.propKey(rel);
37
- let arr = relatedByOwnerId.get(key);
38
-
39
- if (!arr) {
40
- arr = [];
41
- relatedByOwnerId.set(key, arr);
14
+ onBuild(builder) {
15
+ this.maybeApplyAlias(builder);
16
+ this.relation.findQuery(builder, this.owner);
17
+ if (this.assignResultToOwner && this.owner.isModels) {
18
+ this.selectMissingJoinColumns(builder);
42
19
  }
43
-
44
- arr.push(rel);
45
- }
46
-
47
- for (let i = 0, l = owners.length; i < l; ++i) {
48
- const own = owners[i];
49
- const key = this.relation.ownerProp.propKey(own);
50
- const related = relatedByOwnerId.get(key);
51
-
52
- if (isOneToOne) {
53
- own[this.relationProperty] = (related && related[0]) || null;
54
- } else {
55
- own[this.relationProperty] = related || [];
56
- }
57
- }
58
- }
59
-
60
- return related;
61
- }
62
-
63
- onAfter3(builder, related) {
64
- const isOneToOne = this.relation.isOneToOne();
65
- const intOpt = builder.internalOptions();
66
-
67
- if (!intOpt.keepImplicitJoinProps) {
68
- this.omitImplicitJoinProps(related);
69
- }
70
-
71
- if (!this.alwaysReturnArray && isOneToOne && related.length <= 1) {
72
- related = related[0] || undefined;
73
- }
74
-
75
- return super.onAfter3(builder, related);
76
- }
77
-
78
- selectMissingJoinColumns(builder) {
79
- const relatedProp = this.relation.relatedProp;
80
- const addedSelects = [];
81
-
82
- for (let c = 0, lc = relatedProp.size; c < lc; ++c) {
83
- const fullCol = relatedProp.ref(builder, c).fullColumn(builder);
84
- const prop = relatedProp.props[c];
85
- const col = relatedProp.cols[c];
86
-
87
- if (!builder.hasSelectionAs(fullCol, col) && addedSelects.indexOf(fullCol) === -1) {
88
- this.omitProps.push(prop);
89
- addedSelects.push(fullCol);
90
- }
91
20
  }
92
-
93
- if (addedSelects.length) {
94
- builder.select(addedSelects);
21
+ onAfter2(_, related) {
22
+ const isOneToOne = this.relation.isOneToOne();
23
+ if (this.assignResultToOwner && this.owner.isModels) {
24
+ const owners = this.owner.modelArray;
25
+ const relatedByOwnerId = new Map();
26
+ for (let i = 0, l = related.length; i < l; ++i) {
27
+ const rel = related[i];
28
+ const key = this.relation.relatedProp.propKey(rel);
29
+ let arr = relatedByOwnerId.get(key);
30
+ if (!arr) {
31
+ arr = [];
32
+ relatedByOwnerId.set(key, arr);
33
+ }
34
+ arr.push(rel);
35
+ }
36
+ for (let i = 0, l = owners.length; i < l; ++i) {
37
+ const own = owners[i];
38
+ const key = this.relation.ownerProp.propKey(own);
39
+ const related = relatedByOwnerId.get(key);
40
+ if (isOneToOne) {
41
+ own[this.relationProperty] = (related && related[0]) || null;
42
+ }
43
+ else {
44
+ own[this.relationProperty] = related || [];
45
+ }
46
+ }
47
+ }
48
+ return related;
95
49
  }
96
- }
97
-
98
- maybeApplyAlias(builder) {
99
- if (!builder.alias() && this.alias) {
100
- builder.alias(this.alias);
50
+ onAfter3(builder, related) {
51
+ const isOneToOne = this.relation.isOneToOne();
52
+ const intOpt = builder.internalOptions();
53
+ if (!intOpt.keepImplicitJoinProps) {
54
+ this.omitImplicitJoinProps(related);
55
+ }
56
+ if (!this.alwaysReturnArray && isOneToOne && related.length <= 1) {
57
+ related = related[0] || undefined;
58
+ }
59
+ return super.onAfter3(builder, related);
101
60
  }
102
- }
103
-
104
- omitImplicitJoinProps(related) {
105
- const relatedModelClass = this.relation.relatedModelClass;
106
-
107
- if (!this.omitProps.length || !related) {
108
- return related;
61
+ selectMissingJoinColumns(builder) {
62
+ const relatedProp = this.relation.relatedProp;
63
+ const addedSelects = [];
64
+ for (let c = 0, lc = relatedProp.size; c < lc; ++c) {
65
+ const fullCol = relatedProp.ref(builder, c).fullColumn(builder);
66
+ const prop = relatedProp.props[c];
67
+ const col = relatedProp.cols[c];
68
+ if (!builder.hasSelectionAs(fullCol, col) && addedSelects.indexOf(fullCol) === -1) {
69
+ this.omitProps.push(prop);
70
+ addedSelects.push(fullCol);
71
+ }
72
+ }
73
+ if (addedSelects.length) {
74
+ builder.select(addedSelects);
75
+ }
109
76
  }
110
-
111
- if (!Array.isArray(related)) {
112
- return this.omitImplicitJoinPropsFromOne(relatedModelClass, related);
77
+ maybeApplyAlias(builder) {
78
+ if (!builder.alias() && this.alias) {
79
+ builder.alias(this.alias);
80
+ }
113
81
  }
114
-
115
- if (!related.length) {
116
- return related;
82
+ omitImplicitJoinProps(related) {
83
+ const relatedModelClass = this.relation.relatedModelClass;
84
+ if (!this.omitProps.length || !related) {
85
+ return related;
86
+ }
87
+ if (!Array.isArray(related)) {
88
+ return this.omitImplicitJoinPropsFromOne(relatedModelClass, related);
89
+ }
90
+ if (!related.length) {
91
+ return related;
92
+ }
93
+ for (let i = 0, l = related.length; i < l; ++i) {
94
+ this.omitImplicitJoinPropsFromOne(relatedModelClass, related[i]);
95
+ }
96
+ return related;
117
97
  }
118
-
119
- for (let i = 0, l = related.length; i < l; ++i) {
120
- this.omitImplicitJoinPropsFromOne(relatedModelClass, related[i]);
98
+ omitImplicitJoinPropsFromOne(relatedModelClass, model) {
99
+ for (let c = 0, lc = this.omitProps.length; c < lc; ++c) {
100
+ relatedModelClass.omitImpl(model, this.omitProps[c]);
101
+ }
102
+ return model;
121
103
  }
122
-
123
- return related;
124
- }
125
-
126
- omitImplicitJoinPropsFromOne(relatedModelClass, model) {
127
- for (let c = 0, lc = this.omitProps.length; c < lc; ++c) {
128
- relatedModelClass.omitImpl(model, this.omitProps[c]);
104
+ clone() {
105
+ const clone = super.clone();
106
+ clone.alwaysReturnArray = this.alwaysReturnArray;
107
+ clone.assignResultToOwner = this.assignResultToOwner;
108
+ clone.relationProperty = this.relationProperty;
109
+ clone.omitProps = this.omitProps.slice();
110
+ clone.alias = this.alias;
111
+ return clone;
129
112
  }
130
-
131
- return model;
132
- }
133
-
134
- clone() {
135
- const clone = super.clone();
136
-
137
- clone.alwaysReturnArray = this.alwaysReturnArray;
138
- clone.assignResultToOwner = this.assignResultToOwner;
139
- clone.relationProperty = this.relationProperty;
140
- clone.omitProps = this.omitProps.slice();
141
- clone.alias = this.alias;
142
-
143
- return clone;
144
- }
145
113
  }
146
-
147
114
  module.exports = {
148
- RelationFindOperation,
115
+ RelationFindOperation,
149
116
  };
@@ -1,33 +1,25 @@
1
1
  'use strict';
2
-
3
2
  const { InsertOperation } = require('../queryBuilder/operations/InsertOperation');
4
-
5
3
  class RelationInsertOperation extends InsertOperation {
6
- constructor(name, opt) {
7
- super(name, opt);
8
-
9
- this.relation = opt.relation;
10
- this.owner = opt.owner;
11
- this.assignResultToOwner = true;
12
- }
13
-
14
- async onBefore2(builder, result) {
15
- const queryContext = builder.context();
16
- result = await this.relation.executeBeforeInsert(this.models, queryContext, result);
17
- return super.onBefore2(builder, result);
18
- }
19
-
20
- clone() {
21
- const clone = super.clone();
22
-
23
- clone.relation = this.relation;
24
- clone.owner = this.owner;
25
- clone.assignResultToOwner = this.assignResultToOwner;
26
-
27
- return clone;
28
- }
4
+ constructor(name, opt) {
5
+ super(name, opt);
6
+ this.relation = opt.relation;
7
+ this.owner = opt.owner;
8
+ this.assignResultToOwner = true;
9
+ }
10
+ async onBefore2(builder, result) {
11
+ const queryContext = builder.context();
12
+ result = await this.relation.executeBeforeInsert(this.models, queryContext, result);
13
+ return super.onBefore2(builder, result);
14
+ }
15
+ clone() {
16
+ const clone = super.clone();
17
+ clone.relation = this.relation;
18
+ clone.owner = this.owner;
19
+ clone.assignResultToOwner = this.assignResultToOwner;
20
+ return clone;
21
+ }
29
22
  }
30
-
31
23
  module.exports = {
32
- RelationInsertOperation,
24
+ RelationInsertOperation,
33
25
  };