objection 3.9.1 → 4.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/dbErrors/LICENSE +21 -0
- package/lib/dbErrors/errorCodes/mssql.js +19 -0
- package/lib/dbErrors/errorCodes/mysql.js +805 -0
- package/lib/dbErrors/errorCodes/postgres.js +241 -0
- package/lib/dbErrors/errors/CheckViolationError.js +10 -0
- package/lib/dbErrors/errors/ConstraintViolationError.js +3 -0
- package/lib/dbErrors/errors/DBError.js +9 -0
- package/lib/dbErrors/errors/DataError.js +3 -0
- package/lib/dbErrors/errors/ForeignKeyViolationError.js +11 -0
- package/lib/dbErrors/errors/NotNullViolationError.js +12 -0
- package/lib/dbErrors/errors/UniqueViolationError.js +12 -0
- package/lib/dbErrors/index.js +59 -0
- package/lib/dbErrors/parsers/mssql/DBError/CheckViolationError/parser.js +28 -0
- package/lib/dbErrors/parsers/mssql/DBError/DataError/parser.js +25 -0
- package/lib/dbErrors/parsers/mssql/DBError/ForeignKeyViolationError/parser.js +39 -0
- package/lib/dbErrors/parsers/mssql/DBError/NotNullViolationError/parser.js +30 -0
- package/lib/dbErrors/parsers/mssql/DBError/UniqueViolationError/parser.js +53 -0
- package/lib/dbErrors/parsers/mssql/DBError/parser.js +51 -0
- package/lib/dbErrors/parsers/mssql/DBError/util.js +16 -0
- package/lib/dbErrors/parsers/mysql/DBError/ConstraintViolationError/ForeignKeyViolationError/parser.js +43 -0
- package/lib/dbErrors/parsers/mysql/DBError/ConstraintViolationError/NotNullViolationError/parser.js +29 -0
- package/lib/dbErrors/parsers/mysql/DBError/ConstraintViolationError/UniqueViolationError/parser.js +27 -0
- package/lib/dbErrors/parsers/mysql/DBError/ConstraintViolationError/parser.js +23 -0
- package/lib/dbErrors/parsers/mysql/DBError/DataError/parser.js +24 -0
- package/lib/dbErrors/parsers/mysql/DBError/parser.js +28 -0
- package/lib/dbErrors/parsers/postgres/DBError/ConstraintViolationError/CheckViolationError/parser.js +18 -0
- package/lib/dbErrors/parsers/postgres/DBError/ConstraintViolationError/ForeignKeyViolationError/parser.js +18 -0
- package/lib/dbErrors/parsers/postgres/DBError/ConstraintViolationError/NotNullViolationError/parser.js +18 -0
- package/lib/dbErrors/parsers/postgres/DBError/ConstraintViolationError/UniqueViolationError/parser.js +40 -0
- package/lib/dbErrors/parsers/postgres/DBError/ConstraintViolationError/parser.js +25 -0
- package/lib/dbErrors/parsers/postgres/DBError/DataError/parser.js +16 -0
- package/lib/dbErrors/parsers/postgres/DBError/parser.js +27 -0
- package/lib/dbErrors/parsers/sqlite/DBError/ConstraintViolationError/CheckViolationError/parser.js +20 -0
- package/lib/dbErrors/parsers/sqlite/DBError/ConstraintViolationError/ForeignKeyViolationError/parser.js +20 -0
- package/lib/dbErrors/parsers/sqlite/DBError/ConstraintViolationError/NotNullViolationError/parser.js +27 -0
- package/lib/dbErrors/parsers/sqlite/DBError/ConstraintViolationError/UniqueViolationError/parser.js +28 -0
- package/lib/dbErrors/parsers/sqlite/DBError/ConstraintViolationError/parser.js +24 -0
- package/lib/dbErrors/parsers/sqlite/DBError/parser.js +23 -0
- package/lib/dbErrors/utils/sqlState.js +3 -0
- package/lib/initialize.js +1 -7
- package/lib/model/AjvValidator.js +51 -117
- package/lib/model/Model.js +84 -59
- package/lib/model/ModifierNotFoundError.js +1 -7
- package/lib/model/NotFoundError.js +1 -7
- package/lib/model/RelationDoesNotExistError.js +1 -7
- package/lib/model/ValidationError.js +3 -10
- package/lib/model/Validator.js +1 -7
- package/lib/model/getModel.js +7 -6
- package/lib/model/inheritModel.js +1 -7
- package/lib/model/modelBindKnex.js +4 -10
- package/lib/model/modelClone.js +5 -11
- package/lib/model/modelColPropMap.js +3 -10
- package/lib/model/modelId.js +3 -10
- package/lib/model/modelJsonAttributes.js +35 -16
- package/lib/model/modelParseRelations.js +2 -8
- package/lib/model/modelQueryProps.js +11 -23
- package/lib/model/modelSet.js +89 -41
- package/lib/model/modelTableMetadata.js +4 -11
- package/lib/model/modelToJson.js +6 -13
- package/lib/model/modelUtils.js +14 -13
- package/lib/model/modelValidate.js +3 -9
- package/lib/model/modelValues.js +5 -14
- package/lib/model/modelVisitor.js +1 -7
- package/lib/objection.js +33 -71
- package/lib/queryBuilder/FunctionBuilder.js +4 -11
- package/lib/queryBuilder/InternalOptions.js +4 -9
- package/lib/queryBuilder/JoinBuilder.js +5 -8
- package/lib/queryBuilder/QueryBuilder.js +126 -95
- package/lib/queryBuilder/QueryBuilderBase.js +41 -123
- package/lib/queryBuilder/QueryBuilderContext.js +2 -8
- package/lib/queryBuilder/QueryBuilderContextBase.js +2 -8
- package/lib/queryBuilder/QueryBuilderOperationSupport.js +7 -21
- package/lib/queryBuilder/QueryBuilderUserContext.js +1 -7
- package/lib/queryBuilder/RawBuilder.js +5 -13
- package/lib/queryBuilder/ReferenceBuilder.js +20 -48
- package/lib/queryBuilder/RelationExpression.js +18 -16
- package/lib/queryBuilder/StaticHookArguments.js +74 -16
- package/lib/queryBuilder/ValueBuilder.js +11 -13
- package/lib/queryBuilder/getJoinBuilder.js +10 -0
- package/lib/queryBuilder/graph/GraphLoader.js +314 -0
- package/lib/queryBuilder/graph/GraphNode.js +241 -0
- package/lib/queryBuilder/graph/GraphOptions.js +55 -248
- package/lib/queryBuilder/graph/GraphPlan.js +431 -0
- package/lib/queryBuilder/graph/GraphSchedule.js +513 -0
- package/lib/queryBuilder/graph/GraphUpsert.js +519 -412
- package/lib/queryBuilder/graph/GraphWriter.js +508 -0
- package/lib/queryBuilder/graph/graphKeys.js +929 -0
- package/lib/queryBuilder/join/JoinResultColumn.js +1 -7
- package/lib/queryBuilder/join/JoinResultParser.js +6 -11
- package/lib/queryBuilder/join/RelationJoiner.js +66 -84
- package/lib/queryBuilder/join/TableNode.js +2 -8
- package/lib/queryBuilder/join/TableTree.js +3 -9
- package/lib/queryBuilder/join/utils.js +5 -15
- package/lib/queryBuilder/jsonDialects/JsonDialect.js +51 -0
- package/lib/queryBuilder/jsonDialects/MySqlJsonDialect.js +81 -0
- package/lib/queryBuilder/jsonDialects/PostgresJsonDialect.js +45 -0
- package/lib/queryBuilder/jsonDialects/SqliteJsonDialect.js +67 -0
- package/lib/queryBuilder/jsonDialects/index.js +44 -0
- package/lib/queryBuilder/operations/DelegateOperation.js +2 -8
- package/lib/queryBuilder/operations/DeleteOperation.js +10 -39
- package/lib/queryBuilder/operations/FindByIdOperation.js +7 -12
- package/lib/queryBuilder/operations/FindByIdsOperation.js +4 -8
- package/lib/queryBuilder/operations/FindOperation.js +14 -34
- package/lib/queryBuilder/operations/FirstOperation.js +6 -10
- package/lib/queryBuilder/operations/FromOperation.js +3 -9
- package/lib/queryBuilder/operations/InsertAndFetchOperation.js +13 -12
- package/lib/queryBuilder/operations/InsertGraphAndFetchOperation.js +4 -10
- package/lib/queryBuilder/operations/InsertGraphOperation.js +7 -18
- package/lib/queryBuilder/operations/InsertOperation.js +118 -45
- package/lib/queryBuilder/operations/InstanceDeleteOperation.js +5 -12
- package/lib/queryBuilder/operations/InstanceFindOperation.js +4 -11
- package/lib/queryBuilder/operations/InstanceInsertOperation.js +2 -8
- package/lib/queryBuilder/operations/InstanceUpdateOperation.js +7 -14
- package/lib/queryBuilder/operations/JoinRelatedOperation.js +5 -11
- package/lib/queryBuilder/operations/KnexOperation.js +2 -8
- package/lib/queryBuilder/operations/LimitPerParentOperation.js +7 -69
- package/lib/queryBuilder/operations/MergeOperation.js +5 -11
- package/lib/queryBuilder/operations/NoneOperation.js +2 -8
- package/lib/queryBuilder/operations/ObjectionToKnexConvertingOperation.js +20 -49
- package/lib/queryBuilder/operations/OnBuildKnexOperation.js +2 -8
- package/lib/queryBuilder/operations/OnBuildOperation.js +2 -8
- package/lib/queryBuilder/operations/OnErrorOperation.js +2 -8
- package/lib/queryBuilder/operations/QueryBuilderOperation.js +1 -7
- package/lib/queryBuilder/operations/RangeOperation.js +11 -26
- package/lib/queryBuilder/operations/RelateOperation.js +2 -8
- package/lib/queryBuilder/operations/ReturningOperation.js +3 -9
- package/lib/queryBuilder/operations/RunAfterOperation.js +2 -12
- package/lib/queryBuilder/operations/RunBeforeOperation.js +2 -8
- package/lib/queryBuilder/operations/UnrelateOperation.js +2 -8
- package/lib/queryBuilder/operations/UpdateAndFetchOperation.js +14 -17
- package/lib/queryBuilder/operations/UpdateOperation.js +32 -132
- package/lib/queryBuilder/operations/UpsertGraphAndFetchOperation.js +8 -11
- package/lib/queryBuilder/operations/UpsertGraphOperation.js +6 -12
- package/lib/queryBuilder/operations/WhereCompositeOperation.js +3 -9
- package/lib/queryBuilder/operations/WhereGroupOperation.js +2 -8
- package/lib/queryBuilder/operations/eager/EagerOperation.js +3 -9
- package/lib/queryBuilder/operations/eager/JoinEagerOperation.js +72 -10
- package/lib/queryBuilder/operations/eager/NaiveEagerOperation.js +2 -8
- package/lib/queryBuilder/operations/eager/WhereInEagerOperation.js +23 -44
- package/lib/queryBuilder/operations/fieldExpressions.js +122 -0
- package/lib/queryBuilder/operations/jsonApi/WhereJsonHasOperation.js +20 -0
- package/lib/queryBuilder/operations/jsonApi/WhereJsonOperation.js +44 -0
- package/lib/queryBuilder/operations/jsonApi/WhereJsonTypeOperation.js +14 -0
- package/lib/queryBuilder/operations/select/SelectOperation.js +11 -21
- package/lib/queryBuilder/operations/select/Selection.js +19 -17
- package/lib/queryBuilder/operations/whereInComposite/WhereInCompositeMsSqlOperation.js +4 -10
- package/lib/queryBuilder/operations/whereInComposite/WhereInCompositeOperation.js +4 -10
- package/lib/queryBuilder/operations/whereInComposite/WhereInCompositeSqliteOperation.js +4 -10
- package/lib/queryBuilder/operations/windowOrder.js +56 -0
- package/lib/queryBuilder/parsers/jsonFieldExpressionParser.js +3 -7
- package/lib/queryBuilder/parsers/relationExpressionParser.js +42 -43
- package/lib/queryBuilder/parsers/relationExpressionParser.pegjs +39 -36
- package/lib/queryBuilder/transformations/CompositeQueryTransformation.js +2 -8
- package/lib/queryBuilder/transformations/QueryTransformation.js +1 -7
- package/lib/queryBuilder/transformations/WrapMysqlModifySubqueryTransformation.js +3 -9
- package/lib/queryBuilder/transformations/index.js +3 -11
- package/lib/queryBuilder/whereGroups.js +9 -24
- package/lib/queryBuilder/withoutOrder.js +4 -11
- package/lib/relations/Relation.js +47 -28
- package/lib/relations/RelationDeleteOperation.js +4 -14
- package/lib/relations/RelationFindOperation.js +119 -90
- package/lib/relations/RelationInsertOperation.js +2 -8
- package/lib/relations/RelationOwner.js +5 -11
- package/lib/relations/RelationProperty.js +4 -10
- package/lib/relations/RelationUpdateOperation.js +4 -14
- package/lib/relations/RelationWriteResultOperation.js +15 -0
- package/lib/relations/belongsToMany/BelongsToManyDeleteOperation.js +23 -0
- package/lib/relations/belongsToMany/BelongsToManyFindOperation.js +35 -0
- package/lib/relations/belongsToMany/BelongsToManyInsertOperation.js +28 -0
- package/lib/relations/belongsToMany/BelongsToManyRelateOperation.js +16 -0
- package/lib/relations/belongsToMany/BelongsToManyRelation.js +276 -0
- package/lib/relations/belongsToMany/BelongsToManyUnrelateOperation.js +11 -0
- package/lib/relations/belongsToOne/BelongsToOneDeleteOperation.js +2 -8
- package/lib/relations/belongsToOne/BelongsToOneInsertOperation.js +6 -11
- package/lib/relations/belongsToOne/BelongsToOneRelateOperation.js +3 -9
- package/lib/relations/belongsToOne/BelongsToOneRelation.js +8 -19
- package/lib/relations/belongsToOne/BelongsToOneUnrelateOperation.js +53 -27
- package/lib/relations/hasMany/HasManyInsertOperation.js +5 -10
- package/lib/relations/hasMany/HasManyRelateOperation.js +5 -11
- package/lib/relations/hasMany/HasManyRelation.js +9 -11
- package/lib/relations/hasMany/HasManyUnrelateOperation.js +3 -9
- package/lib/relations/hasOne/HasOneRelation.js +2 -8
- package/lib/relations/hasOneThrough/HasOneThroughRelation.js +2 -8
- package/lib/relations/manyToMany/ManyToManyModifyMixin.js +10 -15
- package/lib/relations/manyToMany/ManyToManyMySqlModifyMixin.js +2 -8
- package/lib/relations/manyToMany/ManyToManyRelation.js +82 -50
- package/lib/relations/manyToMany/ManyToManySqliteModifyMixin.js +2 -8
- package/lib/relations/manyToMany/delete/ManyToManyDeleteOperation.js +5 -9
- package/lib/relations/manyToMany/delete/ManyToManyDeleteOperationBase.js +2 -8
- package/lib/relations/manyToMany/delete/ManyToManyDeleteSqliteOperation.js +3 -9
- package/lib/relations/manyToMany/find/ManyToManyFindOperation.js +20 -59
- package/lib/relations/manyToMany/insert/ManyToManyInsertOperation.js +6 -11
- package/lib/relations/manyToMany/relate/ManyToManyRelateOperation.js +4 -10
- package/lib/relations/manyToMany/unrelate/ManyToManyUnrelateMySqlOperation.js +3 -9
- package/lib/relations/manyToMany/unrelate/ManyToManyUnrelateOperation.js +5 -9
- package/lib/relations/manyToMany/unrelate/ManyToManyUnrelateOperationBase.js +3 -9
- package/lib/relations/manyToMany/unrelate/ManyToManyUnrelateSqliteOperation.js +3 -9
- package/lib/relations/manyToMany/update/ManyToManyUpdateMySqlOperation.js +3 -9
- package/lib/relations/manyToMany/update/ManyToManyUpdateOperation.js +5 -9
- package/lib/relations/manyToMany/update/ManyToManyUpdateOperationBase.js +64 -72
- package/lib/relations/manyToMany/update/ManyToManyUpdateSqliteOperation.js +3 -9
- package/lib/transaction.js +3 -9
- package/lib/utils/assert.js +3 -11
- package/lib/utils/buildUtils.js +2 -8
- package/lib/utils/classUtils.js +1 -7
- package/lib/utils/createModifier.js +2 -8
- package/lib/utils/identifierMapping.js +23 -27
- package/lib/utils/internalPropUtils.js +1 -7
- package/lib/utils/knexUtils.js +84 -40
- package/lib/utils/mixin.js +3 -10
- package/lib/utils/normalizeIds.js +2 -8
- package/lib/utils/objectUtils.js +41 -60
- package/lib/utils/parseFieldExpression.js +16 -16
- package/lib/utils/promiseUtils/after.js +2 -8
- package/lib/utils/promiseUtils/afterReturn.js +2 -8
- package/lib/utils/promiseUtils/index.js +7 -16
- package/lib/utils/promiseUtils/isPromise.js +2 -8
- package/lib/utils/promiseUtils/map.js +2 -8
- package/lib/utils/promiseUtils/mapAfterAllReturn.js +2 -8
- package/lib/utils/promiseUtils/try.js +2 -8
- package/lib/utils/resolveModel.js +10 -17
- package/lib/utils/tmpColumnUtils.js +2 -9
- package/lib/utils/warnings.js +2 -14
- package/package.json +25 -17
- package/typings/objection/index.d.ts +3217 -2179
- package/lib/.eslintrc.json +0 -8
- package/lib/model/graph/ModelGraph.js +0 -80
- package/lib/model/graph/ModelGraphBuilder.js +0 -241
- package/lib/model/graph/ModelGraphEdge.js +0 -52
- package/lib/model/graph/ModelGraphNode.js +0 -238
- package/lib/queryBuilder/graph/GraphAction.js +0 -69
- package/lib/queryBuilder/graph/GraphData.js +0 -53
- package/lib/queryBuilder/graph/GraphFetcher.js +0 -197
- package/lib/queryBuilder/graph/GraphNodeDbExistence.js +0 -184
- package/lib/queryBuilder/graph/GraphOperation.js +0 -27
- package/lib/queryBuilder/graph/delete/GraphDelete.js +0 -73
- package/lib/queryBuilder/graph/delete/GraphDeleteAction.js +0 -88
- package/lib/queryBuilder/graph/insert/DeferredRelationGraphInsertAction.js +0 -58
- package/lib/queryBuilder/graph/insert/GraphInsert.js +0 -296
- package/lib/queryBuilder/graph/insert/GraphInsertAction.js +0 -233
- package/lib/queryBuilder/graph/insert/JoinRowGraphInsertAction.js +0 -92
- package/lib/queryBuilder/graph/patch/GraphPatch.js +0 -20
- package/lib/queryBuilder/graph/patch/GraphPatchAction.js +0 -289
- package/lib/queryBuilder/graph/recursiveUpsert/GraphRecursiveUpsert.js +0 -31
- package/lib/queryBuilder/graph/recursiveUpsert/GraphRecursiveUpsertAction.js +0 -126
- package/lib/queryBuilder/operations/jsonApi/WhereJsonHasPostgresOperation.js +0 -30
- package/lib/queryBuilder/operations/jsonApi/WhereJsonNotObjectPostgresOperation.js +0 -37
- package/lib/queryBuilder/operations/jsonApi/WhereJsonPostgresOperation.js +0 -62
- package/lib/queryBuilder/operations/jsonApi/postgresJsonApi.js +0 -192
- package/lib/utils/wrapDbError.js +0 -64
|
@@ -1,32 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
} = require('./operations/whereInComposite/WhereInCompositeSqliteOperation');
|
|
19
|
-
const {
|
|
20
|
-
WhereInCompositeMsSqlOperation,
|
|
21
|
-
} = require('./operations/whereInComposite/WhereInCompositeMsSqlOperation');
|
|
22
|
-
const {
|
|
23
|
-
WhereJsonHasPostgresOperation,
|
|
24
|
-
} = require('./operations/jsonApi/WhereJsonHasPostgresOperation');
|
|
25
|
-
const {
|
|
26
|
-
WhereJsonNotObjectPostgresOperation,
|
|
27
|
-
} = require('./operations/jsonApi/WhereJsonNotObjectPostgresOperation');
|
|
28
|
-
|
|
29
|
-
class QueryBuilderBase extends QueryBuilderOperationSupport {
|
|
1
|
+
import { QueryBuilderOperationSupport } from './QueryBuilderOperationSupport.js';
|
|
2
|
+
import { isSqlite, isMsSql } from '../utils/knexUtils.js';
|
|
3
|
+
|
|
4
|
+
import { KnexOperation } from './operations/KnexOperation.js';
|
|
5
|
+
import { MergeOperation } from './operations/MergeOperation.js';
|
|
6
|
+
import { SelectOperation } from './operations/select/SelectOperation.js';
|
|
7
|
+
import { ReturningOperation } from './operations/ReturningOperation.js';
|
|
8
|
+
import { WhereCompositeOperation } from './operations/WhereCompositeOperation.js';
|
|
9
|
+
import { WhereJsonOperation } from './operations/jsonApi/WhereJsonOperation.js';
|
|
10
|
+
|
|
11
|
+
import { WhereInCompositeOperation } from './operations/whereInComposite/WhereInCompositeOperation.js';
|
|
12
|
+
import { WhereInCompositeSqliteOperation } from './operations/whereInComposite/WhereInCompositeSqliteOperation.js';
|
|
13
|
+
import { WhereInCompositeMsSqlOperation } from './operations/whereInComposite/WhereInCompositeMsSqlOperation.js';
|
|
14
|
+
import { WhereJsonHasOperation } from './operations/jsonApi/WhereJsonHasOperation.js';
|
|
15
|
+
import { WhereJsonTypeOperation } from './operations/jsonApi/WhereJsonTypeOperation.js';
|
|
16
|
+
|
|
17
|
+
export class QueryBuilderBase extends QueryBuilderOperationSupport {
|
|
30
18
|
modify(...args) {
|
|
31
19
|
const func = args[0];
|
|
32
20
|
|
|
@@ -613,19 +601,8 @@ class QueryBuilderBase extends QueryBuilderOperationSupport {
|
|
|
613
601
|
return this.addOperation(new KnexOperation('andWhereJsonPath'), args);
|
|
614
602
|
}
|
|
615
603
|
|
|
616
|
-
// whereJson(Not)SupersetOf / whereJson(Not)SubsetOf are now supported by knex >= 1.0, but for now
|
|
617
|
-
// objection handles them differently and only for postgres.
|
|
618
|
-
// Changing them to utilize knex methods directly may require a major version bump and upgrade guide.
|
|
619
|
-
// On MySQL, the simple `(column, object | array)` form is passed on to knex (ditojs#113).
|
|
620
604
|
whereJsonSupersetOf(...args) {
|
|
621
|
-
return this.addOperation(
|
|
622
|
-
new WhereJsonPostgresOperation('whereJsonSupersetOf', {
|
|
623
|
-
operator: '@>',
|
|
624
|
-
bool: 'and',
|
|
625
|
-
knexMethod: 'whereJsonSupersetOf',
|
|
626
|
-
}),
|
|
627
|
-
args,
|
|
628
|
-
);
|
|
605
|
+
return this.addOperation(new WhereJsonOperation('whereJsonSupersetOf', { bool: 'and' }), args);
|
|
629
606
|
}
|
|
630
607
|
|
|
631
608
|
andWhereJsonSupersetOf(...args) {
|
|
@@ -633,24 +610,12 @@ class QueryBuilderBase extends QueryBuilderOperationSupport {
|
|
|
633
610
|
}
|
|
634
611
|
|
|
635
612
|
orWhereJsonSupersetOf(...args) {
|
|
636
|
-
return this.addOperation(
|
|
637
|
-
new WhereJsonPostgresOperation('orWhereJsonSupersetOf', {
|
|
638
|
-
operator: '@>',
|
|
639
|
-
bool: 'or',
|
|
640
|
-
knexMethod: 'whereJsonSupersetOf',
|
|
641
|
-
}),
|
|
642
|
-
args,
|
|
643
|
-
);
|
|
613
|
+
return this.addOperation(new WhereJsonOperation('orWhereJsonSupersetOf', { bool: 'or' }), args);
|
|
644
614
|
}
|
|
645
615
|
|
|
646
616
|
whereJsonNotSupersetOf(...args) {
|
|
647
617
|
return this.addOperation(
|
|
648
|
-
new
|
|
649
|
-
operator: '@>',
|
|
650
|
-
bool: 'and',
|
|
651
|
-
prefix: 'not',
|
|
652
|
-
knexMethod: 'whereJsonNotSupersetOf',
|
|
653
|
-
}),
|
|
618
|
+
new WhereJsonOperation('whereJsonNotSupersetOf', { bool: 'and', not: true }),
|
|
654
619
|
args,
|
|
655
620
|
);
|
|
656
621
|
}
|
|
@@ -661,23 +626,14 @@ class QueryBuilderBase extends QueryBuilderOperationSupport {
|
|
|
661
626
|
|
|
662
627
|
orWhereJsonNotSupersetOf(...args) {
|
|
663
628
|
return this.addOperation(
|
|
664
|
-
new
|
|
665
|
-
operator: '@>',
|
|
666
|
-
bool: 'or',
|
|
667
|
-
prefix: 'not',
|
|
668
|
-
knexMethod: 'whereJsonNotSupersetOf',
|
|
669
|
-
}),
|
|
629
|
+
new WhereJsonOperation('orWhereJsonNotSupersetOf', { bool: 'or', not: true }),
|
|
670
630
|
args,
|
|
671
631
|
);
|
|
672
632
|
}
|
|
673
633
|
|
|
674
634
|
whereJsonSubsetOf(...args) {
|
|
675
635
|
return this.addOperation(
|
|
676
|
-
new
|
|
677
|
-
operator: '<@',
|
|
678
|
-
bool: 'and',
|
|
679
|
-
knexMethod: 'whereJsonSubsetOf',
|
|
680
|
-
}),
|
|
636
|
+
new WhereJsonOperation('whereJsonSubsetOf', { bool: 'and', subset: true }),
|
|
681
637
|
args,
|
|
682
638
|
);
|
|
683
639
|
}
|
|
@@ -688,23 +644,14 @@ class QueryBuilderBase extends QueryBuilderOperationSupport {
|
|
|
688
644
|
|
|
689
645
|
orWhereJsonSubsetOf(...args) {
|
|
690
646
|
return this.addOperation(
|
|
691
|
-
new
|
|
692
|
-
operator: '<@',
|
|
693
|
-
bool: 'or',
|
|
694
|
-
knexMethod: 'whereJsonSubsetOf',
|
|
695
|
-
}),
|
|
647
|
+
new WhereJsonOperation('orWhereJsonSubsetOf', { bool: 'or', subset: true }),
|
|
696
648
|
args,
|
|
697
649
|
);
|
|
698
650
|
}
|
|
699
651
|
|
|
700
652
|
whereJsonNotSubsetOf(...args) {
|
|
701
653
|
return this.addOperation(
|
|
702
|
-
new
|
|
703
|
-
operator: '<@',
|
|
704
|
-
bool: 'and',
|
|
705
|
-
prefix: 'not',
|
|
706
|
-
knexMethod: 'whereJsonNotSubsetOf',
|
|
707
|
-
}),
|
|
654
|
+
new WhereJsonOperation('whereJsonNotSubsetOf', { bool: 'and', subset: true, not: true }),
|
|
708
655
|
args,
|
|
709
656
|
);
|
|
710
657
|
}
|
|
@@ -715,111 +662,86 @@ class QueryBuilderBase extends QueryBuilderOperationSupport {
|
|
|
715
662
|
|
|
716
663
|
orWhereJsonNotSubsetOf(...args) {
|
|
717
664
|
return this.addOperation(
|
|
718
|
-
new
|
|
719
|
-
operator: '<@',
|
|
720
|
-
bool: 'or',
|
|
721
|
-
prefix: 'not',
|
|
722
|
-
knexMethod: 'whereJsonNotSubsetOf',
|
|
723
|
-
}),
|
|
665
|
+
new WhereJsonOperation('orWhereJsonNotSubsetOf', { bool: 'or', subset: true, not: true }),
|
|
724
666
|
args,
|
|
725
667
|
);
|
|
726
668
|
}
|
|
727
669
|
|
|
728
670
|
whereJsonNotArray(...args) {
|
|
729
671
|
return this.addOperation(
|
|
730
|
-
new
|
|
731
|
-
bool: 'and',
|
|
732
|
-
compareValue: [],
|
|
733
|
-
}),
|
|
672
|
+
new WhereJsonTypeOperation('whereJsonNotArray', { bool: 'and', type: 'array', not: true }),
|
|
734
673
|
args,
|
|
735
674
|
);
|
|
736
675
|
}
|
|
737
676
|
|
|
738
677
|
orWhereJsonNotArray(...args) {
|
|
739
678
|
return this.addOperation(
|
|
740
|
-
new
|
|
741
|
-
bool: 'or',
|
|
742
|
-
compareValue: [],
|
|
743
|
-
}),
|
|
679
|
+
new WhereJsonTypeOperation('orWhereJsonNotArray', { bool: 'or', type: 'array', not: true }),
|
|
744
680
|
args,
|
|
745
681
|
);
|
|
746
682
|
}
|
|
747
683
|
|
|
748
684
|
whereJsonNotObject(...args) {
|
|
749
685
|
return this.addOperation(
|
|
750
|
-
new
|
|
751
|
-
bool: 'and',
|
|
752
|
-
compareValue: {},
|
|
753
|
-
}),
|
|
686
|
+
new WhereJsonTypeOperation('whereJsonNotObject', { bool: 'and', type: 'object', not: true }),
|
|
754
687
|
args,
|
|
755
688
|
);
|
|
756
689
|
}
|
|
757
690
|
|
|
758
691
|
orWhereJsonNotObject(...args) {
|
|
759
692
|
return this.addOperation(
|
|
760
|
-
new
|
|
761
|
-
bool: 'or',
|
|
762
|
-
compareValue: {},
|
|
763
|
-
}),
|
|
693
|
+
new WhereJsonTypeOperation('orWhereJsonNotObject', { bool: 'or', type: 'object', not: true }),
|
|
764
694
|
args,
|
|
765
695
|
);
|
|
766
696
|
}
|
|
767
697
|
|
|
768
698
|
whereJsonHasAny(...args) {
|
|
769
|
-
return this.addOperation(
|
|
770
|
-
new WhereJsonHasPostgresOperation('whereJsonHasAny', { bool: 'and', operator: '?|' }),
|
|
771
|
-
args,
|
|
772
|
-
);
|
|
699
|
+
return this.addOperation(new WhereJsonHasOperation('whereJsonHasAny', { bool: 'and' }), args);
|
|
773
700
|
}
|
|
774
701
|
|
|
775
702
|
orWhereJsonHasAny(...args) {
|
|
776
|
-
return this.addOperation(
|
|
777
|
-
new WhereJsonHasPostgresOperation('orWhereJsonHasAny', { bool: 'or', operator: '?|' }),
|
|
778
|
-
args,
|
|
779
|
-
);
|
|
703
|
+
return this.addOperation(new WhereJsonHasOperation('orWhereJsonHasAny', { bool: 'or' }), args);
|
|
780
704
|
}
|
|
781
705
|
|
|
782
706
|
whereJsonHasAll(...args) {
|
|
783
707
|
return this.addOperation(
|
|
784
|
-
new
|
|
708
|
+
new WhereJsonHasOperation('whereJsonHasAll', { bool: 'and', all: true }),
|
|
785
709
|
args,
|
|
786
710
|
);
|
|
787
711
|
}
|
|
788
712
|
|
|
789
713
|
orWhereJsonHasAll(...args) {
|
|
790
714
|
return this.addOperation(
|
|
791
|
-
new
|
|
715
|
+
new WhereJsonHasOperation('orWhereJsonHasAll', { bool: 'or', all: true }),
|
|
792
716
|
args,
|
|
793
717
|
);
|
|
794
718
|
}
|
|
795
719
|
|
|
796
|
-
// Not passed on to knex like `whereJsonSupersetOf()`, as MySQL's `json_contains()`
|
|
797
|
-
// also matches `{}` in arrays of objects.
|
|
798
720
|
whereJsonIsArray(fieldExpression) {
|
|
799
721
|
return this.addOperation(
|
|
800
|
-
new
|
|
801
|
-
[fieldExpression
|
|
722
|
+
new WhereJsonTypeOperation('whereJsonIsArray', { bool: 'and', type: 'array' }),
|
|
723
|
+
[fieldExpression],
|
|
802
724
|
);
|
|
803
725
|
}
|
|
804
726
|
|
|
805
727
|
orWhereJsonIsArray(fieldExpression) {
|
|
806
728
|
return this.addOperation(
|
|
807
|
-
new
|
|
808
|
-
[fieldExpression
|
|
729
|
+
new WhereJsonTypeOperation('orWhereJsonIsArray', { bool: 'or', type: 'array' }),
|
|
730
|
+
[fieldExpression],
|
|
809
731
|
);
|
|
810
732
|
}
|
|
811
733
|
|
|
812
734
|
whereJsonIsObject(fieldExpression) {
|
|
813
735
|
return this.addOperation(
|
|
814
|
-
new
|
|
815
|
-
[fieldExpression
|
|
736
|
+
new WhereJsonTypeOperation('whereJsonIsObject', { bool: 'and', type: 'object' }),
|
|
737
|
+
[fieldExpression],
|
|
816
738
|
);
|
|
817
739
|
}
|
|
818
740
|
|
|
819
741
|
orWhereJsonIsObject(fieldExpression) {
|
|
820
742
|
return this.addOperation(
|
|
821
|
-
new
|
|
822
|
-
[fieldExpression
|
|
743
|
+
new WhereJsonTypeOperation('orWhereJsonIsObject', { bool: 'or', type: 'object' }),
|
|
744
|
+
[fieldExpression],
|
|
823
745
|
);
|
|
824
746
|
}
|
|
825
747
|
|
|
@@ -867,7 +789,3 @@ Object.defineProperties(QueryBuilderBase.prototype, {
|
|
|
867
789
|
value: true,
|
|
868
790
|
},
|
|
869
791
|
});
|
|
870
|
-
|
|
871
|
-
module.exports = {
|
|
872
|
-
QueryBuilderBase,
|
|
873
|
-
};
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import { QueryBuilderContextBase } from './QueryBuilderContextBase.js';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
class QueryBuilderContext extends QueryBuilderContextBase {
|
|
3
|
+
export class QueryBuilderContext extends QueryBuilderContextBase {
|
|
6
4
|
constructor(builder) {
|
|
7
5
|
super(builder);
|
|
8
6
|
|
|
@@ -21,7 +19,3 @@ class QueryBuilderContext extends QueryBuilderContextBase {
|
|
|
21
19
|
return ctx;
|
|
22
20
|
}
|
|
23
21
|
}
|
|
24
|
-
|
|
25
|
-
module.exports = {
|
|
26
|
-
QueryBuilderContext,
|
|
27
|
-
};
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import { InternalOptions } from './InternalOptions.js';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
class QueryBuilderContextBase {
|
|
3
|
+
export class QueryBuilderContextBase {
|
|
6
4
|
constructor(builder) {
|
|
7
5
|
this.userContext = builder ? new builder.constructor.QueryBuilderUserContext(builder) : null;
|
|
8
6
|
this.options = builder ? new this.constructor.InternalOptions() : null;
|
|
@@ -29,7 +27,3 @@ class QueryBuilderContextBase {
|
|
|
29
27
|
return ctx;
|
|
30
28
|
}
|
|
31
29
|
}
|
|
32
|
-
|
|
33
|
-
module.exports = {
|
|
34
|
-
QueryBuilderContextBase,
|
|
35
|
-
};
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const { QueryBuilderUserContext } = require('./QueryBuilderUserContext');
|
|
6
|
-
const { deprecate } = require('../utils/warnings');
|
|
7
|
-
const { getWhereGroupOperations } = require('./whereGroups');
|
|
1
|
+
import { isString, isFunction, isRegExp, mergeMaps, last } from '../utils/objectUtils.js';
|
|
2
|
+
import { QueryBuilderContextBase } from './QueryBuilderContextBase.js';
|
|
3
|
+
import { QueryBuilderUserContext } from './QueryBuilderUserContext.js';
|
|
4
|
+
import { getWhereGroupOperations } from './whereGroups.js';
|
|
8
5
|
|
|
9
6
|
const AllSelector = () => true;
|
|
10
7
|
const SelectSelector =
|
|
@@ -15,7 +12,7 @@ const OrderBySelector = /orderBy/;
|
|
|
15
12
|
const JoinSelector = /(join|joinRaw|joinRelated)$/i;
|
|
16
13
|
const FromSelector = /^(from|fromRaw|into|table)$/;
|
|
17
14
|
|
|
18
|
-
class QueryBuilderOperationSupport {
|
|
15
|
+
export class QueryBuilderOperationSupport {
|
|
19
16
|
constructor(...args) {
|
|
20
17
|
this.constructor.init(this, ...args);
|
|
21
18
|
}
|
|
@@ -415,9 +412,8 @@ class QueryBuilderOperationSupport {
|
|
|
415
412
|
const shouldAdd = this.callOperationMethod(operation, 'onAdd', [this, args]);
|
|
416
413
|
|
|
417
414
|
if (shouldAdd) {
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
}
|
|
415
|
+
// Operations with their own where group, like `findById()`, keep it.
|
|
416
|
+
operation.whereGroup ??= this._whereGroup;
|
|
421
417
|
|
|
422
418
|
if (this._activeOperations.length) {
|
|
423
419
|
const { operation: parentOperation, hookName } = last(this._activeOperations);
|
|
@@ -520,12 +516,6 @@ class QueryBuilderOperationSupport {
|
|
|
520
516
|
toSql() {
|
|
521
517
|
return this.toString();
|
|
522
518
|
}
|
|
523
|
-
|
|
524
|
-
skipUndefined() {
|
|
525
|
-
deprecate('skipUndefined() is deprecated and will be removed in objection 4.0');
|
|
526
|
-
this.internalOptions().skipUndefined = true;
|
|
527
|
-
return this;
|
|
528
|
-
}
|
|
529
519
|
}
|
|
530
520
|
|
|
531
521
|
function buildFunctionForOperationSelector(operationSelector) {
|
|
@@ -546,7 +536,3 @@ function buildFunctionForOperationSelector(operationSelector) {
|
|
|
546
536
|
return () => false;
|
|
547
537
|
}
|
|
548
538
|
}
|
|
549
|
-
|
|
550
|
-
module.exports = {
|
|
551
|
-
QueryBuilderOperationSupport,
|
|
552
|
-
};
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
1
|
const SYMBOL_BUILDER = Symbol();
|
|
4
2
|
|
|
5
|
-
class QueryBuilderUserContext {
|
|
3
|
+
export class QueryBuilderUserContext {
|
|
6
4
|
constructor(builder) {
|
|
7
5
|
// This should never ever be accessed outside this class. We only
|
|
8
6
|
// store it so that we can access builder.knex() lazily.
|
|
@@ -25,7 +23,3 @@ class QueryBuilderUserContext {
|
|
|
25
23
|
return ctx;
|
|
26
24
|
}
|
|
27
25
|
}
|
|
28
|
-
|
|
29
|
-
module.exports = {
|
|
30
|
-
QueryBuilderUserContext,
|
|
31
|
-
};
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import { isPlainObject } from '../utils/objectUtils.js';
|
|
2
|
+
import { buildArg } from '../utils/buildUtils.js';
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
const { buildArg } = require('../utils/buildUtils');
|
|
5
|
-
|
|
6
|
-
class RawBuilder {
|
|
4
|
+
export class RawBuilder {
|
|
7
5
|
constructor(sql, args) {
|
|
8
6
|
this._sql = `${sql}`;
|
|
9
7
|
this._args = args;
|
|
@@ -62,7 +60,7 @@ function buildObject(obj, builder) {
|
|
|
62
60
|
}, {});
|
|
63
61
|
}
|
|
64
62
|
|
|
65
|
-
function normalizeRawArgs(argsIn) {
|
|
63
|
+
export function normalizeRawArgs(argsIn) {
|
|
66
64
|
const [sql, ...restArgs] = argsIn;
|
|
67
65
|
|
|
68
66
|
if (restArgs.length === 1 && Array.isArray(restArgs[0])) {
|
|
@@ -78,13 +76,7 @@ function normalizeRawArgs(argsIn) {
|
|
|
78
76
|
}
|
|
79
77
|
}
|
|
80
78
|
|
|
81
|
-
function raw(...argsIn) {
|
|
79
|
+
export function raw(...argsIn) {
|
|
82
80
|
const { sql, args } = normalizeRawArgs(argsIn);
|
|
83
81
|
return new RawBuilder(sql, args);
|
|
84
82
|
}
|
|
85
|
-
|
|
86
|
-
module.exports = {
|
|
87
|
-
RawBuilder,
|
|
88
|
-
normalizeRawArgs,
|
|
89
|
-
raw,
|
|
90
|
-
};
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import { parseFieldExpression } from '../utils/parseFieldExpression.js';
|
|
2
|
+
import { isObject } from '../utils/objectUtils.js';
|
|
3
|
+
import { getJsonDialect } from './jsonDialects/index.js';
|
|
2
4
|
|
|
3
|
-
|
|
4
|
-
parseFieldExpression,
|
|
5
|
-
toPostgresJsonPathLiteral,
|
|
6
|
-
} = require('../utils/parseFieldExpression');
|
|
7
|
-
const { isObject } = require('../utils/objectUtils');
|
|
8
|
-
const { warnIfNotPostgres } = require('./operations/jsonApi/postgresJsonApi');
|
|
9
|
-
|
|
10
|
-
class ReferenceBuilder {
|
|
5
|
+
export class ReferenceBuilder {
|
|
11
6
|
constructor(expr) {
|
|
12
7
|
this._expr = expr;
|
|
13
8
|
this._parsedExpr = null;
|
|
@@ -164,13 +159,7 @@ class ReferenceBuilder {
|
|
|
164
159
|
}
|
|
165
160
|
|
|
166
161
|
toKnexRaw(builder) {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
if (this._parsedExpr.access.length > 0) {
|
|
170
|
-
warnIfNotPostgres(knex);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
return knex.raw(...this._createRawArgs(builder));
|
|
162
|
+
return builder.knex().raw(...this._createRawArgs(builder));
|
|
174
163
|
}
|
|
175
164
|
|
|
176
165
|
_parseExpression(expr) {
|
|
@@ -180,41 +169,29 @@ class ReferenceBuilder {
|
|
|
180
169
|
}
|
|
181
170
|
|
|
182
171
|
_createRawArgs(builder) {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
sql =
|
|
187
|
-
sql = this._maybeToJsonb(sql, bindings);
|
|
188
|
-
sql = this._maybeAlias(sql, bindings);
|
|
172
|
+
const dialect = getJsonDialect(builder.knex());
|
|
173
|
+
const { access } = this._parsedExpr;
|
|
174
|
+
const bindings = [this.fullColumn(builder)];
|
|
175
|
+
let sql = '??';
|
|
189
176
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
_createReferenceSql(builder, bindings) {
|
|
194
|
-
bindings.push(this.fullColumn(builder));
|
|
177
|
+
if (access.length > 0 || this._toJson) {
|
|
178
|
+
dialect.checkSupport();
|
|
179
|
+
}
|
|
195
180
|
|
|
196
|
-
if (
|
|
197
|
-
|
|
198
|
-
return `??${extractor}${toPostgresJsonPathLiteral(this._parsedExpr.access)}`;
|
|
199
|
-
} else {
|
|
200
|
-
return '??';
|
|
181
|
+
if (access.length > 0) {
|
|
182
|
+
sql = dialect.extract(sql, access, this._cast);
|
|
201
183
|
}
|
|
202
|
-
}
|
|
203
184
|
|
|
204
|
-
_maybeCast(sql) {
|
|
205
185
|
if (this._cast) {
|
|
206
|
-
|
|
207
|
-
} else {
|
|
208
|
-
return sql;
|
|
186
|
+
sql = dialect.cast(sql, this._cast);
|
|
209
187
|
}
|
|
210
|
-
}
|
|
211
188
|
|
|
212
|
-
_maybeToJsonb(sql) {
|
|
213
189
|
if (this._toJson) {
|
|
214
|
-
|
|
215
|
-
} else {
|
|
216
|
-
return sql;
|
|
190
|
+
sql = dialect.toJson(sql, access.length === 0 && !this._cast);
|
|
217
191
|
}
|
|
192
|
+
|
|
193
|
+
sql = this._maybeAlias(sql, bindings);
|
|
194
|
+
return [sql, bindings];
|
|
218
195
|
}
|
|
219
196
|
|
|
220
197
|
_maybeAlias(sql, bindings) {
|
|
@@ -247,15 +224,10 @@ Object.defineProperties(ReferenceBuilder.prototype, {
|
|
|
247
224
|
},
|
|
248
225
|
});
|
|
249
226
|
|
|
250
|
-
const ref = (reference) => {
|
|
227
|
+
export const ref = (reference) => {
|
|
251
228
|
if (isObject(reference) && reference.isObjectionReferenceBuilder) {
|
|
252
229
|
return reference;
|
|
253
230
|
} else {
|
|
254
231
|
return new ReferenceBuilder(reference);
|
|
255
232
|
}
|
|
256
233
|
};
|
|
257
|
-
|
|
258
|
-
module.exports = {
|
|
259
|
-
ReferenceBuilder,
|
|
260
|
-
ref,
|
|
261
|
-
};
|
|
@@ -1,18 +1,24 @@
|
|
|
1
|
-
|
|
1
|
+
import * as parser from './parsers/relationExpressionParser.js';
|
|
2
|
+
import { isObject, isNumber, isString, union } from '../utils/objectUtils.js';
|
|
3
|
+
import { RelationDoesNotExistError } from '../model/RelationDoesNotExistError.js';
|
|
2
4
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const { RelationDoesNotExistError } = require('../model/RelationDoesNotExistError');
|
|
6
|
-
|
|
7
|
-
class RelationExpressionParseError extends Error {}
|
|
8
|
-
class DuplicateRelationError extends RelationExpressionParseError {
|
|
5
|
+
export class RelationExpressionParseError extends Error {}
|
|
6
|
+
export class DuplicateRelationError extends RelationExpressionParseError {
|
|
9
7
|
constructor(relationName) {
|
|
10
|
-
super(
|
|
11
|
-
|
|
8
|
+
super(
|
|
9
|
+
`Duplicate relation name "${relationName}". For example, use "${relationName}.[foo, bar]" ` +
|
|
10
|
+
`instead of "[${relationName}.foo, ${relationName}.bar]".`,
|
|
11
|
+
);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export class MisplacedTokenError extends RelationExpressionParseError {
|
|
16
|
+
constructor(token) {
|
|
17
|
+
super(`"${token}" is only supported at the end of a relation path.`);
|
|
12
18
|
}
|
|
13
19
|
}
|
|
14
20
|
|
|
15
|
-
class RelationExpression {
|
|
21
|
+
export class RelationExpression {
|
|
16
22
|
constructor(node = newNode(), recursionDepth = 0) {
|
|
17
23
|
this.node = node;
|
|
18
24
|
this.recursionDepth = recursionDepth;
|
|
@@ -36,6 +42,8 @@ class RelationExpression {
|
|
|
36
42
|
} catch (err) {
|
|
37
43
|
if (err.duplicateRelationName) {
|
|
38
44
|
throw new DuplicateRelationError(err.duplicateRelationName);
|
|
45
|
+
} else if (err.misplacedToken) {
|
|
46
|
+
throw new MisplacedTokenError(err.misplacedToken);
|
|
39
47
|
} else {
|
|
40
48
|
throw new RelationExpressionParseError(err.message);
|
|
41
49
|
}
|
|
@@ -437,9 +445,3 @@ Object.defineProperties(RelationExpression.prototype, {
|
|
|
437
445
|
value: true,
|
|
438
446
|
},
|
|
439
447
|
});
|
|
440
|
-
|
|
441
|
-
module.exports = {
|
|
442
|
-
RelationExpression,
|
|
443
|
-
RelationExpressionParseError,
|
|
444
|
-
DuplicateRelationError,
|
|
445
|
-
};
|