kysely
Version:
Type safe SQL query builder
21 lines (20 loc) • 1.01 kB
JavaScript
/// <reference types="./safe-null-comparison-transformer.d.ts" />
import { BinaryOperationNode } from '../../operation-node/binary-operation-node.js';
import { OperationNodeTransformer } from '../../operation-node/operation-node-transformer.js';
import { OperatorNode } from '../../operation-node/operator-node.js';
import { ValueNode } from '../../operation-node/value-node.js';
export class SafeNullComparisonTransformer extends OperationNodeTransformer {
transformBinaryOperation(node) {
const { operator, leftOperand, rightOperand } = super.transformBinaryOperation(node);
if (!ValueNode.is(rightOperand) ||
rightOperand.value !== null ||
!OperatorNode.is(operator)) {
return node;
}
const op = operator.operator;
if (op !== '=' && op !== '!=' && op !== '<>') {
return node;
}
return BinaryOperationNode.create(leftOperand, OperatorNode.create(op === '=' ? 'is' : 'is not'), rightOperand);
}
}