BaseQueryBuilder

Klasse: BaseQueryBuilder<TContext>

Definiert in: packages/db/src/query/builder/index.ts:37

Typparameter

TContext extends Context = Context

Konstruktoren

new BaseQueryBuilder()

ts
new BaseQueryBuilder<TContext>(query): BaseQueryBuilder<TContext>
new BaseQueryBuilder<TContext>(query): BaseQueryBuilder<TContext>

Definiert in: packages/db/src/query/builder/index.ts:40

Parameter

query

Partial<QueryIR> = {}

Gibt zurück

BaseQueryBuilder<TContext>

Accessor

fn

Signatur abrufen

ts
get fn(): object
get fn(): object

Definiert in: packages/db/src/query/builder/index.ts:645

Funktionale Varianten des Query Builders. Diese sind imperative Funktionen, die für jede Zeile aufgerufen werden. Warnung: Diese können nicht vom Query Compiler optimiert werden und können einige Arten von Optimierungen verhindern.

Beispiel
ts
q.fn.select((row) => ({
  name: row.user.name.toUpperCase(),
  age: row.user.age + 1,
}))
q.fn.select((row) => ({
  name: row.user.name.toUpperCase(),
  age: row.user.age + 1,
}))
Gibt zurück

Objekt

having()

Gruppierte Zeilen mit einer Funktion filtern, die auf jeder aggregierten Zeile operiert. Warnung: Dies kann nicht vom Query Compiler optimiert werden.

Parameter
callback

(row) => any

Eine Funktion, die eine aggregierte Zeile empfängt und einen Booleschen Wert zurückgibt.

Gibt zurück

QueryBuilder<TContext>

Ein QueryBuilder mit angewendetem funktionalem HAVING-Filter.

Beispiel
ts
// Functional having (not optimized)
query
  .from({ posts: postsCollection })
  .groupBy(({posts}) => posts.userId)
  .fn.having(row => row.count > 5)
// Functional having (not optimized)
query
  .from({ posts: postsCollection })
  .groupBy(({posts}) => posts.userId)
  .fn.having(row => row.count > 5)
select()

Felder mit einer Funktion auswählen, die auf jeder Zeile operiert. Warnung: Dies kann nicht vom Query Compiler optimiert werden.

Typparameter

TFuncSelectResult

Parameter
callback

(row) => TFuncSelectResult

Eine Funktion, die eine Zeile empfängt und den ausgewählten Wert zurückgibt.

Gibt zurück

QueryBuilder<{ [K in string | number | symbol]: (Omit<TContext, "result"> & { result: { [K in string | number | symbol]: TFuncSelectResult[K] } })[K] }>

Ein QueryBuilder mit angewendeter funktionaler Auswahl.

Beispiel
ts
// Functional select (not optimized)
query
  .from({ users: usersCollection })
  .fn.select(row => ({
    name: row.users.name.toUpperCase(),
    age: row.users.age + 1,
  }))
// Functional select (not optimized)
query
  .from({ users: usersCollection })
  .fn.select(row => ({
    name: row.users.name.toUpperCase(),
    age: row.users.age + 1,
  }))
where()

Zeilen mit einer Funktion filtern, die auf jeder Zeile operiert. Warnung: Dies kann nicht vom Query Compiler optimiert werden.

Parameter
callback

(row) => any

Eine Funktion, die eine Zeile empfängt und einen Booleschen Wert zurückgibt.

Gibt zurück

QueryBuilder<TContext>

Ein QueryBuilder mit angewendeter funktionaler Filterung.

Beispiel
ts
// Functional where (not optimized)
query
  .from({ users: usersCollection })
  .fn.where(row => row.users.name.startsWith('A'))
// Functional where (not optimized)
query
  .from({ users: usersCollection })
  .fn.where(row => row.users.name.startsWith('A'))

Methoden

_getQuery()

ts
_getQuery(): QueryIR
_getQuery(): QueryIR

Definiert in: packages/db/src/query/builder/index.ts:731

Gibt zurück

QueryIR


distinct()

ts
distinct(): QueryBuilder<TContext>
distinct(): QueryBuilder<TContext>

Definiert in: packages/db/src/query/builder/index.ts:606

Gibt an, dass die Abfrage DISTINCT-Zeilen zurückgeben soll. Dedupliziert Zeilen basierend auf den ausgewählten Spalten.

Gibt zurück

QueryBuilder<TContext>

Ein QueryBuilder mit aktiviertem DISTINCT.

Beispiel

ts
// Get countries our users are from
query
  .from({ users: usersCollection })
  .select(({users}) => users.country)
  .distinct()
// Get countries our users are from
query
  .from({ users: usersCollection })
  .select(({users}) => users.country)
  .distinct()

from()

ts
from<TSource>(source): QueryBuilder<{
  baseSchema: { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] };
  fromSourceName: keyof TSource & string;
  hasJoins: false;
  schema: { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] };
}>
from<TSource>(source): QueryBuilder<{
  baseSchema: { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] };
  fromSourceName: keyof TSource & string;
  hasJoins: false;
  schema: { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] };
}>

Definiert in: packages/db/src/query/builder/index.ts:94

Gibt die Quelltabelle oder Unterabfrage für die Abfrage an.

Typparameter

TSource extends Source

Parameter

source

TSource

Ein Objekt mit einem einzigen Schlüssel-Wert-Paar, wobei der Schlüssel der Tabellenalias und der Wert eine Collection oder eine Unterabfrage ist.

Gibt zurück

QueryBuilder<{ baseSchema: { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }; fromSourceName: keyof TSource & string; hasJoins: false; schema: { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }; }>

Ein QueryBuilder mit der angegebenen Quelle.

Beispiel

ts
// 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 })
// 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()

ts
fullJoin<TSource>(source, onCallback): QueryBuilder<MergeContextWithJoinType<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }, "full">>
fullJoin<TSource>(source, onCallback): QueryBuilder<MergeContextWithJoinType<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }, "full">>

Definiert in: packages/db/src/query/builder/index.ts:285

Führt einen FULL JOIN mit einer anderen Tabelle oder Unterabfrage durch.

Typparameter

TSource extends Source

Parameter

source

TSource

Ein Objekt mit einem einzigen Schlüssel-Wert-Paar, wobei der Schlüssel der Tabellenalias und der Wert eine Collection oder eine Unterabfrage ist.

onCallback

JoinOnCallback<MergeContext<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }>>

Eine Funktion, die Tabellenreferenzen empfängt und die Join-Bedingung zurückgibt.

Gibt zurück

QueryBuilder<MergeContextWithJoinType<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }, "full">>

Ein QueryBuilder mit der verfügbaren voll verknüpften Tabelle.

Beispiel

ts
// Full join users with posts
query
  .from({ users: usersCollection })
  .fullJoin({ posts: postsCollection }, ({users, posts}) => eq(users.id, posts.userId))
// Full join users with posts
query
  .from({ users: usersCollection })
  .fullJoin({ posts: postsCollection }, ({users, posts}) => eq(users.id, posts.userId))

groupBy()

ts
groupBy(callback): QueryBuilder<TContext>
groupBy(callback): QueryBuilder<TContext>

Definiert in: packages/db/src/query/builder/index.ts:529

Zeilen für die Aggregation nach einer oder mehreren Spalten gruppieren.

Parameter

callback

GroupByCallback<TContext>

Eine Funktion, die Tabellenreferenzen empfängt und die zu gruppierenden Felder zurückgibt.

Gibt zurück

QueryBuilder<TContext>

Ein QueryBuilder mit angewendeter Gruppierung (ermöglicht Aggregatfunktionen in SELECT und HAVING).

Beispiel

ts
// 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)
  }))
// 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()

ts
having(callback): QueryBuilder<TContext>
having(callback): QueryBuilder<TContext>

Definiert in: packages/db/src/query/builder/index.ts:365

Gruppierte Zeilen basierend auf aggregierten Bedingungen filtern.

Parameter

callback

WhereCallback<TContext>

Eine Funktion, die Tabellenreferenzen empfängt und einen Ausdruck zurückgibt.

Gibt zurück

QueryBuilder<TContext>

Ein QueryBuilder mit angewendeter HAVING-Bedingung.

Beispiel

ts
// 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))
// 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()

ts
innerJoin<TSource>(source, onCallback): QueryBuilder<MergeContextWithJoinType<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }, "inner">>
innerJoin<TSource>(source, onCallback): QueryBuilder<MergeContextWithJoinType<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }, "inner">>

Definiert in: packages/db/src/query/builder/index.ts:259

Führt einen INNER JOIN mit einer anderen Tabelle oder Unterabfrage durch.

Typparameter

TSource extends Source

Parameter

source

TSource

Ein Objekt mit einem einzigen Schlüssel-Wert-Paar, wobei der Schlüssel der Tabellenalias und der Wert eine Collection oder eine Unterabfrage ist.

onCallback

JoinOnCallback<MergeContext<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }>>

Eine Funktion, die Tabellenreferenzen empfängt und die Join-Bedingung zurückgibt.

Gibt zurück

QueryBuilder<MergeContextWithJoinType<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }, "inner">>

Ein QueryBuilder mit der verfügbaren inner verknüpften Tabelle.

Beispiel

ts
// Inner join users with posts
query
  .from({ users: usersCollection })
  .innerJoin({ posts: postsCollection }, ({users, posts}) => eq(users.id, posts.userId))
// Inner join users with posts
query
  .from({ users: usersCollection })
  .innerJoin({ posts: postsCollection }, ({users, posts}) => eq(users.id, posts.userId))

join()

ts
join<TSource, TJoinType>(
   source, 
   onCallback, 
type): QueryBuilder<MergeContextWithJoinType<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }, TJoinType>>
join<TSource, TJoinType>(
   source, 
   onCallback, 
type): QueryBuilder<MergeContextWithJoinType<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }, TJoinType>>

Definiert in: packages/db/src/query/builder/index.ts:137

Verknüpft eine andere Tabelle oder Unterabfrage mit der aktuellen Abfrage.

Typparameter

TSource extends Source

TJoinType extends "full" | "left" | "right" | "inner" = "left"

Parameter

source

TSource

Ein Objekt mit einem einzigen Schlüssel-Wert-Paar, wobei der Schlüssel der Tabellenalias und der Wert eine Collection oder eine Unterabfrage ist.

onCallback

JoinOnCallback<MergeContext<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }>>

Eine Funktion, die Tabellenreferenzen empfängt und die Join-Bedingung zurückgibt.

Typ

TJoinType = ...

Der Typ des Joins: 'inner', 'left', 'right' oder 'full' (standardmäßig 'left').

Gibt zurück

QueryBuilder<MergeContextWithJoinType<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }, TJoinType>>

Ein QueryBuilder mit der verfügbaren verknüpften Tabelle.

Beispiel

ts
// 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')
// 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')

// Join mit einer Unterabfrage const activeUsers = query.from({ u: usersCollection }).where(({u}) => u.active) query .from({ activeUsers }) .join({ p: postsCollection }, ({u, p}) => eq(u.id, p.userId))


leftJoin()

ts
leftJoin<TSource>(source, onCallback): QueryBuilder<MergeContextWithJoinType<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }, "left">>
leftJoin<TSource>(source, onCallback): QueryBuilder<MergeContextWithJoinType<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }, "left">>

Definiert in: packages/db/src/query/builder/index.ts:207

Führt einen LEFT JOIN mit einer anderen Tabelle oder Unterabfrage durch.

Typparameter

TSource extends Source

Parameter

source

TSource

Ein Objekt mit einem einzigen Schlüssel-Wert-Paar, wobei der Schlüssel der Tabellenalias und der Wert eine Collection oder eine Unterabfrage ist.

onCallback

JoinOnCallback<MergeContext<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }>>

Eine Funktion, die Tabellenreferenzen empfängt und die Join-Bedingung zurückgibt.

Gibt zurück

QueryBuilder<MergeContextWithJoinType<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }, "left">>

Ein QueryBuilder mit der verfügbaren links verknüpften Tabelle.

Beispiel

ts
// Left join users with posts
query
  .from({ users: usersCollection })
  .leftJoin({ posts: postsCollection }, ({users, posts}) => eq(users.id, posts.userId))
// Left join users with posts
query
  .from({ users: usersCollection })
  .leftJoin({ posts: postsCollection }, ({users, posts}) => eq(users.id, posts.userId))

limit()

ts
limit(count): QueryBuilder<TContext>
limit(count): QueryBuilder<TContext>

Definiert in: packages/db/src/query/builder/index.ts:561

Begrenzt die Anzahl der von der Abfrage zurückgegebenen Zeilen. orderBy ist für limit erforderlich.

Parameter

count

number

Maximale Anzahl der zurückzugebenden Zeilen.

Gibt zurück

QueryBuilder<TContext>

Ein QueryBuilder mit angewendetem Limit.

Beispiel

ts
// Get top 5 posts by likes
query
  .from({ posts: postsCollection })
  .orderBy(({posts}) => posts.likes, 'desc')
  .limit(5)
// Get top 5 posts by likes
query
  .from({ posts: postsCollection })
  .orderBy(({posts}) => posts.likes, 'desc')
  .limit(5)

offset()

ts
offset(count): QueryBuilder<TContext>
offset(count): QueryBuilder<TContext>

Definiert in: packages/db/src/query/builder/index.ts:585

Überspringt eine Anzahl von Zeilen, bevor Ergebnisse zurückgegeben werden. orderBy ist für offset erforderlich.

Parameter

count

number

Anzahl der zu überspringenden Zeilen.

Gibt zurück

QueryBuilder<TContext>

Ein QueryBuilder mit angewendetem Offset.

Beispiel

ts
// Get second page of results
query
  .from({ posts: postsCollection })
  .orderBy(({posts}) => posts.createdAt, 'desc')
  .offset(page * pageSize)
  .limit(pageSize)
// Get second page of results
query
  .from({ posts: postsCollection })
  .orderBy(({posts}) => posts.createdAt, 'desc')
  .offset(page * pageSize)
  .limit(pageSize)

orderBy()

ts
orderBy(callback, direction): QueryBuilder<TContext>
orderBy(callback, direction): QueryBuilder<TContext>

Definiert in: packages/db/src/query/builder/index.ts:479

Sortiert die Abfrageergebnisse nach einer oder mehreren Spalten.

Parameter

callback

OrderByCallback<TContext>

Eine Funktion, die Tabellenreferenzen empfängt und das zu sortierende Feld zurückgibt.

direction

OrderByDirection = ...

Sortierrichtung: 'asc' für aufsteigend, 'desc' für absteigend (standardmäßig 'asc').

Gibt zurück

QueryBuilder<TContext>

Ein QueryBuilder mit angewendeter Sortierung.

Beispiel

ts
// 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)
// 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()

ts
rightJoin<TSource>(source, onCallback): QueryBuilder<MergeContextWithJoinType<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }, "right">>
rightJoin<TSource>(source, onCallback): QueryBuilder<MergeContextWithJoinType<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }, "right">>

Definiert in: packages/db/src/query/builder/index.ts:233

Führt einen RIGHT JOIN mit einer anderen Tabelle oder Unterabfrage durch.

Typparameter

TSource extends Source

Parameter

source

TSource

Ein Objekt mit einem einzigen Schlüssel-Wert-Paar, wobei der Schlüssel der Tabellenalias und der Wert eine Collection oder eine Unterabfrage ist.

onCallback

JoinOnCallback<MergeContext<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }>>

Eine Funktion, die Tabellenreferenzen empfängt und die Join-Bedingung zurückgibt.

Gibt zurück

QueryBuilder<MergeContextWithJoinType<TContext, { [K in string | number | symbol]: { [K in string | number | symbol]: TSource[K] extends CollectionImpl<U, string | number, {}, StandardSchemaV1<unknown, unknown>, U> ? U : TSource[K] extends QueryBuilder<TContext> ? { [K in string | number | symbol]: ((...)[(...)] extends object ? any[any] : (...) extends (...) ? (...) : (...))[K] } : never }[K] }, "right">>

Ein QueryBuilder mit der verfügbaren rechts verknüpften Tabelle.

Beispiel

ts
// Right join users with posts
query
  .from({ users: usersCollection })
  .rightJoin({ posts: postsCollection }, ({users, posts}) => eq(users.id, posts.userId))
// Right join users with posts
query
  .from({ users: usersCollection })
  .rightJoin({ posts: postsCollection }, ({users, posts}) => eq(users.id, posts.userId))

select()

ts
select<TSelectObject>(callback): QueryBuilder<{ [K in string | number | symbol]: (Omit<TContext, "result"> & { result: { [K in string | number | symbol]: ResultTypeFromSelect<TSelectObject>[K] } })[K] }>
select<TSelectObject>(callback): QueryBuilder<{ [K in string | number | symbol]: (Omit<TContext, "result"> & { result: { [K in string | number | symbol]: ResultTypeFromSelect<TSelectObject>[K] } })[K] }>

Definiert in: packages/db/src/query/builder/index.ts:412

Wählt spezifische Spalten oder berechnete Werte aus der Abfrage aus.

Typparameter

TSelectObject extends Record<string, | BasicExpression | Aggregate<any> | RefProxy<any> | RefProxyFor<any>>

Parameter

callback

(refs) => TSelectObject

Eine Funktion, die Tabellenreferenzen empfängt und ein Objekt mit ausgewählten Feldern oder Ausdrücken zurückgibt.

Gibt zurück

QueryBuilder<{ [K in string | number | symbol]: (Omit<TContext, "result"> & { result: { [K in string | number | symbol]: ResultTypeFromSelect<TSelectObject>[K] } })[K] }>

Ein QueryBuilder, der nur die ausgewählten Felder zurückgibt.

Beispiel

ts
// 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 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)
  }))

where()

ts
where(callback): QueryBuilder<TContext>
where(callback): QueryBuilder<TContext>

Definiert in: packages/db/src/query/builder/index.ts:324

Filtert Zeilen basierend auf einer Bedingung.

Parameter

callback

WhereCallback<TContext>

Eine Funktion, die Tabellenreferenzen empfängt und einen Ausdruck zurückgibt.

Gibt zurück

QueryBuilder<TContext>

Ein QueryBuilder mit angewendeter WHERE-Bedingung.

Beispiel

ts
// 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))
// 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))
Unsere Partner
Code Rabbit
Electric
Prisma
Bytes abonnieren

Ihre wöchentliche Dosis JavaScript-Nachrichten. Jeden Montag kostenlos an über 100.000 Entwickler geliefert.

Bytes

Kein Spam. Jederzeit kündbar.

Bytes abonnieren

Ihre wöchentliche Dosis JavaScript-Nachrichten. Jeden Montag kostenlos an über 100.000 Entwickler geliefert.

Bytes

Kein Spam. Jederzeit kündbar.