UNPKG

alinea

Version:
81 lines (78 loc) 2.07 kB
import { input, sql } from "./chunk-PNILF4WM.js"; // node_modules/rado/dist/core/expr/Conditions.js function bool(impl) { return impl.mapWith(Boolean); } function binop(operator) { return (left, right) => bool(sql`${input(left)} ${sql.unsafe(operator)} ${input(right)}`); } var eq = binop("="); var ne = binop("<>"); var gt = binop(">"); var gte = binop(">="); var lt = binop("<"); var lte = binop("<="); var like = binop("like"); var notLike = binop("not like"); var ilike = binop("ilike"); var notILike = binop("not ilike"); var arrayContains = binop("@>"); var arrayContained = binop("<@"); var arrayOverlaps = binop("&&"); function and(...conditions) { const inputs = conditions.filter((v) => v !== void 0).map(input); if (inputs.length === 0) return bool(sql`true`); if (inputs.length === 1) return bool(inputs[0]); return bool(sql`(${sql.join(inputs, sql` and `)})`); } function or(...conditions) { const inputs = conditions.filter((v) => v !== void 0).map(input); if (inputs.length === 0) return bool(sql`true`); if (inputs.length === 1) return bool(inputs[0]); return bool(sql`(${sql.join(inputs, sql` or `)})`); } function not(condition) { return bool(sql`not ${input(condition)}`); } function isNull(value) { return bool(sql`${input(value)} is null`); } function isNotNull(value) { return bool(sql`${input(value)} is not null`); } function asc(input2) { return sql`${input2} asc`; } function when(...cases) { const compare = cases.length > 1 && !Array.isArray(cases[0]) ? cases.shift() : void 0; return sql.join([ sql`case`, compare && input(compare), sql.join( cases.map((pair, index) => { if (Array.isArray(pair)) { const [condition, result] = pair; return sql`when ${input(condition)} then ${input(result)}`; } if (index === cases.length - 1) return sql`else ${input(pair)}`; throw new Error("Unexpected else condition"); }) ), sql`end` ]); } export { eq, gt, like, and, or, not, isNull, isNotNull, asc, when };