@cleverbrush/knex-schema 4.0.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,6 @@
1
+ import type { SchemaQueryBuilder } from '../SchemaQueryBuilder.js';
2
+ export declare function deleteImpl(builder: SchemaQueryBuilder<any, any>): Promise<number>;
3
+ export declare function withDeletedImpl(builder: SchemaQueryBuilder<any, any>): any;
4
+ export declare function onlyDeletedImpl(builder: SchemaQueryBuilder<any, any>): any;
5
+ export declare function hardDeleteImpl(builder: SchemaQueryBuilder<any, any>): Promise<number>;
6
+ export declare function restoreImpl(builder: SchemaQueryBuilder<any, any>): Promise<any[]>;
@@ -0,0 +1,57 @@
1
+ import type { InferType } from '@cleverbrush/schema';
2
+ import { EXTRA_TYPE_BRAND, METHOD_LITERAL_BRAND, ObjectSchemaBuilder } from '@cleverbrush/schema';
3
+ import type { Knex } from 'knex';
4
+ import { POLYMORPHIC_TYPE_BRAND } from '../extension.js';
5
+ import type { SchemaQueryBuilder } from '../SchemaQueryBuilder.js';
6
+ import type { ResolvedVariantConfig, ValidatedSpec } from '../types.js';
7
+ export type ScopesOf<S> = S extends {
8
+ readonly [METHOD_LITERAL_BRAND]?: infer N;
9
+ } ? Extract<N, string> : never;
10
+ export type ProjectionsOf<S> = S extends {
11
+ readonly [EXTRA_TYPE_BRAND]?: infer P;
12
+ } ? P extends Record<string, readonly string[]> ? P : Record<never, never> : Record<never, never>;
13
+ export type ProjectionKeysOf<S, K extends keyof ProjectionsOf<S> & string> = ProjectionsOf<S>[K] extends readonly (infer T extends string)[] ? T : string;
14
+ export type QueryResultType<TLocalSchema> = TLocalSchema extends {
15
+ readonly [POLYMORPHIC_TYPE_BRAND]?: infer U;
16
+ } ? NonNullable<U> : InferType<TLocalSchema>;
17
+ export declare function resolveColumn(builder: SchemaQueryBuilder<any, any>, ref: any, label?: string): string | Knex.Raw;
18
+ export declare function invalidateCache(builder: SchemaQueryBuilder<any, any>): void;
19
+ export declare function getSoftDelete(builder: SchemaQueryBuilder<any, any>): {
20
+ column: string;
21
+ } | null;
22
+ export declare function getDefaultScope(builder: SchemaQueryBuilder<any, any>): Function | null;
23
+ export declare function getTimestamps(builder: SchemaQueryBuilder<any, any>): {
24
+ createdAt: string;
25
+ updatedAt: string;
26
+ } | null;
27
+ declare const ALLOWED_OPS: Set<string>;
28
+ export { ALLOWED_OPS };
29
+ export declare function getVariantConfig(builder: SchemaQueryBuilder<any, any>): ResolvedVariantConfig | null;
30
+ export declare function applyVariantJoins(builder: SchemaQueryBuilder<any, any>, base: Knex.QueryBuilder, variantConfig: ResolvedVariantConfig): Knex.QueryBuilder;
31
+ export declare function registerSchemaQueryBuilder(ctor: new (...args: any[]) => any): void;
32
+ export declare function getSchemaQueryBuilderCtor(): new (...args: any[]) => any;
33
+ export declare function buildVariantRelationSelect(builder: SchemaQueryBuilder<any, any>, foreignSchema: ObjectSchemaBuilder<any, any, any, any, any, any, any>, relAlias: string, foreignTableName: string, customize?: (q: SchemaQueryBuilder<any, any>) => void): Knex.Raw[];
34
+ export declare function mapPolymorphicRow(builder: SchemaQueryBuilder<any, any>, row: Record<string, any>, variantConfig: ResolvedVariantConfig): Record<string, any>;
35
+ export declare function resolveSchema(_builder: SchemaQueryBuilder<any, any>, schema: any): ObjectSchemaBuilder<any, any, any, any, any, any, any>;
36
+ export declare function findPrimaryKeyColumn(_builder: SchemaQueryBuilder<any, any>, schema: ObjectSchemaBuilder<any, any, any, any, any, any, any>): string;
37
+ export declare function resolvePkColumns(builder: SchemaQueryBuilder<any, any>): {
38
+ propertyKeys: readonly string[];
39
+ columnNames: readonly string[];
40
+ };
41
+ export declare function getEffectiveBaseQuery(builder: SchemaQueryBuilder<any, any>): Knex.QueryBuilder;
42
+ export declare function buildJoinOne(builder: SchemaQueryBuilder<any, any>, resultQuery: Knex.QueryBuilder, spec: ValidatedSpec & {
43
+ type: 'one';
44
+ }, relationAlias: string): void;
45
+ export declare function buildJoinMany(builder: SchemaQueryBuilder<any, any>, resultQuery: Knex.QueryBuilder, spec: ValidatedSpec & {
46
+ type: 'many';
47
+ }, relationAlias: string, i: number): void;
48
+ export declare function buildQuery(builder: SchemaQueryBuilder<any, any>): Knex.QueryBuilder;
49
+ export declare function getQuery(builder: SchemaQueryBuilder<any, any>): Knex.QueryBuilder;
50
+ export declare function mapRow(builder: SchemaQueryBuilder<any, any>, row: Record<string, any>): Record<string, any>;
51
+ export declare function cleanAndMapRow(builder: SchemaQueryBuilder<any, any>, row: Record<string, any>): Record<string, any>;
52
+ export declare function mapObjectToColumns(builder: SchemaQueryBuilder<any, any>, obj: Record<string, any>): Record<string, any>;
53
+ export declare function mapRecordToColumns(builder: SchemaQueryBuilder<any, any>, record: Record<string, any>): Record<string, any>;
54
+ export declare function resolveColumnArg(builder: SchemaQueryBuilder<any, any>, col: any): string | Knex.Raw;
55
+ export declare function isColumnAccessor(builder: SchemaQueryBuilder<any, any>, fn: Function): boolean;
56
+ export declare function assertNotProjection(builder: SchemaQueryBuilder<any, any>, method: string): void;
57
+ export declare function assertNotExplicitSelect(builder: SchemaQueryBuilder<any, any>, method: string): void;
@@ -0,0 +1,26 @@
1
+ import type { InferType } from '@cleverbrush/schema';
2
+ import type { Knex } from 'knex';
3
+ import type { SchemaQueryBuilder } from '../SchemaQueryBuilder.js';
4
+ import type { ColumnRef, InsertType } from '../types.js';
5
+ export declare class OnConflictBuilder<TLocalSchema extends import('@cleverbrush/schema').ObjectSchemaBuilder<any, any, any, any, any, any, any>, TResult> {
6
+ #private;
7
+ constructor(knex: Knex, localSchema: TLocalSchema, _parent: SchemaQueryBuilder<TLocalSchema, TResult>, conflictColumns: string[]);
8
+ merge(data: InsertType<TLocalSchema>, updateData?: Partial<InferType<TLocalSchema>>): Promise<TResult>;
9
+ ignore(data: InsertType<TLocalSchema>): Promise<TResult | undefined>;
10
+ }
11
+ export declare function insertImpl(builder: SchemaQueryBuilder<any, any>, data: InsertType<any>): Promise<any>;
12
+ export declare function insertManyImpl(builder: SchemaQueryBuilder<any, any>, data: InsertType<any>[]): Promise<any[]>;
13
+ export declare function onConflictImpl(builder: SchemaQueryBuilder<any, any>, ...conflictColumns: ColumnRef<any>[]): OnConflictBuilder<any, any>;
14
+ export declare function upsertImpl(builder: SchemaQueryBuilder<any, any>, data: InsertType<any>, opts: {
15
+ conflictColumns: ColumnRef<any>[];
16
+ updateColumns?: ColumnRef<any>[];
17
+ }): Promise<any>;
18
+ export declare function bulkInsertImpl(builder: SchemaQueryBuilder<any, any>, rows: InsertType<any>[], opts?: {
19
+ chunkSize?: number;
20
+ onConflict?: 'ignore' | 'merge';
21
+ conflictColumns?: ColumnRef<any>[];
22
+ }): Promise<any[]>;
23
+ export declare function bulkUpsertImpl(builder: SchemaQueryBuilder<any, any>, rows: InsertType<any>[], opts: {
24
+ conflictColumns: ColumnRef<any>[];
25
+ chunkSize?: number;
26
+ }): Promise<any[]>;
@@ -0,0 +1,6 @@
1
+ import type { SchemaQueryBuilder } from '../SchemaQueryBuilder.js';
2
+ import type { JoinManySpec, JoinOneSpec } from '../types.js';
3
+ export declare function joinOneImpl(builder: SchemaQueryBuilder<any, any>, spec: JoinOneSpec<any, any, any, any>): any;
4
+ export declare function joinManyImpl(builder: SchemaQueryBuilder<any, any>, spec: JoinManySpec<any, any, any>): any;
5
+ export declare function includeImpl(builder: SchemaQueryBuilder<any, any>, relationName: string, customize?: (q: SchemaQueryBuilder<any, any>) => void): any;
6
+ export declare function includeVariantImpl(builder: SchemaQueryBuilder<any, any>, variantKey: string, relationName: string, customize?: (q: SchemaQueryBuilder<any, any>) => void): any;
@@ -0,0 +1,15 @@
1
+ import type { SchemaQueryBuilder } from '../SchemaQueryBuilder.js';
2
+ import type { ColumnRef, CursorPaginationResult, PaginationResult } from '../types.js';
3
+ export declare function limitImpl(builder: SchemaQueryBuilder<any, any>, n: number): any;
4
+ export declare function offsetImpl(builder: SchemaQueryBuilder<any, any>, n: number): any;
5
+ export declare function paginateImpl(builder: SchemaQueryBuilder<any, any>, opts: {
6
+ page: number;
7
+ pageSize: number;
8
+ }): Promise<PaginationResult<any>>;
9
+ export declare function paginateAfterImpl(builder: SchemaQueryBuilder<any, any>, opts: {
10
+ cursor?: any;
11
+ limit: number;
12
+ column?: ColumnRef<any>;
13
+ direction?: 'asc' | 'desc';
14
+ }): Promise<CursorPaginationResult<any>>;
15
+ export declare function executeImpl(builder: SchemaQueryBuilder<any, any>): Promise<any[]>;
@@ -0,0 +1,15 @@
1
+ import type { Knex } from 'knex';
2
+ import type { SchemaQueryBuilder } from '../SchemaQueryBuilder.js';
3
+ import type { ColumnRef } from '../types.js';
4
+ export declare function selectImpl(builder: SchemaQueryBuilder<any, any>, ...args: unknown[]): any;
5
+ export declare function distinctImpl(builder: SchemaQueryBuilder<any, any>, ...columns: (ColumnRef<any> | Knex.Raw)[]): any;
6
+ export declare function countImpl(builder: SchemaQueryBuilder<any, any>, column?: ColumnRef<any> | Knex.Raw): any;
7
+ export declare function countDistinctImpl(builder: SchemaQueryBuilder<any, any>, column?: ColumnRef<any> | Knex.Raw): any;
8
+ export declare function minImpl(builder: SchemaQueryBuilder<any, any>, column: ColumnRef<any> | Knex.Raw): any;
9
+ export declare function maxImpl(builder: SchemaQueryBuilder<any, any>, column: ColumnRef<any> | Knex.Raw): any;
10
+ export declare function sumImpl(builder: SchemaQueryBuilder<any, any>, column: ColumnRef<any> | Knex.Raw): any;
11
+ export declare function avgImpl(builder: SchemaQueryBuilder<any, any>, column: ColumnRef<any> | Knex.Raw): any;
12
+ export declare function selectRawImpl(builder: SchemaQueryBuilder<any, any>, sql: string, bindings?: any[]): any;
13
+ export declare function projectedImpl(builder: SchemaQueryBuilder<any, any>, name: string): any;
14
+ export declare function scopedImpl(builder: SchemaQueryBuilder<any, any>, name: string): any;
15
+ export declare function unscopedImpl(builder: SchemaQueryBuilder<any, any>): any;
@@ -0,0 +1,39 @@
1
+ import type { ObjectSchemaBuilder } from '@cleverbrush/schema';
2
+ import type { Knex } from 'knex';
3
+ import type { SchemaQueryBuilder } from '../SchemaQueryBuilder.js';
4
+ import type { ResolvedVariantConfig, ValidatedSpec, VariantWhereFilter } from '../types.js';
5
+ export interface QueryBuilderState {
6
+ knex: Knex;
7
+ baseQuery: Knex.QueryBuilder;
8
+ localSchema: ObjectSchemaBuilder<any, any, any, any, any, any, any>;
9
+ specs: ValidatedSpec[];
10
+ tableName: string;
11
+ /** SQL column names explicitly passed to `.select()`. null = SELECT *. */
12
+ explicitSelects: string[] | null;
13
+ /** Column-selection mode: null, 'select', 'aggregate', or 'projection'. */
14
+ selectionMode: 'select' | 'aggregate' | 'projection' | null;
15
+ /** Name of the projection currently applied, for error messages. */
16
+ appliedProjection: string | null;
17
+ /** When true, soft-delete filter is NOT applied. */
18
+ includeDeleted: boolean;
19
+ /** When true, only soft-deleted rows are returned. */
20
+ onlyDeleted: boolean;
21
+ /** When true, default scope is not applied. */
22
+ skipDefaultScope: boolean;
23
+ /** Resolved variant config, lazily populated. undefined = not yet read; null = not polymorphic. */
24
+ variantConfig: ResolvedVariantConfig | null | undefined;
25
+ /** When set, only these discriminator values are returned. null = all variants. */
26
+ enabledVariants: Set<string> | null;
27
+ /** Pending per-variant WHERE filters registered via .whereVariant(). */
28
+ variantWhereFilters: VariantWhereFilter[];
29
+ /** Variant-relation eager-load requests registered via .includeVariant(). */
30
+ variantRelationIncludes: Array<{
31
+ variantKey: string;
32
+ relationName: string;
33
+ customize?: (q: SchemaQueryBuilder<any, any>) => void;
34
+ }>;
35
+ /** Memoized result of buildQuery(). null = needs rebuild. */
36
+ cachedBuiltQuery: Knex.QueryBuilder | null;
37
+ }
38
+ export declare function getState(builder: SchemaQueryBuilder<any, any>): QueryBuilderState;
39
+ export declare function setState(builder: SchemaQueryBuilder<any, any>, state: QueryBuilderState): void;
@@ -0,0 +1,7 @@
1
+ import type { InferType } from '@cleverbrush/schema';
2
+ import type { SchemaQueryBuilder } from '../SchemaQueryBuilder.js';
3
+ export declare function updateImpl(builder: SchemaQueryBuilder<any, any>, data: Partial<InferType<any>>): Promise<any[]>;
4
+ export declare function bulkUpdateImpl(builder: SchemaQueryBuilder<any, any>, updates: ReadonlyArray<{
5
+ where: Partial<InferType<any>>;
6
+ set: Partial<InferType<any>>;
7
+ }>): Promise<number>;
@@ -0,0 +1,29 @@
1
+ import type { Knex } from 'knex';
2
+ import type { SchemaQueryBuilder } from '../SchemaQueryBuilder.js';
3
+ import type { ColumnRef } from '../types.js';
4
+ export declare function whereImpl(builder: SchemaQueryBuilder<any, any>, columnOrRaw: any, ...args: any[]): any;
5
+ export declare function andWhereImpl(builder: SchemaQueryBuilder<any, any>, columnOrRaw: any, ...args: any[]): any;
6
+ export declare function orWhereImpl(builder: SchemaQueryBuilder<any, any>, columnOrRaw: any, ...args: any[]): any;
7
+ export declare function whereNotImpl(builder: SchemaQueryBuilder<any, any>, columnOrRaw: any, ...args: any[]): any;
8
+ export declare function whereInImpl(builder: SchemaQueryBuilder<any, any>, column: ColumnRef<any>, values: readonly any[] | Knex.QueryBuilder): any;
9
+ export declare function whereNotInImpl(builder: SchemaQueryBuilder<any, any>, column: ColumnRef<any>, values: readonly any[] | Knex.QueryBuilder): any;
10
+ export declare function orWhereInImpl(builder: SchemaQueryBuilder<any, any>, column: ColumnRef<any>, values: readonly any[] | Knex.QueryBuilder): any;
11
+ export declare function orWhereNotInImpl(builder: SchemaQueryBuilder<any, any>, column: ColumnRef<any>, values: readonly any[] | Knex.QueryBuilder): any;
12
+ export declare function whereNullImpl(builder: SchemaQueryBuilder<any, any>, column: ColumnRef<any>): any;
13
+ export declare function whereNotNullImpl(builder: SchemaQueryBuilder<any, any>, column: ColumnRef<any>): any;
14
+ export declare function orWhereNullImpl(builder: SchemaQueryBuilder<any, any>, column: ColumnRef<any>): any;
15
+ export declare function orWhereNotNullImpl(builder: SchemaQueryBuilder<any, any>, column: ColumnRef<any>): any;
16
+ export declare function whereBetweenImpl(builder: SchemaQueryBuilder<any, any>, column: ColumnRef<any>, range: readonly [any, any]): any;
17
+ export declare function whereNotBetweenImpl(builder: SchemaQueryBuilder<any, any>, column: ColumnRef<any>, range: readonly [any, any]): any;
18
+ export declare function whereLikeImpl(builder: SchemaQueryBuilder<any, any>, column: ColumnRef<any>, value: string): any;
19
+ export declare function whereILikeImpl(builder: SchemaQueryBuilder<any, any>, column: ColumnRef<any>, value: string): any;
20
+ export declare function whereRawImpl(builder: SchemaQueryBuilder<any, any>, sql: string, ...bindings: any[]): any;
21
+ export declare function whereExistsImpl(builder: SchemaQueryBuilder<any, any>, callback: Knex.QueryCallback | Knex.QueryBuilder): any;
22
+ export declare function whereNotExistsImpl(builder: SchemaQueryBuilder<any, any>, callback: Knex.QueryCallback | Knex.QueryBuilder): any;
23
+ export declare function whereJsonPathImpl(builder: SchemaQueryBuilder<any, any>, column: ColumnRef<any>, path: string, operator?: string, value?: any): any;
24
+ export declare function orderByImpl(builder: SchemaQueryBuilder<any, any>, column: ColumnRef<any> | Knex.Raw, direction?: 'asc' | 'desc'): any;
25
+ export declare function orderByRawImpl(builder: SchemaQueryBuilder<any, any>, sql: string, ...bindings: any[]): any;
26
+ export declare function groupByImpl(builder: SchemaQueryBuilder<any, any>, ...columns: (ColumnRef<any> | Knex.Raw)[]): any;
27
+ export declare function groupByRawImpl(builder: SchemaQueryBuilder<any, any>, sql: string, ...bindings: any[]): any;
28
+ export declare function havingImpl(builder: SchemaQueryBuilder<any, any>, column: ColumnRef<any> | Knex.Raw, operator: string, value: any): any;
29
+ export declare function havingRawImpl(builder: SchemaQueryBuilder<any, any>, sql: string, ...bindings: any[]): any;
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "email": "andrew_zol@cleverbrush.com"
6
6
  },
7
7
  "dependencies": {
8
- "@cleverbrush/schema": "^4.0.0"
8
+ "@cleverbrush/schema": "^4.2.0"
9
9
  },
10
10
  "peerDependencies": {
11
11
  "knex": ">=3.1.0"
@@ -52,5 +52,5 @@
52
52
  },
53
53
  "type": "module",
54
54
  "types": "./dist/index.d.ts",
55
- "version": "4.0.0"
55
+ "version": "4.2.0"
56
56
  }