Libraries
    Preparing search index...
    • Create a typed SchemaQueryBuilder for the table described by schema.

      The schema must have a table name configured via .hasTableName(). Column name mappings set via .hasColumnName() are applied automatically to all query methods. The returned builder is thenable — you can await it directly to execute the query and get TResult[].

      Type Parameters

      • TLocalSchema extends ObjectSchemaBuilder<any, any, any, any, any, any, any>

      Parameters

      • knex: Knex

        A configured Knex instance.

      • schema: TLocalSchema

        The ObjectSchemaBuilder describing the table.

      Returns SchemaQueryBuilder<TLocalSchema, QueryResultType<TLocalSchema>>

      A new SchemaQueryBuilder ready for chaining.

      import knex from 'knex';
      import { query, object, string, number } from '@cleverbrush/knex-schema';

      const UserSchema = object({ id: number(), name: string() }).hasTableName('users');
      const db = knex({ client: 'pg', connection: process.env.DB_URL });

      const users = await query(db, UserSchema).where(t => t.name, 'like', 'A%');
    • Create a typed SchemaQueryBuilder from an existing Knex query builder.

      Use this overload when you need to supply a pre-configured base query — for example one that already has a sub-query, CTE, or a schema scope applied.

      Type Parameters

      • TLocalSchema extends ObjectSchemaBuilder<any, any, any, any, any, any, any>

      Parameters

      • knex: Knex

        A configured Knex instance.

      • schema: TLocalSchema

        The ObjectSchemaBuilder describing the table.

      • baseQuery: QueryBuilder

        An existing Knex.QueryBuilder to use as the base.

      Returns SchemaQueryBuilder<TLocalSchema, QueryResultType<TLocalSchema>>

      A new SchemaQueryBuilder wrapping baseQuery.

      // Use a scoped base query (e.g. soft-delete filter applied globally)
      const base = db('users').where('deleted_at', null);
      const activeUsers = await query(db, UserSchema, base).where(t => t.age, '>', 18);