kysely
Version:
Type safe SQL query builder
149 lines (148 loc) • 3.51 kB
JavaScript
/// <reference types="./operator-node.d.ts" />
import { freeze, isString } from '../util/object-utils.js';
const COMPARISON_OPERATORS_DICTIONARY = freeze({
'=': true,
'==': true,
'!=': true,
'<>': true,
'>': true,
'>=': true,
'<': true,
'<=': true,
in: true,
'not in': true,
is: true,
'is not': true,
like: true,
'not like': true,
match: true,
ilike: true,
'not ilike': true,
'@>': true,
'<@': true,
'^@': true,
'&&': true,
'?': true,
'?&': true,
'?|': true,
'!<': true,
'!>': true,
'<=>': true,
'!~': true,
'~': true,
'~*': true,
'!~*': true,
'@@': true,
'@@@': true,
'!!': true,
'<->': true,
regexp: true,
'is distinct from': true,
'is not distinct from': true,
});
/**
* @deprecated will be removed in version 0.30.x
*/
export const COMPARISON_OPERATORS = Object.keys(COMPARISON_OPERATORS_DICTIONARY);
const ARITHMETIC_OPERATORS_DICTIONARY = freeze({
'+': true,
'-': true,
'*': true,
'/': true,
'%': true,
'^': true,
'&': true,
'|': true,
'#': true,
'<<': true,
'>>': true,
});
/**
* @deprecated will be removed in version 0.30.x
*/
export const ARITHMETIC_OPERATORS = Object.keys(ARITHMETIC_OPERATORS_DICTIONARY);
const JSON_OPERATORS_DICTIONARY = freeze({
'->': true,
'->>': true,
});
/**
* @deprecated will be removed in version 0.30.x
*/
export const JSON_OPERATORS = Object.keys(JSON_OPERATORS_DICTIONARY);
const BINARY_OPERATORS_DICTIONARY = freeze({
...COMPARISON_OPERATORS_DICTIONARY,
...ARITHMETIC_OPERATORS_DICTIONARY,
'||': true,
});
/**
* @deprecated will be removed in version 0.30.x
*/
export const BINARY_OPERATORS = Object.keys(BINARY_OPERATORS_DICTIONARY);
const UNARY_FILTER_OPERATORS_DICTIONARY = freeze({
exists: true,
'not exists': true,
});
/**
* @deprecated will be removed in version 0.30.x
*/
export const UNARY_FILTER_OPERATORS = Object.keys(UNARY_FILTER_OPERATORS_DICTIONARY);
const UNARY_OPERATORS_DICTIONARY = freeze({
...UNARY_FILTER_OPERATORS_DICTIONARY,
'-': true,
not: true,
});
/**
* @deprecated will be removed in version 0.30.x
*/
export const UNARY_OPERATORS = Object.keys(UNARY_OPERATORS_DICTIONARY);
/**
* @deprecated will be removed in version 0.30.x
*/
export const OPERATORS = [
...BINARY_OPERATORS,
...JSON_OPERATORS,
...UNARY_OPERATORS,
'between',
'between symmetric',
];
/**
* @internal
*/
export const OperatorNode = freeze({
is(node) {
return node.kind === 'OperatorNode';
},
create(operator) {
return freeze({
kind: 'OperatorNode',
operator,
});
},
});
/**
* @deprecated will be removed in version 0.30.x
*/
export function isOperator(op) {
return isString(op) && OPERATORS.includes(op);
}
export function isBinaryOperator(op) {
return isString(op) && BINARY_OPERATORS_DICTIONARY[op];
}
/**
* @deprecated will be removed in version 0.30.x
*/
export function isComparisonOperator(op) {
return isString(op) && COMPARISON_OPERATORS.includes(op);
}
/**
* @deprecated will be removed in version 0.30.x
*/
export function isArithmeticOperator(op) {
return isString(op) && ARITHMETIC_OPERATORS.includes(op);
}
export function isJSONOperator(op) {
return isString(op) && JSON_OPERATORS_DICTIONARY[op];
}
export function isUnaryOperator(op) {
return isString(op) && UNARY_OPERATORS_DICTIONARY[op];
}