Spaces:
Sleeping
Sleeping
| import { Column } from "../../column.js"; | |
| import { is } from "../../entity.js"; | |
| import { Table } from "../../table.js"; | |
| import { | |
| isDriverValueEncoder, | |
| isSQLWrapper, | |
| Param, | |
| Placeholder, | |
| SQL, | |
| sql, | |
| StringChunk, | |
| View | |
| } from "../sql.js"; | |
| function bindIfParam(value, column) { | |
| if (isDriverValueEncoder(column) && !isSQLWrapper(value) && !is(value, Param) && !is(value, Placeholder) && !is(value, Column) && !is(value, Table) && !is(value, View)) { | |
| return new Param(value, column); | |
| } | |
| return value; | |
| } | |
| const eq = (left, right) => { | |
| return sql`${left} = ${bindIfParam(right, left)}`; | |
| }; | |
| const ne = (left, right) => { | |
| return sql`${left} <> ${bindIfParam(right, left)}`; | |
| }; | |
| function and(...unfilteredConditions) { | |
| const conditions = unfilteredConditions.filter( | |
| (c) => c !== void 0 | |
| ); | |
| if (conditions.length === 0) { | |
| return void 0; | |
| } | |
| if (conditions.length === 1) { | |
| return new SQL(conditions); | |
| } | |
| return new SQL([ | |
| new StringChunk("("), | |
| sql.join(conditions, new StringChunk(" and ")), | |
| new StringChunk(")") | |
| ]); | |
| } | |
| function or(...unfilteredConditions) { | |
| const conditions = unfilteredConditions.filter( | |
| (c) => c !== void 0 | |
| ); | |
| if (conditions.length === 0) { | |
| return void 0; | |
| } | |
| if (conditions.length === 1) { | |
| return new SQL(conditions); | |
| } | |
| return new SQL([ | |
| new StringChunk("("), | |
| sql.join(conditions, new StringChunk(" or ")), | |
| new StringChunk(")") | |
| ]); | |
| } | |
| function not(condition) { | |
| return sql`not ${condition}`; | |
| } | |
| const gt = (left, right) => { | |
| return sql`${left} > ${bindIfParam(right, left)}`; | |
| }; | |
| const gte = (left, right) => { | |
| return sql`${left} >= ${bindIfParam(right, left)}`; | |
| }; | |
| const lt = (left, right) => { | |
| return sql`${left} < ${bindIfParam(right, left)}`; | |
| }; | |
| const lte = (left, right) => { | |
| return sql`${left} <= ${bindIfParam(right, left)}`; | |
| }; | |
| function inArray(column, values) { | |
| if (Array.isArray(values)) { | |
| if (values.length === 0) { | |
| return sql`false`; | |
| } | |
| return sql`${column} in ${values.map((v) => bindIfParam(v, column))}`; | |
| } | |
| return sql`${column} in ${bindIfParam(values, column)}`; | |
| } | |
| function notInArray(column, values) { | |
| if (Array.isArray(values)) { | |
| if (values.length === 0) { | |
| return sql`true`; | |
| } | |
| return sql`${column} not in ${values.map((v) => bindIfParam(v, column))}`; | |
| } | |
| return sql`${column} not in ${bindIfParam(values, column)}`; | |
| } | |
| function isNull(value) { | |
| return sql`${value} is null`; | |
| } | |
| function isNotNull(value) { | |
| return sql`${value} is not null`; | |
| } | |
| function exists(subquery) { | |
| return sql`exists ${subquery}`; | |
| } | |
| function notExists(subquery) { | |
| return sql`not exists ${subquery}`; | |
| } | |
| function between(column, min, max) { | |
| return sql`${column} between ${bindIfParam(min, column)} and ${bindIfParam( | |
| max, | |
| column | |
| )}`; | |
| } | |
| function notBetween(column, min, max) { | |
| return sql`${column} not between ${bindIfParam( | |
| min, | |
| column | |
| )} and ${bindIfParam(max, column)}`; | |
| } | |
| function like(column, value) { | |
| return sql`${column} like ${value}`; | |
| } | |
| function notLike(column, value) { | |
| return sql`${column} not like ${value}`; | |
| } | |
| function ilike(column, value) { | |
| return sql`${column} ilike ${value}`; | |
| } | |
| function notIlike(column, value) { | |
| return sql`${column} not ilike ${value}`; | |
| } | |
| function arrayContains(column, values) { | |
| if (Array.isArray(values)) { | |
| if (values.length === 0) { | |
| throw new Error("arrayContains requires at least one value"); | |
| } | |
| const array = sql`${bindIfParam(values, column)}`; | |
| return sql`${column} @> ${array}`; | |
| } | |
| return sql`${column} @> ${bindIfParam(values, column)}`; | |
| } | |
| function arrayContained(column, values) { | |
| if (Array.isArray(values)) { | |
| if (values.length === 0) { | |
| throw new Error("arrayContained requires at least one value"); | |
| } | |
| const array = sql`${bindIfParam(values, column)}`; | |
| return sql`${column} <@ ${array}`; | |
| } | |
| return sql`${column} <@ ${bindIfParam(values, column)}`; | |
| } | |
| function arrayOverlaps(column, values) { | |
| if (Array.isArray(values)) { | |
| if (values.length === 0) { | |
| throw new Error("arrayOverlaps requires at least one value"); | |
| } | |
| const array = sql`${bindIfParam(values, column)}`; | |
| return sql`${column} && ${array}`; | |
| } | |
| return sql`${column} && ${bindIfParam(values, column)}`; | |
| } | |
| export { | |
| and, | |
| arrayContained, | |
| arrayContains, | |
| arrayOverlaps, | |
| between, | |
| bindIfParam, | |
| eq, | |
| exists, | |
| gt, | |
| gte, | |
| ilike, | |
| inArray, | |
| isNotNull, | |
| isNull, | |
| like, | |
| lt, | |
| lte, | |
| ne, | |
| not, | |
| notBetween, | |
| notExists, | |
| notIlike, | |
| notInArray, | |
| notLike, | |
| or | |
| }; | |
| //# sourceMappingURL=conditions.js.map |