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.
- OP.AND
- Array
- Manual
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')),
});
import { OP, useD1 } from 'cl-orm';
const { gte, eq } = OP;
const db = useD1(env.DB);
await db.select({
from: 'users',
where: [gte('age', 18), 'AND', eq('status', 'active')],
});
import { useD1 } from 'cl-orm';
const db = useD1(env.DB);
await db.select({
from: 'users',
where: '`age` >= ? AND `status` = ?',
params: [18, '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.
- OP.OR
- Array
- Manual
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')),
});
import { OP, useD1 } from 'cl-orm';
const { eq } = OP;
const db = useD1(env.DB);
await db.select({
from: 'users',
where: [eq('status', 'active'), 'OR', eq('status', 'pending')],
});
import { useD1 } from 'cl-orm';
const db = useD1(env.DB);
await db.select({
from: 'users',
where: '(`status` = ?) OR (`status` = ?)',
params: ['active', '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.
- OP.XOR
- Array
- Manual
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)),
});
import { OP, useD1 } from 'cl-orm';
const { eq } = OP;
const db = useD1(env.DB);
await db.select({
from: 'users',
where: [eq('isAdmin', true), 'XOR', eq('isModerator', true)],
});
import { useD1 } from 'cl-orm';
const db = useD1(env.DB);
await db.select({
from: 'users',
where: '(`isAdmin` = ?) XOR (`isModerator` = ?)',
params: [true, true],
});
SQL Query
SELECT * FROM `users` WHERE (`isAdmin` = ?) XOR (`isModerator` = ?)
-- params [true, true]
Combining logical operators
- OP.AND + OP.OR
- Array
- Manual
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'))
),
});
import { OP, useD1 } from 'cl-orm';
const { gte, lt, eq } = OP;
const db = useD1(env.DB);
await db.select({
from: 'users',
where: [
[gte('age', 18), 'AND', eq('status', 'locked')],
'OR',
[lt('age', 18), 'AND', eq('status', 'enabled')],
],
});
import { useD1 } from 'cl-orm';
const db = useD1(env.DB);
await db.select({
from: 'users',
where: '(`age` >= ? AND `status` = ?) OR (`age` < ? AND `status` = ?)',
params: [18, 'locked', 18, 'enabled'],
});
SQL Query
SELECT * FROM `users` WHERE ((`age` >= ? AND `status` = ?)) OR ((`age` < ? AND `status` = ?))
-- params [18, 'locked', 18, 'enabled']