| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- 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
|