3.9 KiB
3.9 KiB
TaylorDB Basic Queries & Filtering
This document covers core read operations using the TaylorDB query builder:
- Basic select queries
- Ordering
- Filtering with where clauses
- Date filters
- Array and select field filters
- Simple text search
Basic Queries
Get All Records
export async function getAllUsers() {
return await queryBuilder
.selectFrom("users")
.select(["id", "name", "email", "createdAt"])
.execute();
}
Get All Records (All Fields)
export async function getAllUsers() {
return await queryBuilder.selectFrom("users").execute();
}
Get Single Record by ID
export async function getUserById(id: number) {
return await queryBuilder
.selectFrom("users")
.where("id", "=", id)
.executeTakeFirst();
}
Note: .executeTakeFirst() returns a single record or undefined.
Get Records with Ordering
// Descending order (newest first)
export async function getRecentUsers() {
return await queryBuilder
.selectFrom("users")
.orderBy("createdAt", "desc")
.execute();
}
// Ascending order (oldest first)
export async function getOldestUsers() {
return await queryBuilder
.selectFrom("users")
.orderBy("createdAt", "asc")
.execute();
}
Filtering & Conditions
Basic Where Clauses
// Exact match
.where("status", "=", "active")
// Not equal
.where("status", "!=", "deleted")
// Greater than / Less than
.where("age", ">", 18)
.where("age", ">=", 18)
.where("age", "<", 65)
.where("age", "<=", 65)
Multiple Conditions (AND logic)
export async function getActiveAdults() {
return await queryBuilder
.selectFrom("users")
.where("status", "=", "active")
.where("age", ">=", 18)
.execute();
}
Date Filtering
// Exact date
export async function getUsersForDate(date: string) {
return await queryBuilder
.selectFrom("users")
.where("createdAt", "=", ["exactDay", date])
.execute();
}
// Date range
export async function getUsersInRange(startDate: string, endDate: string) {
return await queryBuilder
.selectFrom("users")
.where("createdAt", ">=", ["exactDay", startDate])
.where("createdAt", "<=", ["exactDay", endDate])
.execute();
}
// Before/After a date
.where("dueDate", "<", ["exactDay", "2024-01-01"])
.where("startDate", ">", ["exactDay", "2024-12-31"])
Array/Multi-Select Filtering
// Check if array contains any of the values
export async function getUsersByTags(tags: string[]) {
return await queryBuilder
.selectFrom("users")
.where("tags", "hasAnyOf", tags)
.execute();
}
// Example: Get users tagged with "admin" OR "moderator"
const adminUsers = await getUsersByTags(["admin", "moderator"]);
Select Field Filtering
Single Select
For single-select fields, the query builder now returns a single string value.
export async function getUsersByRole(role: string) {
return await queryBuilder
.selectFrom("users")
.where("role", "=", role)
.execute();
}
Multi Select
For multi-select fields, the query builder returns and accepts multiple values.
export async function getUsersByInterests(interests: string[]) {
return await queryBuilder
.selectFrom("users")
.where("interests", "hasAnyOf", interests)
.execute();
}
Text Search (Contains)
export async function searchUsersByName(query: string) {
return await queryBuilder
.selectFrom("users")
.where("name", "contains", query)
.execute();
}
For more topics, see:
TAYLORDB_WRITE_OPERATIONS.mdfor inserts, updates, and deletesTAYLORDB_ADVANCED_PATTERNS.mdfor aggregations, pagination, and conditional queriesTAYLORDB_FIELD_TYPES.mdfor field type handling and enumsTAYLORDB_PITFALLS_BEST_PRACTICES.mdfor pitfalls and best practices