Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
import objection from 'objection'
import { KnexHelper } from '@/lib'
import { QueryBuilderError } from '@/errors'
import { QueryHandlers } from './QueryHandlers'
import { QueryFilters } from './QueryFilters'
import PropertyRef from './PropertyRef'
import Graph from './Graph'
import eagerScope from './eagerScope'
import { isArray, isPlainObject, isString, asArray } from '@ditojs/utils'
// This code is based on objection-find, and simplified.
// Instead of a separate class, we extend objection.QueryBuilder to better
// integrate with Objection.js
export class QueryBuilder extends objection.QueryBuilder {
constructor(modelClass) {
super(modelClass)
this._propertyRefsAllowed = null
this._propertyRefsCache = {}
this._applyDefaultEager = true
this._applyDefaultInclude = true
this._applyDefaultExclude = true
this._applyDefaultOrder = true
this._scopes = []
this._include = null
this._exclude = null
}
clone() {
const clone = super.clone()
clone._propertyRefsAllowed = this._propertyRefsAllowed
import objection from 'objection'
import { KnexHelper } from '@/lib'
import { QueryBuilderError, RelationError } from '@/errors'
import { QueryParameters } from './QueryParameters'
import { GraphProcessor, walkGraph } from '@/graph'
import {
isObject, isPlainObject, isString, isArray, clone,
getDataPath, setDataPath, parseDataPath
} from '@ditojs/utils'
import { createLookup, getScope } from '@/utils'
// This code is based on objection-find, and simplified.
// Instead of a separate class, we extend objection.QueryBuilder to better
// integrate with Objection.js
export class QueryBuilder extends objection.QueryBuilder {
constructor(modelClass) {
super(modelClass)
this._propertyRefsCache = {}
this._allowScopes = null
this._ignoreScopes = false
this._ignoreEager = false
this._appliedScopes = {}
this._allowFilters = null
this._clearScopes(true)
}
// @override
clone() {
const copy = super.clone()
copy._propertyRefsCache = this._propertyRefsCache
copy._copyScopes(this)
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _objection = require('objection');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
class BaseQueryBuilder extends _objection.QueryBuilder {
constructor(modelClass) {
super(modelClass);
this._handleSoftDelete();
this._handleScopes();
}
loaderContext(ctx) {
this.context().loaderContext = ctx;
}
loaderCtx(ctx) {
this.context().loaderContext = ctx;
}
findById(id) {
/**
* Search QueryBuilder
* @module
*/
const Hoek = require('@hapi/hoek');
const QueryBuilder = require('objection').QueryBuilder;
const internals = {};
/**
* Adds where like clauses to query for all model searchable fields
* @param {string} criteria the search criteria
* @returns {SearchQueryBuilder} this query builder for chaining
*/
internals.searchEntity = function(criteria) {
this._modelClass.searchFields.forEach(field => {
this.orWhere(field, 'like', `%${criteria}%`);
});
return this;
};
const QueryBuilder = require('objection').QueryBuilder;
class MyQueryBuilder extends QueryBuilder {
upsert(model) {
if (model.id && model.id !== null) {
return new Promise((resolve, reject) => {
resolve(this.findById(model.id));
})
.then(modelInstance => {
if (!modelInstance) {
throw new Error('No model found for ' + model.id);
}
return modelInstance.$query().patchAndFetch(model);
})
.catch(err => {
return err;