/** * Type-safe Query Builder for postgres.do * * A standalone query builder with full TypeScript type inference. * Works alongside Drizzle ORM and provides an alternative API for building queries. * * @example Basic usage * ```typescript * import { createQueryBuilder, defineTable, text, serial, eq } from 'postgres.do/query-builder' * import postgres from 'postgres.do' * * // Define schema * const users = defineTable('users', { * id: serial('id').primaryKey(), * name: text('name').notNull(), * email: text('email').notNull(), * }) * * // Create query builder * const sql = postgres('postgres://db.postgres.do/mydb') * const qb = createQueryBuilder(sql) * * // Type-safe queries * const allUsers = await qb.select().from(users).execute() * // typeof allUsers = { id: number; name: string; email: string }[] * * const filtered = await qb * .select({ email: users.columns.email }) * .from(users) * .where(eq(col('users', 'id'), 1)) * .execute() * // typeof filtered = { email: string }[] * ``` * * @example With Drizzle schema * ```typescript * import { createQueryBuilder, fromDrizzleTable } from 'postgres.do/query-builder' * import { users as drizzleUsers } from './drizzle-schema' * * const users = fromDrizzleTable(drizzleUsers) * const qb = createQueryBuilder(sql) * * // Use existing Drizzle schema with query builder * const results = await qb.select().from(users).execute() * ``` * * @packageDocumentation */ // ============================================================================ // Query Builder Factory // ============================================================================ export { createQueryBuilder } from './builder.js' // ============================================================================ // Expression Builders // ============================================================================ export { // Comparison operators eq, ne, lt, lte, gt, gte, like, ilike, inArray, notInArray, isNull, isNotNull, between, notBetween, // Logical operators and, or, not, // Aggregate functions count, countDistinct, sum, avg, min, max, // String functions concat, lower, upper, trim, coalesce, // Helpers col, columnsOf, raw, literal, sql, } from './expressions.js' // ============================================================================ // Schema Definition // ============================================================================ export { // Table definition defineTable, // Column types serial, bigserial, integer, bigint, text, varchar, boolean, timestamp, timestamptz, date, time, uuid, json, jsonb, numeric, real, doublePrecision, // Drizzle adapter fromDrizzleTable, type DrizzleAdapterOptions, // Type helpers type SelectResult, type InsertType, type ColumnKeys, } from './schema.js' // ============================================================================ // Types // ============================================================================ export type { // Core types TableDefinition, ColumnDefinition, InferTableRow, InferInsertRow, // Expression types SQLExpression, ColumnRef, ComparisonOperator, AggregateExpr, // Query builder interfaces QueryBuilder, SelectQueryBuilder, InsertQueryBuilder, UpdateQueryBuilder, DeleteQueryBuilder, JoinQueryBuilder, // Selection and filtering SelectionSpec, WhereClause, OrderBySpec, ColumnRefs, // Join types JoinType, JoinCondition, JoinResult, JoinedTables, // Insert/Update types InsertValues, UpdateSet, OnConflictAction, ConflictTarget, // Inference helpers InferSelectResult, InferColumnType, // Factory interface QueryBuilderFactory, } from './types.js'