alinea
Version:
Headless git-based CMS
81 lines (78 loc) • 2.07 kB
JavaScript
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
};