@typesql/drizzle 0.2.8 → 0.3.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/CHANGELOG.md +22 -0
- package/README.md +2 -4
- package/dist/casing.d.ts +0 -7
- package/dist/casing.d.ts.map +1 -1
- package/dist/client.d.ts +0 -10
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +0 -12
- package/dist/client.js.map +1 -1
- package/dist/from-drizzle.d.ts +1 -20
- package/dist/from-drizzle.d.ts.map +1 -1
- package/dist/index.d.ts +12 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -8
- package/dist/index.js.map +1 -1
- package/dist/pg-type.d.ts +0 -5
- package/dist/pg-type.d.ts.map +1 -1
- package/dist/pg-type.js +0 -5
- package/dist/pg-type.js.map +1 -1
- package/package.json +5 -8
- package/src/casing.ts +0 -7
- package/src/client.ts +0 -17
- package/src/from-drizzle.ts +1 -20
- package/src/index.ts +22 -13
- package/src/pg-type.ts +0 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# @typesql/drizzle
|
|
2
2
|
|
|
3
|
+
## 0.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Breaking: TypeSQL is split into a dialect-neutral core and a PostgreSQL dialect. `@typesql/core` keeps what dialects share (`createSql`, queries, fragments, executors, row keys, transactions, migrations, the schema markers `Col`, `Nullable`, `Generated`, `View`, … and the type cache) and adds a dialect contract. PostgreSQL moves to `@typesql/core/postgres`: create a `sql` with `createSql<DB>(postgres, executor?)`, import `Json`, `PgCatalog`, `migrations()`, type maps and the function catalog from `@typesql/core/postgres` (which also re-exports the schema markers), and the engine types from `@typesql/core/postgres/engine` (was `@typesql/core/engine`). The Kysely, Drizzle and Prisma packages take the dialect the same way and read the schema from the client's type: `createSql(postgres, db)` (`createSql<DB>(postgres, db)` still picks a schema explicitly). `typesql introspect` and the Prisma generator import the column helpers from `@typesql/core/postgres` by default.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies:
|
|
12
|
+
- @typesql/core@0.8.0
|
|
13
|
+
|
|
14
|
+
## 0.2.9
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Validate packages against PostgreSQL behavior and built outputs instead of hand-written test suites.
|
|
19
|
+
|
|
20
|
+
- Reorganize core internals and remove source comments and inline API documentation without changing SQL behavior.
|
|
21
|
+
|
|
22
|
+
- Updated dependencies:
|
|
23
|
+
- @typesql/core@0.7.6
|
|
24
|
+
|
|
3
25
|
## 0.2.8
|
|
4
26
|
|
|
5
27
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -13,7 +13,6 @@ Requires `drizzle-orm` 0.45 or later, on node-postgres or postgres.js.
|
|
|
13
13
|
## Usage
|
|
14
14
|
|
|
15
15
|
```ts
|
|
16
|
-
// schema.ts: your Drizzle schema
|
|
17
16
|
import { integer, pgTable, serial, text } from "drizzle-orm/pg-core";
|
|
18
17
|
|
|
19
18
|
export const users = pgTable("users", {
|
|
@@ -30,14 +29,14 @@ export const posts = pgTable("posts", {
|
|
|
30
29
|
```
|
|
31
30
|
|
|
32
31
|
```ts
|
|
33
|
-
// db.ts
|
|
34
32
|
import { drizzle } from "drizzle-orm/node-postgres";
|
|
35
33
|
import { Pool } from "pg";
|
|
36
34
|
import { createSql } from "@typesql/drizzle";
|
|
35
|
+
import { postgres } from "@typesql/core/postgres";
|
|
37
36
|
import * as schema from "./schema";
|
|
38
37
|
|
|
39
38
|
const db = drizzle(new Pool(), { schema });
|
|
40
|
-
const sql = createSql
|
|
39
|
+
const sql = createSql(postgres, db);
|
|
41
40
|
|
|
42
41
|
const rows = await sql(
|
|
43
42
|
`SELECT u.email, u.display_name, p.title
|
|
@@ -45,7 +44,6 @@ const rows = await sql(
|
|
|
45
44
|
WHERE u.id = $1`,
|
|
46
45
|
1,
|
|
47
46
|
).execute();
|
|
48
|
-
// { email: string; display_name: string | null; title: string }[]
|
|
49
47
|
```
|
|
50
48
|
|
|
51
49
|
Good to know:
|
package/dist/casing.d.ts
CHANGED
|
@@ -2,13 +2,8 @@ type Lower = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "
|
|
|
2
2
|
type Upper = Uppercase<Lower>;
|
|
3
3
|
type Digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";
|
|
4
4
|
type Cls<C extends string> = C extends Lower ? "l" : C extends Digit ? "d" : C extends Upper ? "u" : "o";
|
|
5
|
-
/** A new word starts at `C` (class `K`) after a char of class `P`, `R` being the rest of the input. */
|
|
6
5
|
type Starts<P, K, R extends string> = K extends "u" ? P extends "l" | "d" ? true : P extends "u" ? R extends `${Lower}${string}` ? true : false : false : K extends "d" ? P extends "u" ? true : false : false;
|
|
7
6
|
type Push<A extends string[], W extends string> = W extends "" ? A : [...A, W];
|
|
8
|
-
/**
|
|
9
|
-
* Words of an identifier, as Drizzle's `casing` splits them
|
|
10
|
-
* (`/[\da-z]+|[A-Z]+(?![a-z])|[A-Z][\da-z]+/g`): `"userID2fa"` → `["user", "ID", "2fa"]`.
|
|
11
|
-
*/
|
|
12
7
|
export type Words<S extends string, W extends string = "", Acc extends string[] = [], P = "o"> = S extends `${infer C}${infer R}` ? Cls<C> extends "o" ? Words<R, "", Push<Acc, W>, "o"> : Starts<P, Cls<C>, R> extends true ? Words<R, C, Push<Acc, W>, Cls<C>> : Words<R, `${W}${C}`, Acc, Cls<C>> : Push<Acc, W>;
|
|
13
8
|
type Snake<Ws extends string[], Acc extends string = ""> = Ws extends [
|
|
14
9
|
infer W extends string,
|
|
@@ -18,9 +13,7 @@ type Camel<Ws extends string[], Acc extends string = ""> = Ws extends [
|
|
|
18
13
|
infer W extends string,
|
|
19
14
|
...infer R extends string[]
|
|
20
15
|
] ? Camel<R, Acc extends "" ? Lowercase<W> : `${Acc}${Capitalize<W>}`> : Acc;
|
|
21
|
-
/** Drizzle's `toSnakeCase`: `"displayName"` → `"display_name"`. */
|
|
22
16
|
export type ToSnakeCase<S extends string> = Snake<Words<S>>;
|
|
23
|
-
/** Drizzle's `toCamelCase`: `"display_name"` → `"displayName"`. */
|
|
24
17
|
export type ToCamelCase<S extends string> = Camel<Words<S>>;
|
|
25
18
|
export {};
|
|
26
19
|
//# sourceMappingURL=casing.d.ts.map
|
package/dist/casing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"casing.d.ts","sourceRoot":"","sources":["../src/casing.ts"],"names":[],"mappings":"AAAA,KAAK,KAAK,GACP,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,CAAC;AACP,KAAK,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AAC9B,KAAK,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAEvE,KAAK,GAAG,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,KAAK,GACzC,GAAG,GACH,CAAC,SAAS,KAAK,GACd,GAAG,GACH,CAAC,SAAS,KAAK,GACd,GAAG,GACH,GAAG,CAAC;AAET,
|
|
1
|
+
{"version":3,"file":"casing.d.ts","sourceRoot":"","sources":["../src/casing.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,21 +1,11 @@
|
|
|
1
1
|
import type { Executor } from "@typesql/core";
|
|
2
2
|
import type { SqlDriver } from "@typesql/core/adapter";
|
|
3
|
-
/**
|
|
4
|
-
* What the adapter uses from a Drizzle database (`drizzle(client)` from `drizzle-orm/node-postgres`,
|
|
5
|
-
* `drizzle-orm/postgres-js`, ...) or a transaction from `db.transaction(fn)`.
|
|
6
|
-
*/
|
|
7
3
|
export interface DrizzleDatabase {
|
|
8
4
|
readonly _: {
|
|
9
5
|
readonly session: object;
|
|
10
6
|
};
|
|
11
7
|
transaction<T>(fn: (tx: DrizzleDatabase) => Promise<T>): Promise<T>;
|
|
12
8
|
}
|
|
13
|
-
/**
|
|
14
|
-
* An `Executor` for core's `q.execute()`: runs queries on the driver client under `db`, so rows
|
|
15
|
-
* come back as the driver parses them (Drizzle's column mappers are not involved), and resolves to
|
|
16
|
-
* `{ rows, rowCount }` so `q.executeCount()` works.
|
|
17
|
-
*/
|
|
18
9
|
export declare function executor(db: DrizzleDatabase): Executor;
|
|
19
|
-
/** How `createSql(db)` runs queries and transactions. */
|
|
20
10
|
export declare const driver: SqlDriver<DrizzleDatabase>;
|
|
21
11
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,CAAC,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACpE;AAmBD,wBAAgB,QAAQ,CAAC,EAAE,EAAE,eAAe,GAAG,QAAQ,CAgBtD;AAUD,eAAO,MAAM,MAAM,EAAE,SAAS,CAAC,eAAe,CAA6B,CAAC"}
|
package/dist/client.js
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The driver client under `db`: the `Pool`, `Client` or postgres.js `sql` given to `drizzle()`,
|
|
3
|
-
* or, inside `db.transaction(fn)`, the connection the transaction runs on. Drizzle keeps it as
|
|
4
|
-
* `session.client`.
|
|
5
|
-
*/
|
|
6
1
|
function clientOf(db) {
|
|
7
2
|
const client = db._.session.client;
|
|
8
3
|
if (client &&
|
|
@@ -10,11 +5,6 @@ function clientOf(db) {
|
|
|
10
5
|
return client;
|
|
11
6
|
throw new Error("typesql: createSql(db) needs a Drizzle database on node-postgres or postgres.js (its session client has no query or unsafe method)");
|
|
12
7
|
}
|
|
13
|
-
/**
|
|
14
|
-
* An `Executor` for core's `q.execute()`: runs queries on the driver client under `db`, so rows
|
|
15
|
-
* come back as the driver parses them (Drizzle's column mappers are not involved), and resolves to
|
|
16
|
-
* `{ rows, rowCount }` so `q.executeCount()` works.
|
|
17
|
-
*/
|
|
18
8
|
export function executor(db) {
|
|
19
9
|
return async (text, values) => {
|
|
20
10
|
const client = clientOf(db);
|
|
@@ -26,10 +16,8 @@ export function executor(db) {
|
|
|
26
16
|
return { rows: result.rows, rowCount: result.rowCount ?? null };
|
|
27
17
|
};
|
|
28
18
|
}
|
|
29
|
-
/** Run `fn` inside `db.transaction(fn)`; Drizzle nests a transaction inside one with a savepoint. */
|
|
30
19
|
function transaction(db, _depth, fn) {
|
|
31
20
|
return db.transaction(fn);
|
|
32
21
|
}
|
|
33
|
-
/** How `createSql(db)` runs queries and transactions. */
|
|
34
22
|
export const driver = { executor, transaction };
|
|
35
23
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAaA,SAAS,QAAQ,CAAC,EAAmB;IACpC,MAAM,MAAM,GAAI,EAAE,CAAC,CAAC,CAAC,OAA8C,CAAC,MAAM,CAAC;IAC3E,IACC,MAAM;QACN,CAAC,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,UAAU,CAAC;QAE3E,OAAO,MAAM,CAAC;IACf,MAAM,IAAI,KAAK,CACd,oIAAoI,CACpI,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAmB;IAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,CAClC,IAAI,EACJ,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAClB,CAAmD,CAAC;YACrD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;QACrE,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,KAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAG5D,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;IACjE,CAAC,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CACnB,EAAmB,EACnB,MAAc,EACd,EAAuC;IAEvC,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAA+B,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC"}
|
package/dist/from-drizzle.d.ts
CHANGED
|
@@ -1,15 +1,10 @@
|
|
|
1
|
-
import type { Col, Generated, Nullable, NullableGenerated } from "@typesql/core";
|
|
1
|
+
import type { Col, Generated, Nullable, NullableGenerated } from "@typesql/core/postgres";
|
|
2
2
|
import type { ToCamelCase, ToSnakeCase } from "./casing.js";
|
|
3
|
-
/** Settings of your Drizzle setup that the column types do not record. */
|
|
4
3
|
export interface FromDrizzleOptions {
|
|
5
|
-
/** The `casing` passed to `drizzle()`: applied to column names, as Drizzle does at runtime. */
|
|
6
4
|
readonly casing?: "snake_case" | "camelCase" | undefined;
|
|
7
|
-
/** Type of `timestamp()` columns not marked with `pgType` (Drizzle's types drop `withTimezone`). Default `"timestamp"`. */
|
|
8
5
|
readonly timestamp?: "timestamp" | "timestamptz" | undefined;
|
|
9
|
-
/** Type of `time()` columns not marked with `pgType`. Default `"time"`. */
|
|
10
6
|
readonly time?: "time" | "timetz" | undefined;
|
|
11
7
|
}
|
|
12
|
-
/** Postgres type of each pg-core `columnType` with a fixed SQL type. */
|
|
13
8
|
export interface DrizzleColumnTypes {
|
|
14
9
|
PgSmallInt: "int2";
|
|
15
10
|
PgInteger: "int4";
|
|
@@ -83,7 +78,6 @@ type ColumnConfig = {
|
|
|
83
78
|
readonly data: unknown;
|
|
84
79
|
readonly baseColumn: unknown;
|
|
85
80
|
};
|
|
86
|
-
/** Values of an exported `pgEnum` (array or object form). */
|
|
87
81
|
type EnumValues<X> = X extends {
|
|
88
82
|
readonly enumValues: readonly [string, ...string[]];
|
|
89
83
|
} ? X["enumValues"][number] : X extends () => {
|
|
@@ -91,23 +85,19 @@ type EnumValues<X> = X extends {
|
|
|
91
85
|
readonly data: infer D extends string;
|
|
92
86
|
};
|
|
93
87
|
} ? D : never;
|
|
94
|
-
/** `$types` registry: exported enums by export name. */
|
|
95
88
|
type Enums<S> = {
|
|
96
89
|
-readonly [K in keyof S as S[K] extends EnumLike ? K : never]: EnumValues<S[K]>;
|
|
97
90
|
};
|
|
98
91
|
type LastOf<U> = (U extends unknown ? (x: () => U) => void : never) extends (x: infer F) => void ? F extends () => infer L ? L : never : never;
|
|
99
|
-
/** Name of the exported enum whose values are exactly `V` (any one when several match), else `text`. */
|
|
100
92
|
type EnumName<V, E> = {
|
|
101
93
|
[K in keyof E]: [E[K]] extends [V] ? ([V] extends [E[K]] ? K : never) : never;
|
|
102
94
|
}[keyof E] extends infer N ? [N] extends [never] ? "text" : LastOf<N> & string : never;
|
|
103
95
|
type Opt<Opts, K extends keyof FromDrizzleOptions, D> = Opts extends {
|
|
104
96
|
readonly [P in K]: infer V extends string;
|
|
105
97
|
} ? V : D;
|
|
106
|
-
/** Postgres type of a column config. */
|
|
107
98
|
type PgTypeOf<D extends ColumnConfig, Opts = {}, E = {}> = D extends {
|
|
108
99
|
readonly typesqlType: infer T extends string;
|
|
109
100
|
} ? T : D["columnType"] extends keyof DrizzleColumnTypes ? DrizzleColumnTypes[D["columnType"]] : D["columnType"] extends "PgArray" ? D["baseColumn"] extends ColumnLike ? `${PgTypeOf<D["baseColumn"]["_"], Opts, E>}[]` : "unknown[]" : D["columnType"] extends "PgTimestamp" | "PgTimestampString" ? Opt<Opts, "timestamp", "timestamp"> : D["columnType"] extends "PgTime" ? Opt<Opts, "time", "time"> : D["columnType"] extends "PgEnumColumn" ? EnumName<(D["enumValues"] & readonly string[])[number], E> : D["columnType"] extends "PgEnumObjectColumn" ? EnumName<D["data"], E> : "unknown";
|
|
110
|
-
/** The descriptor as the matching core helper (`Col`, `Nullable`, `Generated`, `NullableGenerated`). */
|
|
111
101
|
type Desc<T extends string, N, H> = N extends true ? H extends true ? NullableGenerated<T> : Nullable<T> : H extends true ? Generated<T> : Col<T>;
|
|
112
102
|
type ColOf<D extends ColumnConfig, Opts, E> = Desc<PgTypeOf<D, Opts, E>, D["notNull"] extends true ? false : true, D["hasDefault"] extends true ? D["hasRuntimeDefault"] extends true ? false : true : false>;
|
|
113
103
|
type Cased<N extends string, Opts> = Opts extends {
|
|
@@ -129,7 +119,6 @@ type ViewColumns<F, Opts, E> = {
|
|
|
129
119
|
type Relation<X, Opts, E> = X extends TableLike ? Columns<X["_"]["columns"], Opts, E> : X extends ViewLike ? {
|
|
130
120
|
readonly $view: ViewColumns<X["_"]["selectedFields"], Opts, E>;
|
|
131
121
|
} : never;
|
|
132
|
-
/** Postgres schema of a table outside `public`. */
|
|
133
122
|
type SchemaOf<X> = X extends TableLike ? Exclude<X["_"]["schema"], undefined | "public"> : never;
|
|
134
123
|
type NameIn<X, N> = X extends TableLike ? X["_"]["schema"] extends N ? X["_"]["name"] : never : never;
|
|
135
124
|
type TopName<X> = X extends TableLike ? [SchemaOf<X>] extends [never] ? X["_"]["name"] : never : X extends ViewLike ? X["_"]["name"] : never;
|
|
@@ -147,14 +136,6 @@ type Build<S, Opts, E = Enums<S>> = {
|
|
|
147
136
|
type Flat<T> = {
|
|
148
137
|
[K in keyof T]: T[K];
|
|
149
138
|
} & {};
|
|
150
|
-
/**
|
|
151
|
-
* A TypeSQL schema from Drizzle `pg-core` definitions: `FromDrizzle<typeof schema>` with
|
|
152
|
-
* `import * as schema from "./schema"`. Also accepts a record of tables or a single table.
|
|
153
|
-
*
|
|
154
|
-
* Keys are SQL names (tables, columns, `pgSchema` namespaces); views become `View<…>`;
|
|
155
|
-
* exported `pgEnum`s are registered under `$types` by export name. Anything else exported
|
|
156
|
-
* (relations, sequences, helpers) is ignored.
|
|
157
|
-
*/
|
|
158
139
|
export type FromDrizzle<Schema, Opts extends FromDrizzleOptions = {}> = Schema extends TableLike | ViewLike ? Flat<Build<{
|
|
159
140
|
[K in Schema["_"]["name"]]: Schema;
|
|
160
141
|
}, Opts>> : Flat<Build<Schema, Opts>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"from-drizzle.d.ts","sourceRoot":"","sources":["../src/from-drizzle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,GAAG,EACH,SAAS,EACT,QAAQ,EACR,iBAAiB,EACjB,MAAM,
|
|
1
|
+
{"version":3,"file":"from-drizzle.d.ts","sourceRoot":"","sources":["../src/from-drizzle.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
import type { DefaultTypeMap, TransactionalSql } from "@typesql/core";
|
|
1
|
+
import type { DefaultTypeMap, PostgresDialect, TransactionalSql } from "@typesql/core/postgres";
|
|
2
2
|
import { type DrizzleDatabase } from "./client.js";
|
|
3
3
|
import type { FromDrizzle, FromDrizzleOptions } from "./from-drizzle.js";
|
|
4
4
|
export { type DrizzleDatabase, executor } from "./client.js";
|
|
5
5
|
export type { DrizzleColumnTypes, FromDrizzle, FromDrizzleOptions, } from "./from-drizzle.js";
|
|
6
6
|
export { pgType } from "./pg-type.js";
|
|
7
|
-
/** What `createSql<typeof schema>(db)` returns: core's `Sql` over `FromDrizzle<Schema, Opts>`, with `transaction(fn)`. */
|
|
8
7
|
export type DrizzleSql<Schema, TM = DefaultTypeMap, Opts extends FromDrizzleOptions = {}> = TransactionalSql<FromDrizzle<Schema, Opts>, TM>;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
export type DrizzleSchema<D> = D extends {
|
|
9
|
+
readonly _: {
|
|
10
|
+
readonly fullSchema: infer S;
|
|
11
|
+
};
|
|
12
|
+
} ? S : never;
|
|
13
|
+
export declare function createSql<D extends DrizzleDatabase & {
|
|
14
|
+
readonly _: {
|
|
15
|
+
readonly fullSchema: Record<string, unknown>;
|
|
16
|
+
};
|
|
17
|
+
}>(dialect: PostgresDialect, db: D): DrizzleSql<DrizzleSchema<D>>;
|
|
18
|
+
export declare function createSql<Schema, TM = DefaultTypeMap, Opts extends FromDrizzleOptions = {}>(dialect: PostgresDialect, db?: DrizzleDatabase): DrizzleSql<Schema, TM, Opts>;
|
|
16
19
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,eAAe,EAAU,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,EAAE,KAAK,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7D,YAAY,EACX,kBAAkB,EAClB,WAAW,EACX,kBAAkB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,MAAM,UAAU,CACrB,MAAM,EACN,EAAE,GAAG,cAAc,EACnB,IAAI,SAAS,kBAAkB,GAAG,EAAE,IACjC,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AAEpD,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS;IACxC,QAAQ,CAAC,CAAC,EAAE;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CAC7C,GACE,CAAC,GACD,KAAK,CAAC;AAET,wBAAgB,SAAS,CACxB,CAAC,SAAS,eAAe,GAAG;IAC3B,QAAQ,CAAC,CAAC,EAAE;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CAC7D,EACA,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,wBAAgB,SAAS,CACxB,MAAM,EACN,EAAE,GAAG,cAAc,EACnB,IAAI,SAAS,kBAAkB,GAAG,EAAE,EACnC,OAAO,EAAE,eAAe,EAAE,EAAE,CAAC,EAAE,eAAe,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,13 +2,7 @@ import { createTransactionalSql } from "@typesql/core/adapter";
|
|
|
2
2
|
import { driver } from "./client.js";
|
|
3
3
|
export { executor } from "./client.js";
|
|
4
4
|
export { pgType } from "./pg-type.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
* `createSql<typeof schema>(db)`, or `createSql<typeof schema, PgTypeMap>(db)` for a driver's type map.
|
|
8
|
-
* The queries' `execute*` methods run on `db` (a Drizzle database or transaction, on node-postgres
|
|
9
|
-
* or postgres.js), and `sql.transaction(fn)` runs `fn` with a `sql` bound to `db.transaction`.
|
|
10
|
-
*/
|
|
11
|
-
export function createSql(db) {
|
|
12
|
-
return createTransactionalSql(db, driver);
|
|
5
|
+
export function createSql(dialect, db) {
|
|
6
|
+
return createTransactionalSql(dialect, db, driver);
|
|
13
7
|
}
|
|
14
8
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAM/D,OAAO,EAAwB,MAAM,EAAE,MAAM,aAAa,CAAC;AAG3D,OAAO,EAAwB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAM7D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAwBtC,MAAM,UAAU,SAAS,CACxB,OAAwB,EACxB,EAAoB;IAEpB,OAAO,sBAAsB,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC"}
|
package/dist/pg-type.d.ts
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pin the Postgres type of a Drizzle column for `FromDrizzle`, where the column type alone
|
|
3
|
-
* cannot tell it: `pgType(timestamp("at", { withTimezone: true }), "timestamptz")`, or a
|
|
4
|
-
* `customType` column. Returns the builder unchanged at runtime.
|
|
5
|
-
*/
|
|
6
1
|
export declare function pgType<B, const T extends string>(builder: B, type: T): B & {
|
|
7
2
|
readonly _: {
|
|
8
3
|
readonly typesqlType: T;
|
package/dist/pg-type.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg-type.d.ts","sourceRoot":"","sources":["../src/pg-type.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pg-type.d.ts","sourceRoot":"","sources":["../src/pg-type.ts"],"names":[],"mappings":"AAAA,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,SAAS,MAAM,EAC/C,OAAO,EAAE,CAAC,EACV,IAAI,EAAE,CAAC,GACL,CAAC,GAAG;IAAE,QAAQ,CAAC,CAAC,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;KAAE,CAAA;CAAE,CAGjD"}
|
package/dist/pg-type.js
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pin the Postgres type of a Drizzle column for `FromDrizzle`, where the column type alone
|
|
3
|
-
* cannot tell it: `pgType(timestamp("at", { withTimezone: true }), "timestamptz")`, or a
|
|
4
|
-
* `customType` column. Returns the builder unchanged at runtime.
|
|
5
|
-
*/
|
|
6
1
|
export function pgType(builder, type) {
|
|
7
2
|
void type;
|
|
8
3
|
return builder;
|
package/dist/pg-type.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg-type.js","sourceRoot":"","sources":["../src/pg-type.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pg-type.js","sourceRoot":"","sources":["../src/pg-type.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,MAAM,CACrB,OAAU,EACV,IAAO;IAEP,KAAK,IAAI,CAAC;IACV,OAAO,OAA0D,CAAC;AACnE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typesql/drizzle",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Use Drizzle ORM table definitions as a TypeSQL schema.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -28,20 +28,18 @@
|
|
|
28
28
|
"access": "public"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@typesql/core": "0.
|
|
31
|
+
"@typesql/core": "0.8.0"
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
34
|
"drizzle-orm": ">=0.45"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/pg": "^8.23.1",
|
|
38
|
-
"@typesql/pg": "0.2.
|
|
38
|
+
"@typesql/pg": "0.2.10",
|
|
39
39
|
"drizzle-orm": "^0.45.4",
|
|
40
40
|
"pg": "^8.23.1",
|
|
41
|
-
"postgres": "^3.4.9",
|
|
42
41
|
"tsrs": "0.18.0-ts7.1.0-dev.20260929",
|
|
43
|
-
"typescript": "7.1.0-beta"
|
|
44
|
-
"vitest": "^5.0.4"
|
|
42
|
+
"typescript": "7.1.0-beta"
|
|
45
43
|
},
|
|
46
44
|
"homepage": "https://typesql.karsli.net/adapters/drizzle",
|
|
47
45
|
"bugs": {
|
|
@@ -63,7 +61,6 @@
|
|
|
63
61
|
],
|
|
64
62
|
"scripts": {
|
|
65
63
|
"build": "tsrs -p tsconfig.build.json",
|
|
66
|
-
"typecheck": "tsrs -p tsconfig.json --noEmit"
|
|
67
|
-
"test": "vitest run"
|
|
64
|
+
"typecheck": "tsrs -p tsconfig.json --noEmit"
|
|
68
65
|
}
|
|
69
66
|
}
|
package/src/casing.ts
CHANGED
|
@@ -36,7 +36,6 @@ type Cls<C extends string> = C extends Lower
|
|
|
36
36
|
? "u"
|
|
37
37
|
: "o";
|
|
38
38
|
|
|
39
|
-
/** A new word starts at `C` (class `K`) after a char of class `P`, `R` being the rest of the input. */
|
|
40
39
|
type Starts<P, K, R extends string> = K extends "u"
|
|
41
40
|
? P extends "l" | "d"
|
|
42
41
|
? true
|
|
@@ -53,10 +52,6 @@ type Starts<P, K, R extends string> = K extends "u"
|
|
|
53
52
|
|
|
54
53
|
type Push<A extends string[], W extends string> = W extends "" ? A : [...A, W];
|
|
55
54
|
|
|
56
|
-
/**
|
|
57
|
-
* Words of an identifier, as Drizzle's `casing` splits them
|
|
58
|
-
* (`/[\da-z]+|[A-Z]+(?![a-z])|[A-Z][\da-z]+/g`): `"userID2fa"` → `["user", "ID", "2fa"]`.
|
|
59
|
-
*/
|
|
60
55
|
export type Words<
|
|
61
56
|
S extends string,
|
|
62
57
|
W extends string = "",
|
|
@@ -83,7 +78,5 @@ type Camel<Ws extends string[], Acc extends string = ""> = Ws extends [
|
|
|
83
78
|
? Camel<R, Acc extends "" ? Lowercase<W> : `${Acc}${Capitalize<W>}`>
|
|
84
79
|
: Acc;
|
|
85
80
|
|
|
86
|
-
/** Drizzle's `toSnakeCase`: `"displayName"` → `"display_name"`. */
|
|
87
81
|
export type ToSnakeCase<S extends string> = Snake<Words<S>>;
|
|
88
|
-
/** Drizzle's `toCamelCase`: `"display_name"` → `"displayName"`. */
|
|
89
82
|
export type ToCamelCase<S extends string> = Camel<Words<S>>;
|
package/src/client.ts
CHANGED
|
@@ -1,26 +1,16 @@
|
|
|
1
1
|
import type { Executor } from "@typesql/core";
|
|
2
2
|
import type { SqlDriver } from "@typesql/core/adapter";
|
|
3
3
|
|
|
4
|
-
/**
|
|
5
|
-
* What the adapter uses from a Drizzle database (`drizzle(client)` from `drizzle-orm/node-postgres`,
|
|
6
|
-
* `drizzle-orm/postgres-js`, ...) or a transaction from `db.transaction(fn)`.
|
|
7
|
-
*/
|
|
8
4
|
export interface DrizzleDatabase {
|
|
9
5
|
readonly _: { readonly session: object };
|
|
10
6
|
transaction<T>(fn: (tx: DrizzleDatabase) => Promise<T>): Promise<T>;
|
|
11
7
|
}
|
|
12
8
|
|
|
13
|
-
/** The driver client a Drizzle session holds: node-postgres' `query` or postgres.js' `unsafe`. */
|
|
14
9
|
interface DriverClient {
|
|
15
10
|
query?(text: string, values: unknown[]): Promise<unknown>;
|
|
16
11
|
unsafe?(text: string, values: unknown[]): PromiseLike<unknown>;
|
|
17
12
|
}
|
|
18
13
|
|
|
19
|
-
/**
|
|
20
|
-
* The driver client under `db`: the `Pool`, `Client` or postgres.js `sql` given to `drizzle()`,
|
|
21
|
-
* or, inside `db.transaction(fn)`, the connection the transaction runs on. Drizzle keeps it as
|
|
22
|
-
* `session.client`.
|
|
23
|
-
*/
|
|
24
14
|
function clientOf(db: DrizzleDatabase): DriverClient {
|
|
25
15
|
const client = (db._.session as { readonly client?: DriverClient }).client;
|
|
26
16
|
if (
|
|
@@ -33,11 +23,6 @@ function clientOf(db: DrizzleDatabase): DriverClient {
|
|
|
33
23
|
);
|
|
34
24
|
}
|
|
35
25
|
|
|
36
|
-
/**
|
|
37
|
-
* An `Executor` for core's `q.execute()`: runs queries on the driver client under `db`, so rows
|
|
38
|
-
* come back as the driver parses them (Drizzle's column mappers are not involved), and resolves to
|
|
39
|
-
* `{ rows, rowCount }` so `q.executeCount()` works.
|
|
40
|
-
*/
|
|
41
26
|
export function executor(db: DrizzleDatabase): Executor {
|
|
42
27
|
return async (text, values) => {
|
|
43
28
|
const client = clientOf(db);
|
|
@@ -56,7 +41,6 @@ export function executor(db: DrizzleDatabase): Executor {
|
|
|
56
41
|
};
|
|
57
42
|
}
|
|
58
43
|
|
|
59
|
-
/** Run `fn` inside `db.transaction(fn)`; Drizzle nests a transaction inside one with a savepoint. */
|
|
60
44
|
function transaction<T>(
|
|
61
45
|
db: DrizzleDatabase,
|
|
62
46
|
_depth: number,
|
|
@@ -65,5 +49,4 @@ function transaction<T>(
|
|
|
65
49
|
return db.transaction(fn);
|
|
66
50
|
}
|
|
67
51
|
|
|
68
|
-
/** How `createSql(db)` runs queries and transactions. */
|
|
69
52
|
export const driver: SqlDriver<DrizzleDatabase> = { executor, transaction };
|
package/src/from-drizzle.ts
CHANGED
|
@@ -3,20 +3,15 @@ import type {
|
|
|
3
3
|
Generated,
|
|
4
4
|
Nullable,
|
|
5
5
|
NullableGenerated,
|
|
6
|
-
} from "@typesql/core";
|
|
6
|
+
} from "@typesql/core/postgres";
|
|
7
7
|
import type { ToCamelCase, ToSnakeCase } from "./casing.js";
|
|
8
8
|
|
|
9
|
-
/** Settings of your Drizzle setup that the column types do not record. */
|
|
10
9
|
export interface FromDrizzleOptions {
|
|
11
|
-
/** The `casing` passed to `drizzle()`: applied to column names, as Drizzle does at runtime. */
|
|
12
10
|
readonly casing?: "snake_case" | "camelCase" | undefined;
|
|
13
|
-
/** Type of `timestamp()` columns not marked with `pgType` (Drizzle's types drop `withTimezone`). Default `"timestamp"`. */
|
|
14
11
|
readonly timestamp?: "timestamp" | "timestamptz" | undefined;
|
|
15
|
-
/** Type of `time()` columns not marked with `pgType`. Default `"time"`. */
|
|
16
12
|
readonly time?: "time" | "timetz" | undefined;
|
|
17
13
|
}
|
|
18
14
|
|
|
19
|
-
/** Postgres type of each pg-core `columnType` with a fixed SQL type. */
|
|
20
15
|
export interface DrizzleColumnTypes {
|
|
21
16
|
PgSmallInt: "int2";
|
|
22
17
|
PgInteger: "int4";
|
|
@@ -90,7 +85,6 @@ type ColumnConfig = {
|
|
|
90
85
|
readonly baseColumn: unknown;
|
|
91
86
|
};
|
|
92
87
|
|
|
93
|
-
/** Values of an exported `pgEnum` (array or object form). */
|
|
94
88
|
type EnumValues<X> = X extends {
|
|
95
89
|
readonly enumValues: readonly [string, ...string[]];
|
|
96
90
|
}
|
|
@@ -99,7 +93,6 @@ type EnumValues<X> = X extends {
|
|
|
99
93
|
? D
|
|
100
94
|
: never;
|
|
101
95
|
|
|
102
|
-
/** `$types` registry: exported enums by export name. */
|
|
103
96
|
type Enums<S> = {
|
|
104
97
|
-readonly [K in keyof S as S[K] extends EnumLike ? K : never]: EnumValues<
|
|
105
98
|
S[K]
|
|
@@ -114,7 +107,6 @@ type LastOf<U> = (U extends unknown ? (x: () => U) => void : never) extends (
|
|
|
114
107
|
: never
|
|
115
108
|
: never;
|
|
116
109
|
|
|
117
|
-
/** Name of the exported enum whose values are exactly `V` (any one when several match), else `text`. */
|
|
118
110
|
type EnumName<V, E> = {
|
|
119
111
|
[K in keyof E]: [E[K]] extends [V] ? ([V] extends [E[K]] ? K : never) : never;
|
|
120
112
|
}[keyof E] extends infer N
|
|
@@ -129,7 +121,6 @@ type Opt<Opts, K extends keyof FromDrizzleOptions, D> = Opts extends {
|
|
|
129
121
|
? V
|
|
130
122
|
: D;
|
|
131
123
|
|
|
132
|
-
/** Postgres type of a column config. */
|
|
133
124
|
type PgTypeOf<D extends ColumnConfig, Opts = {}, E = {}> = D extends {
|
|
134
125
|
readonly typesqlType: infer T extends string;
|
|
135
126
|
}
|
|
@@ -150,7 +141,6 @@ type PgTypeOf<D extends ColumnConfig, Opts = {}, E = {}> = D extends {
|
|
|
150
141
|
? EnumName<D["data"], E>
|
|
151
142
|
: "unknown";
|
|
152
143
|
|
|
153
|
-
/** The descriptor as the matching core helper (`Col`, `Nullable`, `Generated`, `NullableGenerated`). */
|
|
154
144
|
type Desc<T extends string, N, H> = N extends true
|
|
155
145
|
? H extends true
|
|
156
146
|
? NullableGenerated<T>
|
|
@@ -204,7 +194,6 @@ type Relation<X, Opts, E> = X extends TableLike
|
|
|
204
194
|
? { readonly $view: ViewColumns<X["_"]["selectedFields"], Opts, E> }
|
|
205
195
|
: never;
|
|
206
196
|
|
|
207
|
-
/** Postgres schema of a table outside `public`. */
|
|
208
197
|
type SchemaOf<X> = X extends TableLike
|
|
209
198
|
? Exclude<X["_"]["schema"], undefined | "public">
|
|
210
199
|
: never;
|
|
@@ -231,14 +220,6 @@ type Build<S, Opts, E = Enums<S>> = {
|
|
|
231
220
|
|
|
232
221
|
type Flat<T> = { [K in keyof T]: T[K] } & {};
|
|
233
222
|
|
|
234
|
-
/**
|
|
235
|
-
* A TypeSQL schema from Drizzle `pg-core` definitions: `FromDrizzle<typeof schema>` with
|
|
236
|
-
* `import * as schema from "./schema"`. Also accepts a record of tables or a single table.
|
|
237
|
-
*
|
|
238
|
-
* Keys are SQL names (tables, columns, `pgSchema` namespaces); views become `View<…>`;
|
|
239
|
-
* exported `pgEnum`s are registered under `$types` by export name. Anything else exported
|
|
240
|
-
* (relations, sequences, helpers) is ignored.
|
|
241
|
-
*/
|
|
242
223
|
export type FromDrizzle<
|
|
243
224
|
Schema,
|
|
244
225
|
Opts extends FromDrizzleOptions = {},
|
package/src/index.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import type { DefaultTypeMap, TransactionalSql } from "@typesql/core";
|
|
2
1
|
import { createTransactionalSql } from "@typesql/core/adapter";
|
|
2
|
+
import type {
|
|
3
|
+
DefaultTypeMap,
|
|
4
|
+
PostgresDialect,
|
|
5
|
+
TransactionalSql,
|
|
6
|
+
} from "@typesql/core/postgres";
|
|
3
7
|
import { type DrizzleDatabase, driver } from "./client.js";
|
|
4
8
|
import type { FromDrizzle, FromDrizzleOptions } from "./from-drizzle.js";
|
|
5
9
|
|
|
@@ -11,26 +15,31 @@ export type {
|
|
|
11
15
|
} from "./from-drizzle.js";
|
|
12
16
|
export { pgType } from "./pg-type.js";
|
|
13
17
|
|
|
14
|
-
/** What `createSql<typeof schema>(db)` returns: core's `Sql` over `FromDrizzle<Schema, Opts>`, with `transaction(fn)`. */
|
|
15
18
|
export type DrizzleSql<
|
|
16
19
|
Schema,
|
|
17
20
|
TM = DefaultTypeMap,
|
|
18
21
|
Opts extends FromDrizzleOptions = {},
|
|
19
22
|
> = TransactionalSql<FromDrizzle<Schema, Opts>, TM>;
|
|
20
23
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
export type DrizzleSchema<D> = D extends {
|
|
25
|
+
readonly _: { readonly fullSchema: infer S };
|
|
26
|
+
}
|
|
27
|
+
? S
|
|
28
|
+
: never;
|
|
29
|
+
|
|
30
|
+
export function createSql<
|
|
31
|
+
D extends DrizzleDatabase & {
|
|
32
|
+
readonly _: { readonly fullSchema: Record<string, unknown> };
|
|
33
|
+
},
|
|
34
|
+
>(dialect: PostgresDialect, db: D): DrizzleSql<DrizzleSchema<D>>;
|
|
27
35
|
export function createSql<
|
|
28
36
|
Schema,
|
|
29
37
|
TM = DefaultTypeMap,
|
|
30
38
|
Opts extends FromDrizzleOptions = {},
|
|
31
|
-
>(db?: DrizzleDatabase): DrizzleSql<Schema, TM, Opts
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
39
|
+
>(dialect: PostgresDialect, db?: DrizzleDatabase): DrizzleSql<Schema, TM, Opts>;
|
|
40
|
+
export function createSql(
|
|
41
|
+
dialect: PostgresDialect,
|
|
42
|
+
db?: DrizzleDatabase,
|
|
43
|
+
): unknown {
|
|
44
|
+
return createTransactionalSql(dialect, db, driver);
|
|
36
45
|
}
|
package/src/pg-type.ts
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pin the Postgres type of a Drizzle column for `FromDrizzle`, where the column type alone
|
|
3
|
-
* cannot tell it: `pgType(timestamp("at", { withTimezone: true }), "timestamptz")`, or a
|
|
4
|
-
* `customType` column. Returns the builder unchanged at runtime.
|
|
5
|
-
*/
|
|
6
1
|
export function pgType<B, const T extends string>(
|
|
7
2
|
builder: B,
|
|
8
3
|
type: T,
|