UNPKG

@uwdata/mosaic-sql

Version:

SQL query construction and analysis.

60 lines 1.66 kB
import { BETWEEN_OPERATOR, NOT_BETWEEN_OPERATOR } from '../constants.js'; import { ExprNode } from './node.js'; class AbstractBetweenOpNode extends ExprNode { /** The input expression. */ expr; /** The range extent. */ extent; /** * Instantiate an abstract between operator node. * @param type The node type. * @param expr The input expression. * @param extent The range extent. */ constructor(type, expr, extent) { super(type); this.expr = expr; this.extent = extent; } /** * Generate a SQL query string for this node. * @param op The operator to apply. */ toSQL(op) { const { extent: r, expr } = this; return r ? `(${expr} ${op} ${r[0]} AND ${r[1]})` : ''; } } export class BetweenOpNode extends AbstractBetweenOpNode { /** * Instantiate a between operator node. * @param expr The input expression. * @param extent The range extent. */ constructor(expr, extent) { super(BETWEEN_OPERATOR, expr, extent); } /** * Generate a SQL query string for this node. */ toString() { return super.toSQL('BETWEEN'); } } export class NotBetweenOpNode extends AbstractBetweenOpNode { /** * Instantiate a not between operator node. * @param expr The input expression. * @param extent The range extent. */ constructor(expr, extent) { super(NOT_BETWEEN_OPERATOR, expr, extent); } /** * Generate a SQL query string for this node. */ toString() { return super.toSQL('NOT BETWEEN'); } } //# sourceMappingURL=between-op.js.map