gitextract_1w8nr7ov/ ├── .eslintrc.json ├── .github/ │ ├── ISSUE_TEMPLATE.md │ ├── dependabot.yml │ └── workflows/ │ └── test.yml ├── .gitignore ├── .prettierrc.json ├── LICENSE ├── README.md ├── doc/ │ ├── .prettierrc.json │ ├── .vuepress/ │ │ ├── config.js │ │ ├── styles/ │ │ │ ├── index.styl │ │ │ └── palette.styl │ │ └── theme/ │ │ ├── components/ │ │ │ └── AlgoliaSearchBox.vue │ │ └── index.js │ ├── README.md │ ├── api/ │ │ ├── README.md │ │ ├── model/ │ │ │ ├── instance-methods.md │ │ │ ├── instance-properties.md │ │ │ ├── overview.md │ │ │ ├── static-methods.md │ │ │ └── static-properties.md │ │ ├── objection/ │ │ │ └── README.md │ │ ├── query-builder/ │ │ │ ├── README.md │ │ │ ├── eager-methods.md │ │ │ ├── find-methods.md │ │ │ ├── join-methods.md │ │ │ ├── mutate-methods.md │ │ │ ├── other-methods.md │ │ │ └── static-methods.md │ │ └── types/ │ │ └── README.md │ ├── guide/ │ │ ├── contributing.md │ │ ├── documents.md │ │ ├── getting-started.md │ │ ├── hooks.md │ │ ├── installation.md │ │ ├── models.md │ │ ├── plugins.md │ │ ├── query-examples.md │ │ ├── relations.md │ │ ├── transactions.md │ │ └── validation.md │ ├── recipes/ │ │ ├── composite-keys.md │ │ ├── custom-id-column.md │ │ ├── custom-query-builder.md │ │ ├── custom-validation.md │ │ ├── default-values.md │ │ ├── error-handling.md │ │ ├── extra-properties.md │ │ ├── indexing-postgresql-jsonb-columns.md │ │ ├── joins.md │ │ ├── json-queries.md │ │ ├── modifiers.md │ │ ├── multitenancy-using-multiple-databases.md │ │ ├── paging.md │ │ ├── plugins.md │ │ ├── polymorphic-associations.md │ │ ├── precedence-and-parentheses.md │ │ ├── raw-queries.md │ │ ├── relation-subqueries.md │ │ ├── returning-tricks.md │ │ ├── snake-case-to-camel-case-conversion.md │ │ ├── subqueries.md │ │ ├── ternary-relationships.md │ │ └── timestamps.md │ └── release-notes/ │ ├── changelog.md │ └── migration.md ├── docker-compose.yml ├── examples/ │ ├── koa/ │ │ ├── .prettierrc.json │ │ ├── README.md │ │ ├── api.js │ │ ├── app.js │ │ ├── client.js │ │ ├── knexfile.js │ │ ├── migrations/ │ │ │ └── 20150613161239_initial_schema.js │ │ ├── models/ │ │ │ ├── Animal.js │ │ │ ├── Movie.js │ │ │ └── Person.js │ │ └── package.json │ ├── koa-ts/ │ │ ├── .prettierrc.json │ │ ├── README.md │ │ ├── api.ts │ │ ├── app.ts │ │ ├── client.js │ │ ├── knexfile.js │ │ ├── migrations/ │ │ │ └── 20150613161239_initial_schema.js │ │ ├── models/ │ │ │ ├── Animal.ts │ │ │ ├── Movie.ts │ │ │ └── Person.ts │ │ ├── package.json │ │ └── tsconfig.json │ ├── minimal/ │ │ ├── README.md │ │ ├── app.js │ │ ├── knexfile.js │ │ ├── migrations/ │ │ │ └── 20190330121219_initial_schema.js │ │ ├── models/ │ │ │ └── Person.js │ │ └── package.json │ ├── plugin/ │ │ ├── README.md │ │ ├── index.js │ │ ├── package.json │ │ └── tests.js │ └── plugin-with-options/ │ ├── README.md │ ├── index.js │ ├── package.json │ └── tests.js ├── lib/ │ ├── .eslintrc.json │ ├── initialize.js │ ├── model/ │ │ ├── AjvValidator.js │ │ ├── Model.js │ │ ├── ModifierNotFoundError.js │ │ ├── NotFoundError.js │ │ ├── RelationDoesNotExistError.js │ │ ├── ValidationError.js │ │ ├── Validator.js │ │ ├── getModel.js │ │ ├── graph/ │ │ │ ├── ModelGraph.js │ │ │ ├── ModelGraphBuilder.js │ │ │ ├── ModelGraphEdge.js │ │ │ └── ModelGraphNode.js │ │ ├── inheritModel.js │ │ ├── modelBindKnex.js │ │ ├── modelClone.js │ │ ├── modelColPropMap.js │ │ ├── modelId.js │ │ ├── modelJsonAttributes.js │ │ ├── modelParseRelations.js │ │ ├── modelQueryProps.js │ │ ├── modelSet.js │ │ ├── modelTableMetadata.js │ │ ├── modelToJson.js │ │ ├── modelUtils.js │ │ ├── modelValidate.js │ │ ├── modelValues.js │ │ └── modelVisitor.js │ ├── objection.js │ ├── queryBuilder/ │ │ ├── FunctionBuilder.js │ │ ├── InternalOptions.js │ │ ├── JoinBuilder.js │ │ ├── QueryBuilder.js │ │ ├── QueryBuilderBase.js │ │ ├── QueryBuilderContext.js │ │ ├── QueryBuilderContextBase.js │ │ ├── QueryBuilderOperationSupport.js │ │ ├── QueryBuilderUserContext.js │ │ ├── RawBuilder.js │ │ ├── ReferenceBuilder.js │ │ ├── RelationExpression.js │ │ ├── StaticHookArguments.js │ │ ├── ValueBuilder.js │ │ ├── graph/ │ │ │ ├── GraphAction.js │ │ │ ├── GraphData.js │ │ │ ├── GraphFetcher.js │ │ │ ├── GraphNodeDbExistence.js │ │ │ ├── GraphOperation.js │ │ │ ├── GraphOptions.js │ │ │ ├── GraphUpsert.js │ │ │ ├── delete/ │ │ │ │ ├── GraphDelete.js │ │ │ │ └── GraphDeleteAction.js │ │ │ ├── insert/ │ │ │ │ ├── GraphInsert.js │ │ │ │ ├── GraphInsertAction.js │ │ │ │ └── JoinRowGraphInsertAction.js │ │ │ ├── patch/ │ │ │ │ ├── GraphPatch.js │ │ │ │ └── GraphPatchAction.js │ │ │ └── recursiveUpsert/ │ │ │ ├── GraphRecursiveUpsert.js │ │ │ └── GraphRecursiveUpsertAction.js │ │ ├── join/ │ │ │ ├── JoinResultColumn.js │ │ │ ├── JoinResultParser.js │ │ │ ├── RelationJoiner.js │ │ │ ├── TableNode.js │ │ │ ├── TableTree.js │ │ │ └── utils.js │ │ ├── operations/ │ │ │ ├── DelegateOperation.js │ │ │ ├── DeleteOperation.js │ │ │ ├── FindByIdOperation.js │ │ │ ├── FindByIdsOperation.js │ │ │ ├── FindOperation.js │ │ │ ├── FirstOperation.js │ │ │ ├── FromOperation.js │ │ │ ├── InsertAndFetchOperation.js │ │ │ ├── InsertGraphAndFetchOperation.js │ │ │ ├── InsertGraphOperation.js │ │ │ ├── InsertOperation.js │ │ │ ├── InstanceDeleteOperation.js │ │ │ ├── InstanceFindOperation.js │ │ │ ├── InstanceInsertOperation.js │ │ │ ├── InstanceUpdateOperation.js │ │ │ ├── JoinRelatedOperation.js │ │ │ ├── KnexOperation.js │ │ │ ├── MergeOperation.js │ │ │ ├── ObjectionToKnexConvertingOperation.js │ │ │ ├── OnBuildKnexOperation.js │ │ │ ├── OnBuildOperation.js │ │ │ ├── OnErrorOperation.js │ │ │ ├── QueryBuilderOperation.js │ │ │ ├── RangeOperation.js │ │ │ ├── RelateOperation.js │ │ │ ├── ReturningOperation.js │ │ │ ├── RunAfterOperation.js │ │ │ ├── RunBeforeOperation.js │ │ │ ├── UnrelateOperation.js │ │ │ ├── UpdateAndFetchOperation.js │ │ │ ├── UpdateOperation.js │ │ │ ├── UpsertGraphAndFetchOperation.js │ │ │ ├── UpsertGraphOperation.js │ │ │ ├── WhereCompositeOperation.js │ │ │ ├── eager/ │ │ │ │ ├── EagerOperation.js │ │ │ │ ├── JoinEagerOperation.js │ │ │ │ ├── NaiveEagerOperation.js │ │ │ │ └── WhereInEagerOperation.js │ │ │ ├── jsonApi/ │ │ │ │ ├── WhereJsonHasPostgresOperation.js │ │ │ │ ├── WhereJsonNotObjectPostgresOperation.js │ │ │ │ ├── WhereJsonPostgresOperation.js │ │ │ │ └── postgresJsonApi.js │ │ │ ├── select/ │ │ │ │ ├── SelectOperation.js │ │ │ │ └── Selection.js │ │ │ └── whereInComposite/ │ │ │ ├── WhereInCompositeMsSqlOperation.js │ │ │ ├── WhereInCompositeOperation.js │ │ │ └── WhereInCompositeSqliteOperation.js │ │ ├── parsers/ │ │ │ ├── jsonFieldExpressionParser.js │ │ │ ├── jsonFieldExpressionParser.pegjs │ │ │ ├── relationExpressionParser.js │ │ │ └── relationExpressionParser.pegjs │ │ └── transformations/ │ │ ├── CompositeQueryTransformation.js │ │ ├── QueryTransformation.js │ │ ├── WrapMysqlModifySubqueryTransformation.js │ │ └── index.js │ ├── relations/ │ │ ├── Relation.js │ │ ├── RelationDeleteOperation.js │ │ ├── RelationFindOperation.js │ │ ├── RelationInsertOperation.js │ │ ├── RelationOwner.js │ │ ├── RelationProperty.js │ │ ├── RelationUpdateOperation.js │ │ ├── belongsToOne/ │ │ │ ├── BelongsToOneDeleteOperation.js │ │ │ ├── BelongsToOneInsertOperation.js │ │ │ ├── BelongsToOneRelateOperation.js │ │ │ ├── BelongsToOneRelation.js │ │ │ └── BelongsToOneUnrelateOperation.js │ │ ├── hasMany/ │ │ │ ├── HasManyInsertOperation.js │ │ │ ├── HasManyRelateOperation.js │ │ │ ├── HasManyRelation.js │ │ │ └── HasManyUnrelateOperation.js │ │ ├── hasOne/ │ │ │ └── HasOneRelation.js │ │ ├── hasOneThrough/ │ │ │ └── HasOneThroughRelation.js │ │ └── manyToMany/ │ │ ├── ManyToManyModifyMixin.js │ │ ├── ManyToManyRelation.js │ │ ├── ManyToManySqliteModifyMixin.js │ │ ├── delete/ │ │ │ ├── ManyToManyDeleteOperation.js │ │ │ ├── ManyToManyDeleteOperationBase.js │ │ │ └── ManyToManyDeleteSqliteOperation.js │ │ ├── find/ │ │ │ └── ManyToManyFindOperation.js │ │ ├── insert/ │ │ │ └── ManyToManyInsertOperation.js │ │ ├── relate/ │ │ │ └── ManyToManyRelateOperation.js │ │ ├── unrelate/ │ │ │ ├── ManyToManyUnrelateOperation.js │ │ │ ├── ManyToManyUnrelateOperationBase.js │ │ │ └── ManyToManyUnrelateSqliteOperation.js │ │ └── update/ │ │ ├── ManyToManyUpdateOperation.js │ │ ├── ManyToManyUpdateOperationBase.js │ │ └── ManyToManyUpdateSqliteOperation.js │ ├── transaction.js │ └── utils/ │ ├── assert.js │ ├── buildUtils.js │ ├── classUtils.js │ ├── clone.js │ ├── createModifier.js │ ├── deprecate.js │ ├── identifierMapping.js │ ├── internalPropUtils.js │ ├── knexUtils.js │ ├── mixin.js │ ├── normalizeIds.js │ ├── objectUtils.js │ ├── parseFieldExpression.js │ ├── promiseUtils/ │ │ ├── after.js │ │ ├── afterReturn.js │ │ ├── index.js │ │ ├── isPromise.js │ │ ├── map.js │ │ ├── mapAfterAllReturn.js │ │ └── try.js │ ├── resolveModel.js │ └── tmpColumnUtils.js ├── package.json ├── publish-docs.sh ├── reproduction-template.js ├── setup-test-db.js ├── testUtils/ │ ├── TestSession.js │ ├── mockKnex.js │ └── testUtils.js ├── tests/ │ ├── integration/ │ │ ├── compositeKeys.js │ │ ├── crossDb/ │ │ │ ├── index.js │ │ │ └── mysql.js │ │ ├── delete.js │ │ ├── find.js │ │ ├── graph/ │ │ │ └── GraphInsert.js │ │ ├── index.js │ │ ├── insert.js │ │ ├── insertGraph.js │ │ ├── jsonQueries.js │ │ ├── jsonRelations.js │ │ ├── knexIdentifierMapping.js │ │ ├── knexSnakeCase.js │ │ ├── misc/ │ │ │ ├── #1074.js │ │ │ ├── #1202.js │ │ │ ├── #1215.js │ │ │ ├── #1223.js │ │ │ ├── #1227.js │ │ │ ├── #1265.js │ │ │ ├── #1455.js │ │ │ ├── #1467.js │ │ │ ├── #1489.js │ │ │ ├── #1627.js │ │ │ ├── #1718.js │ │ │ ├── #1757.js │ │ │ ├── #2105.js │ │ │ ├── #292.js │ │ │ ├── #325.js │ │ │ ├── #403.js │ │ │ ├── #517.js │ │ │ ├── #712.js │ │ │ ├── #733.js │ │ │ ├── #760.js │ │ │ ├── #844.js │ │ │ ├── #909.js │ │ │ ├── aggregateMethodsWithRelations.js │ │ │ ├── concurrency.js │ │ │ ├── defaultModelFieldValues.js │ │ │ ├── generatedId.js │ │ │ ├── hasOneTree.js │ │ │ ├── index.js │ │ │ ├── modelWithLengthProperty.js │ │ │ ├── multipleResultsWithOneToOneRelation.js │ │ │ ├── mysqlBinaryColumns.js │ │ │ ├── nonMutatingRelatedQuery.js │ │ │ ├── refAttack.js │ │ │ ├── relatedQueryErrors.js │ │ │ ├── relationHooks.js │ │ │ ├── tableMetadata.js │ │ │ ├── unhandledRejectionErrors.js │ │ │ ├── usingUnboundModelsByPassingKnex.js │ │ │ └── zeroValueInRelationColumn.js │ │ ├── modifiers.js │ │ ├── nonPrimaryKeyRelations.js │ │ ├── patch.js │ │ ├── queryContext.js │ │ ├── relate.js │ │ ├── relationModify.js │ │ ├── schema.js │ │ ├── snakeCase.js │ │ ├── staticHooks.js │ │ ├── toKnexQuery.js │ │ ├── transactions.js │ │ ├── unrelate.js │ │ ├── update.js │ │ ├── upsertGraph.js │ │ ├── viewsAndAliases.js │ │ └── withGraph.js │ ├── main.js │ ├── ts/ │ │ ├── custom-query-builder.ts │ │ ├── documents.ts │ │ ├── examples.ts │ │ ├── fixtures/ │ │ │ ├── animal.ts │ │ │ ├── movie.ts │ │ │ ├── person.ts │ │ │ └── review.ts │ │ ├── model/ │ │ │ └── instance-methods.ts │ │ ├── model-class.ts │ │ ├── query-builder-api/ │ │ │ ├── eager-loading-methods.ts │ │ │ ├── find-methods.ts │ │ │ ├── join-methods.ts │ │ │ ├── mutating-methods.ts │ │ │ └── other-methods.ts │ │ ├── query-examples/ │ │ │ ├── basic-queries/ │ │ │ │ ├── delete.ts │ │ │ │ ├── find.ts │ │ │ │ ├── insert.ts │ │ │ │ └── update.ts │ │ │ ├── eager-loading.ts │ │ │ ├── graph-inserts.ts │ │ │ ├── graph-upserts.ts │ │ │ └── relation-queries/ │ │ │ ├── delete.ts │ │ │ ├── find.ts │ │ │ ├── insert.ts │ │ │ ├── relate.ts │ │ │ ├── unrelate.ts │ │ │ └── update.ts │ │ ├── transactions/ │ │ │ ├── creating.ts │ │ │ └── using.ts │ │ └── validation.ts │ └── unit/ │ ├── model/ │ │ ├── AjvValidator.js │ │ └── Model.js │ ├── queryBuilder/ │ │ ├── JoinBuilder.js │ │ ├── QueryBuilder.js │ │ ├── ReferenceBuilder.js │ │ ├── RelationExpression.js │ │ ├── ValueBuilder.js │ │ └── jsonFieldExpressionParser.js │ ├── relations/ │ │ ├── BelongsToOneRelation.js │ │ ├── HasManyRelation.js │ │ ├── ManyToManyRelation.js │ │ ├── Relation.js │ │ └── files/ │ │ ├── InvalidModel.js │ │ ├── InvalidModelManyNamedModels.js │ │ ├── JoinModel.js │ │ ├── ModelWithARandomError.js │ │ ├── OwnerModel.js │ │ ├── RelatedModel.js │ │ └── RelatedModelNamedExport.js │ ├── utils/ │ │ └── resolveModel.js │ └── utils.js ├── tsconfig.json └── typings/ └── objection/ └── index.d.ts