Skip to main content

AND, OR, XOR

Logical helpers to combine multiple conditions into a single group.

AND

AND(...conditions: Condition[])

Combines multiple conditions with AND, wrapping them in a group.

import { OP, useD1 } from 'cl-orm';

const { AND, gte, eq } = OP;
const db = useD1(env.DB);

await db.select({
from: 'users',
where: AND(gte('age', 18), eq('status', 'active')),
});

SQL Query

SELECT * FROM `users` WHERE (`age` >= ? AND `status` = ?)

-- params [18, 'active']

OR

OR(...conditions: Condition[])

Combines multiple conditions with OR, wrapping each in a group.

import { OP, useD1 } from 'cl-orm';

const { OR, eq } = OP;
const db = useD1(env.DB);

await db.select({
from: 'users',
where: OR(eq('status', 'active'), eq('status', 'pending')),
});

SQL Query

SELECT * FROM `users` WHERE (`status` = ?) OR (`status` = ?)

-- params ['active', 'pending']

XOR

XOR(...conditions: Condition[])

Combines multiple conditions with XOR, wrapping each in a group.

import { OP, useD1 } from 'cl-orm';

const { XOR, eq } = OP;
const db = useD1(env.DB);

await db.select({
from: 'users',
where: XOR(eq('isAdmin', true), eq('isModerator', true)),
});

SQL Query

SELECT * FROM `users` WHERE (`isAdmin` = ?) XOR (`isModerator` = ?)

-- params [true, true]

Combining logical operators

import { OP, useD1 } from 'cl-orm';

const { OR, AND, gte, lt, eq } = OP;
const db = useD1(env.DB);

await db.select({
from: 'users',
where: OR(
AND(gte('age', 18), eq('status', 'locked')),
AND(lt('age', 18), eq('status', 'enabled'))
),
});

SQL Query

SELECT * FROM `users` WHERE ((`age` >= ? AND `status` = ?)) OR ((`age` < ? AND `status` = ?))

-- params [18, 'locked', 18, 'enabled']