123456789101112131415161718192021222324252627282930 |
- const jsonApi = require('./postgresJsonApi');
- const ObjectionToKnexConvertingOperation = require('../ObjectionToKnexConvertingOperation');
- class WhereJsonNotObjectPostgresOperation extends ObjectionToKnexConvertingOperation {
- onBuildKnex(knexBuilder, builder) {
- this.whereJsonNotObject(knexBuilder, builder.knex(), this.args[0]);
- }
- whereJsonNotObject(knexBuilder, knex, fieldExpression) {
- const innerQuery = innerQuery => {
- const builder = jsonApi.whereJsonbRefOnLeftJsonbValOrRefOnRight(
- innerQuery,
- fieldExpression,
- '@>',
- this.opt.compareValue,
- 'not'
- );
- builder.orWhereRaw(jsonApi.whereJsonFieldQuery(knex, fieldExpression, 'IS', null));
- };
- if (this.opt.bool === 'or') {
- knexBuilder.orWhere(innerQuery);
- } else {
- knexBuilder.where(innerQuery);
- }
- }
- }
- module.exports = WhereJsonNotObjectPostgresOperation;
|