클래스: BaseQueryBuilder<TContext>
정의 위치: packages/db/src/query/builder/index.ts:135
타입 매개변수
TContext
TContext extends Context = Context
생성자
생성자
new BaseQueryBuilder<TContext>(query, resolveCollection?): BaseQueryBuilder<TContext>;
정의 위치: packages/db/src/query/builder/index.ts:138
매개변수
query
Partial<QueryIR> = {}
resolveCollection?
CollectionResolver
반환값
BaseQueryBuilder<TContext>
접근자
fn
가져오기 시그니처
get fn(): object;
정의 위치: packages/db/src/query/builder/index.ts:923
쿼리 빌더의 함수형 변형 각 행에 대해 호출되는 명령형 함수입니다. 경고: 이러한 함수는 쿼리 컴파일러에서 최적화할 수 없으며, 일부 유형의 최적화를 불가능하게 만들 수 있습니다.
예제
q.fn.select((row) => ({
name: row.user.name.toUpperCase(),
age: row.user.age + 1,
}))
반환값
having()
having(callback): QueryBuilder<TContext>;
각 집계 행에서 작동하는 함수를 사용하여 그룹화된 행을 필터링합니다. 경고: 쿼리 컴파일러에서 최적화할 수 없습니다.
매개변수
callback
(row) => any
집계된 행(select()가 호출된 경우 $selected 포함)을 받아 부울 값을 반환하는 함수입니다
반환값
QueryBuilder<TContext>
함수형 having 필터가 적용된 QueryBuilder입니다
예제
// Functional having (not optimized)
query
.from({ posts: postsCollection })
.groupBy(({posts}) => posts.userId)
.select(({posts}) => ({ userId: posts.userId, count: count(posts.id) }))
.fn.having(({ $selected }) => $selected.count > 5)
select()
select<TFuncSelectResult>(callback): FnSelectQueryResult<TContext, TFuncSelectResult>;
각 행에 대해 작동하는 함수를 사용하여 필드를 선택합니다 경고: 쿼리 컴파일러에서 최적화할 수 없습니다
타입 매개변수
TFuncSelectResult
TFuncSelectResult
매개변수
callback
(row) => TFuncSelectResult
행을 받아 선택된 값을 반환하는 함수입니다
반환값
FnSelectQueryResult<TContext, TFuncSelectResult>
함수형 선택이 적용된 QueryBuilder입니다
예제
// Functional select (not optimized)
query
.from({ users: usersCollection })
.fn.select(row => ({
name: row.users.name.toUpperCase(),
age: row.users.age + 1,
}))
자식 쿼리 빌더, 쿼리 표현식, 그리고 eq(), toArray(), materialize()와 같은 헬퍼는 fn.select()에서 반환할 수 없습니다. select()의 필드로 사용해야 컴파일러가 이를 쿼리 그래프에 추가할 수 있습니다.
where()
where(callback): QueryBuilder<TContext>;
각 행에 대해 작동하는 함수를 사용하여 행을 필터링합니다 경고: 쿼리 컴파일러에서 최적화할 수 없습니다
매개변수
callback
(row) => any
행을 받아 부울 값을 반환하는 함수입니다
반환값
QueryBuilder<TContext>
함수형 필터링이 적용된 QueryBuilder입니다
예제
// Functional where (not optimized)
query
.from({ users: usersCollection })
.fn.where(row => row.users.name.startsWith('A'))
메서드
_getQuery()
_getQuery(): QueryIR;
정의 위치: packages/db/src/query/builder/index.ts:1015
반환값
distinct()
distinct(): QueryBuilder<TContext>;
정의 위치: packages/db/src/query/builder/index.ts:856
쿼리가 고유한 행을 반환하도록 지정합니다. 선택된 열을 기준으로 행의 중복을 제거합니다.
반환값
QueryBuilder<TContext>
distinct가 활성화된 QueryBuilder입니다
예제
// Get countries our users are from
query
.from({ users: usersCollection })
.select(({users}) => ({ country: users.country }))
.distinct()
findOne()
findOne(): QueryBuilder<TContext & SingleResult>;
정의 위치: packages/db/src/query/builder/index.ts:876
쿼리가 단일 결과를 반환하도록 지정합니다
반환값
QueryBuilder<TContext & SingleResult>
첫 번째 결과를 반환하는 QueryBuilder입니다
예제
// Get the user matching the query
query
.from({ users: usersCollection })
.where(({users}) => eq(users.id, 1))
.findOne()
from()
from<TSource>(source): QueryBuilder<ContextFromSource<TSource>>;
정의 위치: packages/db/src/query/builder/index.ts:248
쿼리의 소스 테이블 또는 서브쿼리를 지정합니다
타입 매개변수
TSource
TSource extends Source
매개변수
source
SingleSource<TSource>
키가 테이블 별칭이고 값이 컬렉션 또는 서브쿼리인 단일 키-값 쌍을 가진 객체입니다
반환값
QueryBuilder<ContextFromSource<TSource>>
지정된 소스가 적용된 QueryBuilder입니다
예제
// Query from a collection
query.from({ users: usersCollection })
// Query from a subquery
const activeUsers = query.from({ u: usersCollection }).where(({u}) => u.active)
query.from({ activeUsers })
fullJoin()
fullJoin<TSource>(source, onCallback): QueryBuilder<MergeContextWithJoinType<TContext, SchemaFromSource<TSource>, "full">>;
정의 위치: packages/db/src/query/builder/index.ts:483
다른 테이블 또는 서브쿼리와 FULL JOIN을 수행합니다
타입 매개변수
TSource
TSource extends Source
매개변수
source
TSource
키가 테이블 별칭이고 값이 컬렉션 또는 서브쿼리인 단일 키-값 쌍을 가진 객체입니다
onCallback
JoinOnCallback<MergeContextForJoinCallback<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<any, any, any, any, any> ? InferCollectionType<any[any]> : TSource[K] extends CollectionOptionsIdentity<any, any, any, any, any> ? InferCollectionType<any[any]> : TSource[K] extends QueryBuilder<TContext> ? ResultValue<TContext> : never }[K] }>>
테이블 참조를 받아 조인 조건을 반환하는 함수입니다.
반환값
QueryBuilder<MergeContextWithJoinType<TContext, SchemaFromSource<TSource>, "full">>
조인된 전체 테이블을 사용할 수 있는 QueryBuilder입니다.
예제
// Full join users with posts
query
.from({ users: usersCollection })
.fullJoin({ posts: postsCollection }, ({users, posts}) => eq(users.id, posts.userId))
groupBy()
groupBy(callback): QueryBuilder<TContext>;
정의 위치: packages/db/src/query/builder/index.ts:778
집계를 위해 하나 이상의 열을 기준으로 행을 그룹화합니다.
매개변수
callback
GroupByCallback<TContext>
테이블 참조를 받아 그룹화할 필드(들)를 반환하는 함수입니다.
반환값
QueryBuilder<TContext>
그룹화가 적용된 QueryBuilder입니다(SELECT 및 HAVING에서 집계 함수를 사용할 수 있습니다).
예제
// Group by a single column
query
.from({ posts: postsCollection })
.groupBy(({posts}) => posts.userId)
.select(({posts, count}) => ({
userId: posts.userId,
postCount: count()
}))
// Group by multiple columns
query
.from({ sales: salesCollection })
.groupBy(({sales}) => [sales.region, sales.category])
.select(({sales, sum}) => ({
region: sales.region,
category: sales.category,
totalSales: sum(sales.amount)
}))
having()
having(callback): QueryBuilder<TContext>;
정의 위치: packages/db/src/query/builder/index.ts:577
집계 조건을 기준으로 그룹화된 행을 필터링합니다.
매개변수
callback
WhereCallback<TContext>
테이블 참조를 받고 표현식을 반환하는 함수입니다
반환값
QueryBuilder<TContext>
having 조건이 적용된 QueryBuilder입니다.
예제
// Filter groups by count
query
.from({ posts: postsCollection })
.groupBy(({posts}) => posts.userId)
.having(({posts}) => gt(count(posts.id), 5))
// Filter by average
query
.from({ orders: ordersCollection })
.groupBy(({orders}) => orders.customerId)
.having(({orders}) => gt(avg(orders.total), 100))
// Multiple having calls are ANDed together
query
.from({ orders: ordersCollection })
.groupBy(({orders}) => orders.customerId)
.having(({orders}) => gt(count(orders.id), 5))
.having(({orders}) => gt(avg(orders.total), 100))
innerJoin()
innerJoin<TSource>(source, onCallback): QueryBuilder<MergeContextWithJoinType<TContext, SchemaFromSource<TSource>, "inner">>;
정의 위치: packages/db/src/query/builder/index.ts:457
다른 테이블 또는 서브쿼리와 INNER JOIN을 수행합니다.
타입 매개변수
TSource
TSource extends Source
매개변수
source
TSource
키가 테이블 별칭이고 값이 컬렉션 또는 서브쿼리인 단일 키-값 쌍을 가진 객체입니다
onCallback
JoinOnCallback<MergeContextForJoinCallback<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<any, any, any, any, any> ? InferCollectionType<any[any]> : TSource[K] extends CollectionOptionsIdentity<any, any, any, any, any> ? InferCollectionType<any[any]> : TSource[K] extends QueryBuilder<TContext> ? ResultValue<TContext> : never }[K] }>>
테이블 참조를 받아 조인 조건을 반환하는 함수입니다.
반환값
QueryBuilder<MergeContextWithJoinType<TContext, SchemaFromSource<TSource>, "inner">>
내부 조인된 테이블을 사용할 수 있는 QueryBuilder입니다
예제
// Inner join users with posts
query
.from({ users: usersCollection })
.innerJoin({ posts: postsCollection }, ({users, posts}) => eq(users.id, posts.userId))
join()
join<TSource, TJoinType>(
source,
onCallback,
type): QueryBuilder<MergeContextWithJoinType<TContext, SchemaFromSource<TSource>, TJoinType>>;
정의 위치: packages/db/src/query/builder/index.ts:335
현재 쿼리에 다른 테이블 또는 서브쿼리를 조인합니다
타입 매개변수
TSource
TSource extends Source
TJoinType
TJoinType extends "inner" | "left" | "right" | "full" = "left"
매개변수
source
TSource
키가 테이블 별칭이고 값이 컬렉션 또는 서브쿼리인 단일 키-값 쌍을 가진 객체입니다
onCallback
JoinOnCallback<MergeContextForJoinCallback<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<any, any, any, any, any> ? InferCollectionType<any[any]> : TSource[K] extends CollectionOptionsIdentity<any, any, any, any, any> ? InferCollectionType<any[any]> : TSource[K] extends QueryBuilder<TContext> ? ResultValue<TContext> : never }[K] }>>
테이블 참조를 받아 조인 조건을 반환하는 함수입니다.
type
TJoinType = ...
조인 유형입니다. 'inner', 'left', 'right' 또는 'full'이며, 기본값은 'left'입니다
반환값
QueryBuilder<MergeContextWithJoinType<TContext, SchemaFromSource<TSource>, TJoinType>>
조인된 테이블을 사용할 수 있는 QueryBuilder입니다
예제
// Left join users with posts
query
.from({ users: usersCollection })
.join({ posts: postsCollection }, ({users, posts}) => eq(users.id, posts.userId))
// Inner join with explicit type
query
.from({ u: usersCollection })
.join({ p: postsCollection }, ({u, p}) => eq(u.id, p.userId), 'inner')
// 서브쿼리와 조인
const activeUsers = query.from({ u: usersCollection }).where(({u}) => u.active)
query
.from({ activeUsers })
.join({ p: postsCollection }, ({u, p}) => eq(u.id, p.userId))
leftJoin()
leftJoin<TSource>(source, onCallback): QueryBuilder<MergeContextWithJoinType<TContext, SchemaFromSource<TSource>, "left">>;
정의 위치: packages/db/src/query/builder/index.ts:405
다른 테이블 또는 서브쿼리와 LEFT JOIN을 수행합니다
타입 매개변수
TSource
TSource extends Source
매개변수
source
TSource
키가 테이블 별칭이고 값이 컬렉션 또는 서브쿼리인 단일 키-값 쌍을 가진 객체입니다
onCallback
JoinOnCallback<MergeContextForJoinCallback<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<any, any, any, any, any> ? InferCollectionType<any[any]> : TSource[K] extends CollectionOptionsIdentity<any, any, any, any, any> ? InferCollectionType<any[any]> : TSource[K] extends QueryBuilder<TContext> ? ResultValue<TContext> : never }[K] }>>
테이블 참조를 받아 조인 조건을 반환하는 함수입니다.
반환값
QueryBuilder<MergeContextWithJoinType<TContext, SchemaFromSource<TSource>, "left">>
왼쪽 조인된 테이블을 사용할 수 있는 QueryBuilder입니다
예제
// Left join users with posts
query
.from({ users: usersCollection })
.leftJoin({ posts: postsCollection }, ({users, posts}) => eq(users.id, posts.userId))
limit()
limit(count): QueryBuilder<TContext>;
정의 위치: packages/db/src/query/builder/index.ts:811
쿼리가 반환하는 행 수를 제한합니다
orderBy는 limit에 필요합니다
매개변수
count
number
반환할 최대 행 수입니다
반환값
QueryBuilder<TContext>
제한이 적용된 QueryBuilder입니다
예제
// Get top 5 posts by likes
query
.from({ posts: postsCollection })
.orderBy(({posts}) => posts.likes, 'desc')
.limit(5)
offset()
offset(count): QueryBuilder<TContext>;
정의 위치: packages/db/src/query/builder/index.ts:835
결과를 반환하기 전에 지정된 수의 행을 건너뜁니다
orderBy는 offset에 필요합니다
매개변수
count
number
건너뛸 행 수입니다
반환값
QueryBuilder<TContext>
오프셋이 적용된 QueryBuilder입니다
예제
// Get second page of results
query
.from({ posts: postsCollection })
.orderBy(({posts}) => posts.createdAt, 'desc')
.offset(page * pageSize)
.limit(pageSize)
orderBy()
orderBy(callback, options): QueryBuilder<TContext>;
정의 위치: packages/db/src/query/builder/index.ts:702
하나 이상의 열을 기준으로 쿼리 결과를 정렬합니다
매개변수
callback
OrderByCallback<TContext>
테이블 참조를 받아 정렬할 필드를 반환하는 함수입니다
options
OrderByDirection | OrderByOptions
반환값
QueryBuilder<TContext>
정렬이 적용된 QueryBuilder입니다
예제
// Sort by a single column
query
.from({ users: usersCollection })
.orderBy(({users}) => users.name)
// Sort descending
query
.from({ users: usersCollection })
.orderBy(({users}) => users.createdAt, 'desc')
// Multiple sorts (chain orderBy calls)
query
.from({ users: usersCollection })
.orderBy(({users}) => users.lastName)
.orderBy(({users}) => users.firstName)
rightJoin()
rightJoin<TSource>(source, onCallback): QueryBuilder<MergeContextWithJoinType<TContext, SchemaFromSource<TSource>, "right">>;
정의 위치: packages/db/src/query/builder/index.ts:431
다른 테이블 또는 서브쿼리와 RIGHT JOIN을 수행합니다
타입 매개변수
TSource
TSource extends Source
매개변수
source
TSource
키가 테이블 별칭이고 값이 컬렉션 또는 서브쿼리인 단일 키-값 쌍을 가진 객체입니다
onCallback
JoinOnCallback<MergeContextForJoinCallback<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<any, any, any, any, any> ? InferCollectionType<any[any]> : TSource[K] extends CollectionOptionsIdentity<any, any, any, any, any> ? InferCollectionType<any[any]> : TSource[K] extends QueryBuilder<TContext> ? ResultValue<TContext> : never }[K] }>>
테이블 참조를 받아 조인 조건을 반환하는 함수입니다.
반환값
QueryBuilder<MergeContextWithJoinType<TContext, SchemaFromSource<TSource>, "right">>
오른쪽 조인된 테이블을 사용할 수 있는 QueryBuilder입니다
예제
// Right join users with posts
query
.from({ users: usersCollection })
.rightJoin({ posts: postsCollection }, ({users, posts}) => eq(users.id, posts.userId))
select()
호출 시그니처
select<TSelectObject>(callback): QueryBuilder<WithResult<TContext, ResultTypeFromSelect<TSelectObject>>>;
정의 위치: packages/db/src/query/builder/index.ts:643
쿼리에서 특정 열 또는 계산된 값을 선택합니다
타입 매개변수
TSelectObject
TSelectObject extends SelectShape
매개변수
callback
(refs) => NonScalarSelectObject<TSelectObject>
테이블 참조를 받고 선택한 필드 또는 표현식이 포함된 객체를 반환하는 함수입니다
반환값
QueryBuilder<WithResult<TContext, ResultTypeFromSelect<TSelectObject>>>
선택한 필드만 반환하는 QueryBuilder입니다
예제
// Select specific columns
query
.from({ users: usersCollection })
.select(({users}) => ({
name: users.name,
email: users.email
}))
// Select with computed values
query
.from({ users: usersCollection })
.select(({users}) => ({
fullName: concat(users.firstName, ' ', users.lastName),
ageInMonths: mul(users.age, 12)
}))
// Select with aggregates (requires GROUP BY)
query
.from({ posts: postsCollection })
.groupBy(({posts}) => posts.userId)
.select(({posts, count}) => ({
userId: posts.userId,
postCount: count(posts.id)
}))
호출 시그니처
select<TSelectValue>(callback): QueryBuilder<WithResult<TContext, ResultTypeFromSelectValue<TSelectValue>>>;
정의 위치: packages/db/src/query/builder/index.ts:648
쿼리에서 특정 열 또는 계산된 값을 선택합니다
타입 매개변수
TSelectValue
TSelectValue extends ScalarSelectValue
매개변수
callback
(refs) => TSelectValue
테이블 참조를 받고 선택한 필드 또는 표현식이 포함된 객체를 반환하는 함수입니다
반환값
QueryBuilder<WithResult<TContext, ResultTypeFromSelectValue<TSelectValue>>>
선택한 필드만 반환하는 QueryBuilder입니다
예제
// Select specific columns
query
.from({ users: usersCollection })
.select(({users}) => ({
name: users.name,
email: users.email
}))
// Select with computed values
query
.from({ users: usersCollection })
.select(({users}) => ({
fullName: concat(users.firstName, ' ', users.lastName),
ageInMonths: mul(users.age, 12)
}))
// Select with aggregates (requires GROUP BY)
query
.from({ posts: postsCollection })
.groupBy(({posts}) => posts.userId)
.select(({posts, count}) => ({
userId: posts.userId,
postCount: count(posts.id)
}))
unionAll()
호출 시그니처
unionAll<TSource>(source): QueryBuilder<ContextFromUnionSource<TSource>>;
정의 위치: packages/db/src/query/builder/index.ts:274
하나의 쿼리에서 여러 독립적인 소스 스트림을 통합합니다.
타입 매개변수
TSource
TSource extends Source
매개변수
source
TSource
컬렉션 또는 서브쿼리에 매핑된 하나 이상의 별칭을 포함하는 객체입니다
반환값
QueryBuilder<ContextFromUnionSource<TSource>>
통합된 소스를 사용할 수 있는 QueryBuilder입니다
예제
query
.unionAll({ message: messagesCollection, toolCall: toolCallsCollection })
.orderBy(({ message, toolCall }) =>
coalesce(message.timestamp, toolCall.timestamp)
)
호출 시그니처
unionAll<TBranches>(...branches): QueryBuilder<ContextFromUnionBranches<TBranches>>;
정의 위치: packages/db/src/query/builder/index.ts:277
하나의 쿼리에서 여러 독립적인 소스 스트림을 통합합니다.
타입 매개변수
TBranches
TBranches extends readonly [QueryBuilder<any>, QueryBuilder<any>]
매개변수
branches
...TBranches
반환값
QueryBuilder<ContextFromUnionBranches<TBranches>>
통합된 소스를 사용할 수 있는 QueryBuilder입니다
예제
query
.unionAll({ message: messagesCollection, toolCall: toolCallsCollection })
.orderBy(({ message, toolCall }) =>
coalesce(message.timestamp, toolCall.timestamp)
)
where()
where(callback): QueryBuilder<TContext>;
정의 위치: packages/db/src/query/builder/index.ts:522
조건에 따라 행을 필터링합니다
매개변수
callback
WhereCallback<TContext>
테이블 참조를 받고 표현식을 반환하는 함수입니다
반환값
QueryBuilder<TContext>
where 조건이 적용된 QueryBuilder입니다
예제
// Simple condition
query
.from({ users: usersCollection })
.where(({users}) => gt(users.age, 18))
// Multiple conditions
query
.from({ users: usersCollection })
.where(({users}) => and(
gt(users.age, 18),
eq(users.active, true)
))
// Multiple where calls are ANDed together
query
.from({ users: usersCollection })
.where(({users}) => gt(users.age, 18))
.where(({users}) => eq(users.active, true))