@murumets-ee/db 0.9.0 → 0.11.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.
- package/dist/index.d.mts +256 -132
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +6 -6
- package/dist/index.mjs.map +1 -1
- package/dist/test-utils.d.mts +64 -1
- package/dist/test-utils.d.mts.map +1 -1
- package/dist/test-utils.mjs +1 -1
- package/dist/test-utils.mjs.map +1 -1
- package/package.json +4 -1
package/dist/index.d.mts
CHANGED
|
@@ -3,6 +3,7 @@ import * as _$drizzle_orm0 from "drizzle-orm";
|
|
|
3
3
|
import { InferInsertModel, SQL } from "drizzle-orm";
|
|
4
4
|
import * as _$drizzle_orm_pg_core0 from "drizzle-orm/pg-core";
|
|
5
5
|
import { AnyPgColumn, PgColumnBuilderBase, PgTable, PgTableWithColumns, TableConfig } from "drizzle-orm/pg-core";
|
|
6
|
+
import { Logger } from "drizzle-orm/logger";
|
|
6
7
|
|
|
7
8
|
//#region src/client.d.ts
|
|
8
9
|
interface DbConfig {
|
|
@@ -12,12 +13,22 @@ interface DbConfig {
|
|
|
12
13
|
poolMax?: number;
|
|
13
14
|
}
|
|
14
15
|
/**
|
|
15
|
-
* Create a full read-write database client
|
|
16
|
+
* Create a full read-write database client.
|
|
16
17
|
*/
|
|
17
18
|
declare function createDbClient(config: DbConfig): PostgresJsDatabase;
|
|
18
19
|
/**
|
|
19
|
-
* Create a read-only database client
|
|
20
|
-
*
|
|
20
|
+
* Create a read-only database client.
|
|
21
|
+
*
|
|
22
|
+
* Sets `default_transaction_read_only = on` as a startup parameter on every
|
|
23
|
+
* connection in the pool, so any implicit transaction issued through this
|
|
24
|
+
* client is read-only at the PostgreSQL level. This is the defense-in-depth
|
|
25
|
+
* layer beneath the application's own routing of writes through `AdminClient`
|
|
26
|
+
* — even if a write somehow reaches a read-only client, Postgres rejects it.
|
|
27
|
+
*
|
|
28
|
+
* Implementation note: postgres-js's `connection` config object is sent in
|
|
29
|
+
* the PostgreSQL startup packet for every new pool connection, so the GUC is
|
|
30
|
+
* applied uniformly across the whole pool — not just whichever connection
|
|
31
|
+
* happened to run a one-off `SET` statement.
|
|
21
32
|
*/
|
|
22
33
|
declare function createReadOnlyClient(config: DbConfig): PostgresJsDatabase;
|
|
23
34
|
//#endregion
|
|
@@ -66,17 +77,6 @@ interface MigrationStatus {
|
|
|
66
77
|
* pay the loader cost.
|
|
67
78
|
*/
|
|
68
79
|
type MigrationLoader = (absolutePath: string) => Promise<MigrationModule>;
|
|
69
|
-
/**
|
|
70
|
-
* Discover all migration files under `projectRoot/migrations`.
|
|
71
|
-
*
|
|
72
|
-
* Layout:
|
|
73
|
-
* migrations/
|
|
74
|
-
* 20260411_180000_add_articles.ts ← user migrations (sort chronologically)
|
|
75
|
-
* 20260411_180000_add_articles.snapshot.json
|
|
76
|
-
* .toolkit/
|
|
77
|
-
* 0001_initial_schema.ts ← toolkit-owned migrations (sort numerically)
|
|
78
|
-
*/
|
|
79
|
-
declare function discoverMigrations(projectRoot: string): Promise<MigrationSource[]>;
|
|
80
80
|
/** Split discovered migrations into applied vs pending by consulting the tracking table. */
|
|
81
81
|
declare function getMigrationStatus(db: PostgresJsDatabase, projectRoot: string): Promise<MigrationStatus>;
|
|
82
82
|
/**
|
|
@@ -101,6 +101,28 @@ declare function runMigrations(db: PostgresJsDatabase, projectRoot: string, load
|
|
|
101
101
|
*/
|
|
102
102
|
declare function rollbackMigrations(db: PostgresJsDatabase, projectRoot: string, loader: MigrationLoader, count?: number): Promise<void>;
|
|
103
103
|
//#endregion
|
|
104
|
+
//#region src/query-counter.d.ts
|
|
105
|
+
/**
|
|
106
|
+
* Per-request DB query counter — opt-in, off by default.
|
|
107
|
+
*
|
|
108
|
+
* Wired into the Drizzle client when `LUMI_DB_QUERY_COUNTER=1`. The harness
|
|
109
|
+
* (apps/perf-harness) wraps each HTTP request in `runWithQueryStats` and emits
|
|
110
|
+
* the count as an `x-db-query-count` response header, so k6 scenarios can
|
|
111
|
+
* assert per-endpoint query budgets like:
|
|
112
|
+
*
|
|
113
|
+
* checks: { 'findById ≤ 2 queries': (r) => r.headers['X-Db-Query-Count'] <= '2' }
|
|
114
|
+
*
|
|
115
|
+
* No-op for any code path that does not enter `runWithQueryStats` — the ALS
|
|
116
|
+
* store is undefined and `logQuery` returns immediately.
|
|
117
|
+
*/
|
|
118
|
+
interface QueryStats {
|
|
119
|
+
count: number;
|
|
120
|
+
}
|
|
121
|
+
declare function getQueryStats(): QueryStats | undefined;
|
|
122
|
+
declare function runWithQueryStats<T>(fn: (stats: QueryStats) => Promise<T>): Promise<T>;
|
|
123
|
+
declare const queryCountingLogger: Logger;
|
|
124
|
+
declare function isQueryCounterEnabled(): boolean;
|
|
125
|
+
//#endregion
|
|
104
126
|
//#region src/schema-registry.d.ts
|
|
105
127
|
/**
|
|
106
128
|
* Schema registry for storing Drizzle schemas
|
|
@@ -129,10 +151,6 @@ declare class SchemaRegistryImpl implements SchemaRegistry {
|
|
|
129
151
|
* Entities will register their schemas here when they are defined
|
|
130
152
|
*/
|
|
131
153
|
declare const schemaRegistry: SchemaRegistryImpl;
|
|
132
|
-
/**
|
|
133
|
-
* Create a new isolated schema registry (useful for testing)
|
|
134
|
-
*/
|
|
135
|
-
declare function createSchemaRegistry(): SchemaRegistry;
|
|
136
154
|
//#endregion
|
|
137
155
|
//#region src/table/types.d.ts
|
|
138
156
|
/**
|
|
@@ -177,7 +195,7 @@ interface ColumnFactory<TType = unknown, TKind extends ColumnKind = ColumnKind,
|
|
|
177
195
|
* - `notNull: true` → `T`
|
|
178
196
|
* - `notNull: false` → `T | null`
|
|
179
197
|
*/
|
|
180
|
-
type ColumnValue<C> = C extends ColumnFactory<infer T, ColumnKind, infer N> ? N extends true ? T : T | null : never;
|
|
198
|
+
type ColumnValue<C> = C extends ColumnFactory<infer T, ColumnKind, infer N> ? (N extends true ? T : T | null) : never;
|
|
181
199
|
/**
|
|
182
200
|
* Map a columns record to its row shape (the result of a SELECT).
|
|
183
201
|
*/
|
|
@@ -334,113 +352,6 @@ interface TableDefinition<TCols extends Record<string, ColumnFactory>> {
|
|
|
334
352
|
indexes?: IndexDefinition<TCols>[];
|
|
335
353
|
}
|
|
336
354
|
//#endregion
|
|
337
|
-
//#region src/table/columns.d.ts
|
|
338
|
-
/**
|
|
339
|
-
* Type interface for the `column` builder namespace.
|
|
340
|
-
*
|
|
341
|
-
* Overloads discriminate on whether `default` is present, so
|
|
342
|
-
* `THasDefault` is inferred correctly:
|
|
343
|
-
*
|
|
344
|
-
* - `column.varchar({ length: 20, default: 'x' })` → `hasDefault = true`
|
|
345
|
-
* - `column.varchar({ length: 20 })` → `hasDefault = false`
|
|
346
|
-
*
|
|
347
|
-
* Object-literal methods don't support overloads in TypeScript, so we
|
|
348
|
-
* declare the overloaded signatures on an interface and cast the
|
|
349
|
-
* implementation object.
|
|
350
|
-
*/
|
|
351
|
-
interface ColumnBuilders {
|
|
352
|
-
uuid<TPrimaryKey extends boolean = false, TNotNull extends boolean = false, THasDefault extends boolean = false>(opts?: {
|
|
353
|
-
primaryKey?: TPrimaryKey;
|
|
354
|
-
notNull?: TNotNull;
|
|
355
|
-
defaultRandom?: THasDefault;
|
|
356
|
-
pgName?: string;
|
|
357
|
-
}): ColumnFactory<string, 'uuid', TPrimaryKey extends true ? true : TNotNull extends true ? true : false, TPrimaryKey extends true ? true : THasDefault extends true ? true : false>;
|
|
358
|
-
varchar<TNotNull extends boolean = false>(opts: {
|
|
359
|
-
length: number;
|
|
360
|
-
notNull?: TNotNull;
|
|
361
|
-
default: string;
|
|
362
|
-
pgName?: string;
|
|
363
|
-
}): ColumnFactory<string, 'varchar', TNotNull extends true ? true : false, true>;
|
|
364
|
-
varchar<TNotNull extends boolean = false>(opts: {
|
|
365
|
-
length: number;
|
|
366
|
-
notNull?: TNotNull;
|
|
367
|
-
pgName?: string;
|
|
368
|
-
}): ColumnFactory<string, 'varchar', TNotNull extends true ? true : false, false>;
|
|
369
|
-
text<TNotNull extends boolean = false>(opts: {
|
|
370
|
-
notNull?: TNotNull;
|
|
371
|
-
default: string;
|
|
372
|
-
pgName?: string;
|
|
373
|
-
}): ColumnFactory<string, 'text', TNotNull extends true ? true : false, true>;
|
|
374
|
-
text<TNotNull extends boolean = false>(opts?: {
|
|
375
|
-
notNull?: TNotNull;
|
|
376
|
-
pgName?: string;
|
|
377
|
-
}): ColumnFactory<string, 'text', TNotNull extends true ? true : false, false>;
|
|
378
|
-
integer<TNotNull extends boolean = false>(opts: {
|
|
379
|
-
notNull?: TNotNull;
|
|
380
|
-
default: number;
|
|
381
|
-
pgName?: string;
|
|
382
|
-
}): ColumnFactory<number, 'integer', TNotNull extends true ? true : false, true>;
|
|
383
|
-
integer<TNotNull extends boolean = false>(opts?: {
|
|
384
|
-
notNull?: TNotNull;
|
|
385
|
-
pgName?: string;
|
|
386
|
-
}): ColumnFactory<number, 'integer', TNotNull extends true ? true : false, false>;
|
|
387
|
-
bigint<TMode extends 'number' | 'bigint' = 'number', TNotNull extends boolean = false>(opts: {
|
|
388
|
-
mode?: TMode;
|
|
389
|
-
notNull?: TNotNull;
|
|
390
|
-
default: TMode extends 'bigint' ? bigint : number;
|
|
391
|
-
pgName?: string;
|
|
392
|
-
}): ColumnFactory<TMode extends 'bigint' ? bigint : number, 'bigint', TNotNull extends true ? true : false, true>;
|
|
393
|
-
bigint<TMode extends 'number' | 'bigint' = 'number', TNotNull extends boolean = false>(opts?: {
|
|
394
|
-
mode?: TMode;
|
|
395
|
-
notNull?: TNotNull;
|
|
396
|
-
pgName?: string;
|
|
397
|
-
}): ColumnFactory<TMode extends 'bigint' ? bigint : number, 'bigint', TNotNull extends true ? true : false, false>;
|
|
398
|
-
double<TNotNull extends boolean = false>(opts: {
|
|
399
|
-
notNull?: TNotNull;
|
|
400
|
-
default: number;
|
|
401
|
-
pgName?: string;
|
|
402
|
-
}): ColumnFactory<number, 'double', TNotNull extends true ? true : false, true>;
|
|
403
|
-
double<TNotNull extends boolean = false>(opts?: {
|
|
404
|
-
notNull?: TNotNull;
|
|
405
|
-
pgName?: string;
|
|
406
|
-
}): ColumnFactory<number, 'double', TNotNull extends true ? true : false, false>;
|
|
407
|
-
boolean<TNotNull extends boolean = false>(opts: {
|
|
408
|
-
notNull?: TNotNull;
|
|
409
|
-
default: boolean;
|
|
410
|
-
pgName?: string;
|
|
411
|
-
}): ColumnFactory<boolean, 'boolean', TNotNull extends true ? true : false, true>;
|
|
412
|
-
boolean<TNotNull extends boolean = false>(opts?: {
|
|
413
|
-
notNull?: TNotNull;
|
|
414
|
-
pgName?: string;
|
|
415
|
-
}): ColumnFactory<boolean, 'boolean', TNotNull extends true ? true : false, false>;
|
|
416
|
-
timestamp<TNotNull extends boolean = false, THasDefault extends boolean = false>(opts?: {
|
|
417
|
-
notNull?: TNotNull;
|
|
418
|
-
defaultNow?: THasDefault;
|
|
419
|
-
withTimezone?: boolean;
|
|
420
|
-
pgName?: string;
|
|
421
|
-
}): ColumnFactory<Date, 'timestamp', TNotNull extends true ? true : false, THasDefault extends true ? true : false>;
|
|
422
|
-
jsonb<T = unknown, TNotNull extends boolean = false>(opts: {
|
|
423
|
-
notNull?: TNotNull;
|
|
424
|
-
default: T;
|
|
425
|
-
pgName?: string;
|
|
426
|
-
}): ColumnFactory<T, 'jsonb', TNotNull extends true ? true : false, true>;
|
|
427
|
-
jsonb<T = unknown, TNotNull extends boolean = false>(opts?: {
|
|
428
|
-
notNull?: TNotNull;
|
|
429
|
-
pgName?: string;
|
|
430
|
-
}): ColumnFactory<T, 'jsonb', TNotNull extends true ? true : false, false>;
|
|
431
|
-
uuidArray<TNotNull extends boolean = false>(opts?: {
|
|
432
|
-
notNull?: TNotNull;
|
|
433
|
-
pgName?: string;
|
|
434
|
-
}): ColumnFactory<string[], 'uuidArray', TNotNull extends true ? true : false, false>;
|
|
435
|
-
}
|
|
436
|
-
/**
|
|
437
|
-
* Column builder namespace — overloaded interface applied via single
|
|
438
|
-
* assertion. Each builder's implementation returns `makeFactory(...)` with
|
|
439
|
-
* widened boolean params; the `ColumnBuilders` overloads narrow them for
|
|
440
|
-
* callers based on whether `default`/`primaryKey` etc. are present.
|
|
441
|
-
*/
|
|
442
|
-
declare const column: ColumnBuilders;
|
|
443
|
-
//#endregion
|
|
444
355
|
//#region src/table/client.d.ts
|
|
445
356
|
/**
|
|
446
357
|
* Default page size for `findMany` when no `limit` is supplied.
|
|
@@ -501,6 +412,41 @@ interface ClaimOptions<TCols extends Record<string, ColumnFactory>, TTable exten
|
|
|
501
412
|
/** Maximum number of rows to claim. Must be 1..MAX_LIMIT. */
|
|
502
413
|
limit: number;
|
|
503
414
|
}
|
|
415
|
+
/**
|
|
416
|
+
* Options for the `tryClaim()` atomic insert-or-replace-if operation.
|
|
417
|
+
*
|
|
418
|
+
* @see {@link TableClient.tryClaim}
|
|
419
|
+
*/
|
|
420
|
+
interface TryClaimOptions<TCols extends Record<string, ColumnFactory>, TTable extends PgTable = PgTable> {
|
|
421
|
+
/**
|
|
422
|
+
* Unique-constraint column(s) that should trigger the conflict path.
|
|
423
|
+
*
|
|
424
|
+
* Single string for a single-column unique constraint; array for a
|
|
425
|
+
* composite unique. Must reference a real column on this table.
|
|
426
|
+
*/
|
|
427
|
+
target: (keyof TCols & string) | (keyof TCols & string)[];
|
|
428
|
+
/**
|
|
429
|
+
* Predicate that decides whether an existing conflicting row may be
|
|
430
|
+
* **replaced**. Required and must be non-empty.
|
|
431
|
+
*
|
|
432
|
+
* - On INSERT (no conflict): always wins; predicate is irrelevant.
|
|
433
|
+
* - On CONFLICT + predicate matches: row is replaced; result is
|
|
434
|
+
* `{ acquired: true, row }`.
|
|
435
|
+
* - On CONFLICT + predicate does NOT match: existing row is preserved;
|
|
436
|
+
* result is `{ acquired: false, row }` (where `row` is the surviving
|
|
437
|
+
* existing row).
|
|
438
|
+
*
|
|
439
|
+
* Use `$or` to express composite re-entrancy rules — e.g.
|
|
440
|
+
* `{ $or: [{ expiresAt: { lt: now } }, { lockedBy: callerId }] }` for
|
|
441
|
+
* "replace if expired, or if I already hold it".
|
|
442
|
+
*/
|
|
443
|
+
replaceWhen: WhereClause<TCols>;
|
|
444
|
+
/**
|
|
445
|
+
* Patch applied on the replace path. Defaults to the full `values`
|
|
446
|
+
* payload (last-write-wins on the columns being inserted).
|
|
447
|
+
*/
|
|
448
|
+
set?: Partial<InferInsertModel<TTable>>;
|
|
449
|
+
}
|
|
504
450
|
/**
|
|
505
451
|
* Specification for a single aggregate function.
|
|
506
452
|
*/
|
|
@@ -589,6 +535,32 @@ declare class TableClient<TCols extends Record<string, ColumnFactory>, TTable ex
|
|
|
589
535
|
* `.returning()`.
|
|
590
536
|
*/
|
|
591
537
|
private get _selectTable();
|
|
538
|
+
/**
|
|
539
|
+
* Look up a Drizzle column by its JS property name, throwing
|
|
540
|
+
* `TableClientError` with the supplied `context` if no such column exists.
|
|
541
|
+
* Wraps `getTableColumns(this.table)` — uses Drizzle's typed column map
|
|
542
|
+
* instead of an indexed cast on the table object.
|
|
543
|
+
*/
|
|
544
|
+
private getColumnOrThrow;
|
|
545
|
+
/**
|
|
546
|
+
* Build an array of ORDER BY SQL expressions from an `OrderBySpec[]`.
|
|
547
|
+
* Used by `findMany`, `distinct`, `claim`, and `aggregate`.
|
|
548
|
+
*/
|
|
549
|
+
private buildOrderBy;
|
|
550
|
+
/**
|
|
551
|
+
* Throw `TableClientError` if the where clause has no top-level keys.
|
|
552
|
+
* Used by every method that mutates or reads-by-key (`update`, `delete`,
|
|
553
|
+
* `findOne`, `exists`, `claim`, ...) — none of them have a sane
|
|
554
|
+
* "everything" path, so empty wheres are always a caller mistake.
|
|
555
|
+
*/
|
|
556
|
+
private requireNonEmptyWhere;
|
|
557
|
+
/**
|
|
558
|
+
* Verify every key in `patch` names a real column on this table. Used by
|
|
559
|
+
* `update`, `updateMany`, `upsert`, and `claim` so a typo'd or hostile
|
|
560
|
+
* patch key surfaces a clear error instead of being silently dropped by
|
|
561
|
+
* Drizzle's set logic.
|
|
562
|
+
*/
|
|
563
|
+
private validateColumnKeys;
|
|
592
564
|
/**
|
|
593
565
|
* Find a single row matching the given where clause, or `null` if no row
|
|
594
566
|
* matches. Throws if the where is empty.
|
|
@@ -696,6 +668,56 @@ declare class TableClient<TCols extends Record<string, ColumnFactory>, TTable ex
|
|
|
696
668
|
set?: Partial<InferInsertModel<TTable>>; /** Conditional WHERE on the conflict update path. Empty objects are ignored. */
|
|
697
669
|
setWhere?: WhereClause<TCols>;
|
|
698
670
|
}): Promise<Row<TCols>>;
|
|
671
|
+
/**
|
|
672
|
+
* Atomically claim a row by either inserting it or replacing an existing
|
|
673
|
+
* conflicting row that satisfies `replaceWhen`. The single SQL statement
|
|
674
|
+
* makes this race-free — concurrent callers cannot both observe an empty
|
|
675
|
+
* slot and both INSERT.
|
|
676
|
+
*
|
|
677
|
+
* Distinct from {@link upsert}:
|
|
678
|
+
* - `upsert` always wins on conflict (or hits its `setWhere` block and
|
|
679
|
+
* silently falls back to the existing row). It returns a single
|
|
680
|
+
* `Row<TCols>` and the caller cannot tell which path fired.
|
|
681
|
+
* - `tryClaim` returns a discriminated union — the caller knows whether
|
|
682
|
+
* they took the slot or someone else still holds it.
|
|
683
|
+
*
|
|
684
|
+
* Use case: leasing/locking primitives where the caller must distinguish
|
|
685
|
+
* "I now hold this lock" from "someone else holds it, here is who".
|
|
686
|
+
*
|
|
687
|
+
* @example Acquire a lock, replacing only if expired
|
|
688
|
+
* ```ts
|
|
689
|
+
* const result = await locks.tryClaim(
|
|
690
|
+
* { entityId, lockedBy: me, expiresAt: in5Min },
|
|
691
|
+
* {
|
|
692
|
+
* target: 'entityId',
|
|
693
|
+
* replaceWhen: { expiresAt: { lt: now } },
|
|
694
|
+
* },
|
|
695
|
+
* )
|
|
696
|
+
* if (result.acquired) {
|
|
697
|
+
* // I have the lock
|
|
698
|
+
* } else {
|
|
699
|
+
* // result.row.lockedBy holds it (and lock is fresh)
|
|
700
|
+
* }
|
|
701
|
+
* ```
|
|
702
|
+
*
|
|
703
|
+
* @example Re-entrant lock (claim if expired, or if I already hold it)
|
|
704
|
+
* ```ts
|
|
705
|
+
* await locks.tryClaim(
|
|
706
|
+
* { entityId, lockedBy: me, expiresAt: in5Min },
|
|
707
|
+
* {
|
|
708
|
+
* target: 'entityId',
|
|
709
|
+
* replaceWhen: { $or: [{ expiresAt: { lt: now } }, { lockedBy: me }] },
|
|
710
|
+
* },
|
|
711
|
+
* )
|
|
712
|
+
* ```
|
|
713
|
+
*/
|
|
714
|
+
tryClaim(values: InferInsertModel<TTable>, opts: TryClaimOptions<TCols, TTable>): Promise<{
|
|
715
|
+
acquired: true;
|
|
716
|
+
row: Row<TCols>;
|
|
717
|
+
} | {
|
|
718
|
+
acquired: false;
|
|
719
|
+
row: Row<TCols>;
|
|
720
|
+
}>;
|
|
699
721
|
/**
|
|
700
722
|
* Insert many rows in a single statement. Capped at {@link MAX_BATCH}.
|
|
701
723
|
* Returns all inserted rows in input order.
|
|
@@ -842,6 +864,113 @@ declare class TableClient<TCols extends Record<string, ColumnFactory>, TTable ex
|
|
|
842
864
|
private validateLimit;
|
|
843
865
|
}
|
|
844
866
|
//#endregion
|
|
867
|
+
//#region src/table/columns.d.ts
|
|
868
|
+
/**
|
|
869
|
+
* Type interface for the `column` builder namespace.
|
|
870
|
+
*
|
|
871
|
+
* Overloads discriminate on whether `default` is present, so
|
|
872
|
+
* `THasDefault` is inferred correctly:
|
|
873
|
+
*
|
|
874
|
+
* - `column.varchar({ length: 20, default: 'x' })` → `hasDefault = true`
|
|
875
|
+
* - `column.varchar({ length: 20 })` → `hasDefault = false`
|
|
876
|
+
*
|
|
877
|
+
* Object-literal methods don't support overloads in TypeScript, so we
|
|
878
|
+
* declare the overloaded signatures on an interface and cast the
|
|
879
|
+
* implementation object.
|
|
880
|
+
*/
|
|
881
|
+
interface ColumnBuilders {
|
|
882
|
+
uuid<TPrimaryKey extends boolean = false, TNotNull extends boolean = false, THasDefault extends boolean = false>(opts?: {
|
|
883
|
+
primaryKey?: TPrimaryKey;
|
|
884
|
+
notNull?: TNotNull;
|
|
885
|
+
defaultRandom?: THasDefault;
|
|
886
|
+
pgName?: string;
|
|
887
|
+
}): ColumnFactory<string, 'uuid', TPrimaryKey extends true ? true : TNotNull extends true ? true : false, TPrimaryKey extends true ? true : THasDefault extends true ? true : false>;
|
|
888
|
+
varchar<TNotNull extends boolean = false>(opts: {
|
|
889
|
+
length: number;
|
|
890
|
+
notNull?: TNotNull;
|
|
891
|
+
default: string;
|
|
892
|
+
pgName?: string;
|
|
893
|
+
}): ColumnFactory<string, 'varchar', TNotNull extends true ? true : false, true>;
|
|
894
|
+
varchar<TNotNull extends boolean = false>(opts: {
|
|
895
|
+
length: number;
|
|
896
|
+
notNull?: TNotNull;
|
|
897
|
+
pgName?: string;
|
|
898
|
+
}): ColumnFactory<string, 'varchar', TNotNull extends true ? true : false, false>;
|
|
899
|
+
text<TNotNull extends boolean = false>(opts: {
|
|
900
|
+
notNull?: TNotNull;
|
|
901
|
+
default: string;
|
|
902
|
+
pgName?: string;
|
|
903
|
+
}): ColumnFactory<string, 'text', TNotNull extends true ? true : false, true>;
|
|
904
|
+
text<TNotNull extends boolean = false>(opts?: {
|
|
905
|
+
notNull?: TNotNull;
|
|
906
|
+
pgName?: string;
|
|
907
|
+
}): ColumnFactory<string, 'text', TNotNull extends true ? true : false, false>;
|
|
908
|
+
integer<TNotNull extends boolean = false>(opts: {
|
|
909
|
+
notNull?: TNotNull;
|
|
910
|
+
default: number;
|
|
911
|
+
pgName?: string;
|
|
912
|
+
}): ColumnFactory<number, 'integer', TNotNull extends true ? true : false, true>;
|
|
913
|
+
integer<TNotNull extends boolean = false>(opts?: {
|
|
914
|
+
notNull?: TNotNull;
|
|
915
|
+
pgName?: string;
|
|
916
|
+
}): ColumnFactory<number, 'integer', TNotNull extends true ? true : false, false>;
|
|
917
|
+
bigint<TMode extends 'number' | 'bigint' = 'number', TNotNull extends boolean = false>(opts: {
|
|
918
|
+
mode?: TMode;
|
|
919
|
+
notNull?: TNotNull;
|
|
920
|
+
default: TMode extends 'bigint' ? bigint : number;
|
|
921
|
+
pgName?: string;
|
|
922
|
+
}): ColumnFactory<TMode extends 'bigint' ? bigint : number, 'bigint', TNotNull extends true ? true : false, true>;
|
|
923
|
+
bigint<TMode extends 'number' | 'bigint' = 'number', TNotNull extends boolean = false>(opts?: {
|
|
924
|
+
mode?: TMode;
|
|
925
|
+
notNull?: TNotNull;
|
|
926
|
+
pgName?: string;
|
|
927
|
+
}): ColumnFactory<TMode extends 'bigint' ? bigint : number, 'bigint', TNotNull extends true ? true : false, false>;
|
|
928
|
+
double<TNotNull extends boolean = false>(opts: {
|
|
929
|
+
notNull?: TNotNull;
|
|
930
|
+
default: number;
|
|
931
|
+
pgName?: string;
|
|
932
|
+
}): ColumnFactory<number, 'double', TNotNull extends true ? true : false, true>;
|
|
933
|
+
double<TNotNull extends boolean = false>(opts?: {
|
|
934
|
+
notNull?: TNotNull;
|
|
935
|
+
pgName?: string;
|
|
936
|
+
}): ColumnFactory<number, 'double', TNotNull extends true ? true : false, false>;
|
|
937
|
+
boolean<TNotNull extends boolean = false>(opts: {
|
|
938
|
+
notNull?: TNotNull;
|
|
939
|
+
default: boolean;
|
|
940
|
+
pgName?: string;
|
|
941
|
+
}): ColumnFactory<boolean, 'boolean', TNotNull extends true ? true : false, true>;
|
|
942
|
+
boolean<TNotNull extends boolean = false>(opts?: {
|
|
943
|
+
notNull?: TNotNull;
|
|
944
|
+
pgName?: string;
|
|
945
|
+
}): ColumnFactory<boolean, 'boolean', TNotNull extends true ? true : false, false>;
|
|
946
|
+
timestamp<TNotNull extends boolean = false, THasDefault extends boolean = false>(opts?: {
|
|
947
|
+
notNull?: TNotNull;
|
|
948
|
+
defaultNow?: THasDefault;
|
|
949
|
+
withTimezone?: boolean;
|
|
950
|
+
pgName?: string;
|
|
951
|
+
}): ColumnFactory<Date, 'timestamp', TNotNull extends true ? true : false, THasDefault extends true ? true : false>;
|
|
952
|
+
jsonb<T = unknown, TNotNull extends boolean = false>(opts: {
|
|
953
|
+
notNull?: TNotNull;
|
|
954
|
+
default: T;
|
|
955
|
+
pgName?: string;
|
|
956
|
+
}): ColumnFactory<T, 'jsonb', TNotNull extends true ? true : false, true>;
|
|
957
|
+
jsonb<T = unknown, TNotNull extends boolean = false>(opts?: {
|
|
958
|
+
notNull?: TNotNull;
|
|
959
|
+
pgName?: string;
|
|
960
|
+
}): ColumnFactory<T, 'jsonb', TNotNull extends true ? true : false, false>;
|
|
961
|
+
uuidArray<TNotNull extends boolean = false>(opts?: {
|
|
962
|
+
notNull?: TNotNull;
|
|
963
|
+
pgName?: string;
|
|
964
|
+
}): ColumnFactory<string[], 'uuidArray', TNotNull extends true ? true : false, false>;
|
|
965
|
+
}
|
|
966
|
+
/**
|
|
967
|
+
* Column builder namespace — overloaded interface applied via single
|
|
968
|
+
* assertion. Each builder's implementation returns `makeFactory(...)` with
|
|
969
|
+
* widened boolean params; the `ColumnBuilders` overloads narrow them for
|
|
970
|
+
* callers based on whether `default`/`primaryKey` etc. are present.
|
|
971
|
+
*/
|
|
972
|
+
declare const column: ColumnBuilders;
|
|
973
|
+
//#endregion
|
|
845
974
|
//#region src/table/define.d.ts
|
|
846
975
|
/**
|
|
847
976
|
* The result of `defineTable()`.
|
|
@@ -996,11 +1125,6 @@ declare class TableRegistryImpl {
|
|
|
996
1125
|
* consistent view of all defined tables across packages.
|
|
997
1126
|
*/
|
|
998
1127
|
declare const tableRegistry: TableRegistryImpl;
|
|
999
|
-
/**
|
|
1000
|
-
* Create an isolated registry — useful for unit tests that want to
|
|
1001
|
-
* verify registration behaviour without polluting the global registry.
|
|
1002
|
-
*/
|
|
1003
|
-
declare function createTableRegistry(): TableRegistryImpl;
|
|
1004
1128
|
//#endregion
|
|
1005
1129
|
//#region src/table/where-builder.d.ts
|
|
1006
1130
|
/**
|
|
@@ -1022,5 +1146,5 @@ declare class WhereBuilderError extends Error {
|
|
|
1022
1146
|
*/
|
|
1023
1147
|
declare function isNonEmptyWhere(clause: unknown): boolean;
|
|
1024
1148
|
//#endregion
|
|
1025
|
-
export { type AnyPgColumn, type ClaimOptions, type ColumnFactory, type ColumnKind, type ColumnOperators, type ColumnValue, DEFAULT_LIMIT, type DbConfig, type DefinedTable, type FindManyOptions, type IndexDefinition, type InsertRow, MAX_BATCH, MAX_LIMIT, type MigrateArgs, type MigrationLoader, type MigrationModule, type MigrationSource, type MigrationStatus, type OrderBySpec, type Row, type SchemaRegistry, TableClient, TableClientError, type TableDefinition, type UniqueDefinition, WhereBuilderError, type WhereClause, column, createDbClient, createReadOnlyClient,
|
|
1149
|
+
export { type AnyPgColumn, type ClaimOptions, type ColumnFactory, type ColumnKind, type ColumnOperators, type ColumnValue, DEFAULT_LIMIT, type DbConfig, type DefinedTable, type FindManyOptions, type IndexDefinition, type InsertRow, MAX_BATCH, MAX_LIMIT, type MigrateArgs, type MigrationLoader, type MigrationModule, type MigrationSource, type MigrationStatus, type OrderBySpec, type QueryStats, type Row, type SchemaRegistry, TableClient, TableClientError, type TableDefinition, type UniqueDefinition, WhereBuilderError, type WhereClause, column, createDbClient, createReadOnlyClient, defineTable, getMigrationStatus, getQueryStats, isNonEmptyWhere, isQueryCounterEnabled, queryCountingLogger, rollbackMigrations, runMigrations, runWithQueryStats, schemaRegistry, tableRegistry };
|
|
1026
1150
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/client.ts","../src/migrate.ts","../src/schema-registry.ts","../src/table/types.ts","../src/table/
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/client.ts","../src/migrate.ts","../src/query-counter.ts","../src/schema-registry.ts","../src/table/types.ts","../src/table/client.ts","../src/table/columns.ts","../src/table/define.ts","../src/table/registry.ts","../src/table/where-builder.ts"],"mappings":"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"}
|