@typesql/drizzle 0.2.9 → 0.3.1
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/README.md +7 -2
- package/dist/from-drizzle-sqlite.d.ts +49 -0
- package/dist/from-drizzle-sqlite.d.ts.map +1 -0
- package/dist/from-drizzle-sqlite.js +2 -0
- package/dist/from-drizzle-sqlite.js.map +1 -0
- package/dist/from-drizzle.d.ts +8 -8
- package/dist/from-drizzle.d.ts.map +1 -1
- package/dist/index.d.ts +25 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/pg-type.d.ts +1 -0
- package/dist/pg-type.d.ts.map +1 -1
- package/dist/pg-type.js +1 -0
- package/dist/pg-type.js.map +1 -1
- package/dist/sqlite-client.d.ts +10 -0
- package/dist/sqlite-client.d.ts.map +1 -0
- package/dist/sqlite-client.js +44 -0
- package/dist/sqlite-client.js.map +1 -0
- package/package.json +4 -3
- package/src/from-drizzle-sqlite.ts +99 -0
- package/src/from-drizzle.ts +8 -8
- package/src/index.ts +64 -7
- package/src/pg-type.ts +2 -0
- package/src/sqlite-client.ts +85 -0
- package/CHANGELOG.md +0 -147
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ Write [TypeSQL](https://www.npmjs.com/package/@typesql/core) queries against you
|
|
|
8
8
|
npm install @typesql/core @typesql/drizzle drizzle-orm
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
Requires `drizzle-orm` 0.45 or later
|
|
11
|
+
Requires `drizzle-orm` 0.45 or later: on node-postgres or postgres.js for PostgreSQL, or any Drizzle SQLite driver.
|
|
12
12
|
|
|
13
13
|
## Usage
|
|
14
14
|
|
|
@@ -32,10 +32,11 @@ export const posts = pgTable("posts", {
|
|
|
32
32
|
import { drizzle } from "drizzle-orm/node-postgres";
|
|
33
33
|
import { Pool } from "pg";
|
|
34
34
|
import { createSql } from "@typesql/drizzle";
|
|
35
|
+
import { postgres } from "@typesql/core/postgres";
|
|
35
36
|
import * as schema from "./schema";
|
|
36
37
|
|
|
37
38
|
const db = drizzle(new Pool(), { schema });
|
|
38
|
-
const sql = createSql
|
|
39
|
+
const sql = createSql(postgres, db);
|
|
39
40
|
|
|
40
41
|
const rows = await sql(
|
|
41
42
|
`SELECT u.email, u.display_name, p.title
|
|
@@ -51,6 +52,10 @@ Good to know:
|
|
|
51
52
|
- `.$defaultFn()` and `.$default()` run in Drizzle, not in Postgres, so a SQL `INSERT` must set those columns.
|
|
52
53
|
- Drizzle's types don't record `withTimezone`, so `timestamp()` columns are `timestamp`. Pin a column with `pgType` from this package: `pgType(timestamp("at", { withTimezone: true }), "timestamptz")`.
|
|
53
54
|
|
|
55
|
+
## SQLite
|
|
56
|
+
|
|
57
|
+
For a SQLite database, pass `sqlite` from `@typesql/core/sqlite` instead: `createSql(sqlite, db)`. The schema is converted to SQLite types; see [SQLite](https://typesql.karsli.net/guide/orms#sqlite).
|
|
58
|
+
|
|
54
59
|
## Documentation
|
|
55
60
|
|
|
56
61
|
See [From Kysely, Drizzle or Prisma](https://typesql.karsli.net/guide/orms#drizzle) for how the schema is converted, running queries and overrides, and [Limits](https://typesql.karsli.net/guide/limits#orm-schemas) for what the conversion can't tell.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { Col, Typed } from "@typesql/core/sqlite";
|
|
2
|
+
import type { Aliased, Cased, ColumnConfig, ColumnLike, Flat, FromDrizzleOptions, TableLike, ViewLike } from "./from-drizzle.js";
|
|
3
|
+
export interface DrizzleSqliteColumnTypes {
|
|
4
|
+
SQLiteInteger: "integer";
|
|
5
|
+
SQLiteTimestamp: "integer";
|
|
6
|
+
SQLiteBoolean: "integer";
|
|
7
|
+
SQLiteReal: "real";
|
|
8
|
+
SQLiteNumeric: "numeric";
|
|
9
|
+
SQLiteNumericNumber: "numeric";
|
|
10
|
+
SQLiteNumericBigInt: "numeric";
|
|
11
|
+
SQLiteBigInt: "blob";
|
|
12
|
+
SQLiteBlobJson: "blob";
|
|
13
|
+
SQLiteBlobBuffer: "blob";
|
|
14
|
+
SQLiteCustomColumn: "any";
|
|
15
|
+
}
|
|
16
|
+
type SqliteTypeOf<D extends ColumnConfig> = D extends {
|
|
17
|
+
readonly typesqlType: infer T extends string;
|
|
18
|
+
} ? T : D["columnType"] extends keyof DrizzleSqliteColumnTypes ? DrizzleSqliteColumnTypes[D["columnType"]] : D["columnType"] extends "SQLiteText" ? D["enumValues"] extends readonly [string, ...string[]] ? string extends D["enumValues"][number] ? "text" : Typed<"text", D["enumValues"][number]> : "text" : D["columnType"] extends "SQLiteTextJson" ? Typed<"json", D["data"]> : "any";
|
|
19
|
+
type IsGenerated<D> = D extends {
|
|
20
|
+
readonly generated: {
|
|
21
|
+
readonly type: string;
|
|
22
|
+
};
|
|
23
|
+
} ? true : false;
|
|
24
|
+
type ColOf<D extends ColumnConfig> = Col<SqliteTypeOf<D>, {
|
|
25
|
+
nullable: D["notNull"] extends true ? false : true;
|
|
26
|
+
hasDefault: D["hasDefault"] extends true ? D["hasRuntimeDefault"] extends true ? false : true : false;
|
|
27
|
+
generated: IsGenerated<D>;
|
|
28
|
+
}>;
|
|
29
|
+
type Columns<C, Opts> = {
|
|
30
|
+
-readonly [K in keyof C as C[K] extends ColumnLike ? Cased<C[K]["_"]["name"], Opts> : never]: C[K] extends ColumnLike ? ColOf<C[K]["_"]> : never;
|
|
31
|
+
};
|
|
32
|
+
type ViewColumns<F, Opts> = {
|
|
33
|
+
-readonly [K in keyof F as F[K] extends ColumnLike ? Cased<F[K]["_"]["name"], Opts> : F[K] extends Aliased ? K : never]: F[K] extends ColumnLike ? Col<SqliteTypeOf<F[K]["_"]>, {
|
|
34
|
+
nullable: F[K]["_"]["notNull"] extends true ? false : true;
|
|
35
|
+
}> : Col<"any", {
|
|
36
|
+
nullable: true;
|
|
37
|
+
}>;
|
|
38
|
+
};
|
|
39
|
+
type Relation<X, Opts> = X extends TableLike ? Columns<X["_"]["columns"], Opts> : X extends ViewLike ? {
|
|
40
|
+
readonly $view: ViewColumns<X["_"]["selectedFields"], Opts>;
|
|
41
|
+
} : never;
|
|
42
|
+
type NameOf<X> = X extends TableLike | ViewLike ? X["_"]["name"] : never;
|
|
43
|
+
export type FromDrizzleSqlite<Schema, Opts extends FromDrizzleOptions = {}> = Schema extends TableLike | ViewLike ? Flat<{
|
|
44
|
+
-readonly [N in NameOf<Schema>]: Relation<Schema, Opts>;
|
|
45
|
+
}> : Flat<{
|
|
46
|
+
-readonly [K in keyof Schema as NameOf<Schema[K]>]: Relation<Schema[K], Opts>;
|
|
47
|
+
}>;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=from-drizzle-sqlite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"from-drizzle-sqlite.d.ts","sourceRoot":"","sources":["../src/from-drizzle-sqlite.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"from-drizzle-sqlite.js","sourceRoot":"","sources":["../src/from-drizzle-sqlite.ts"],"names":[],"mappings":""}
|
package/dist/from-drizzle.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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
3
|
export interface FromDrizzleOptions {
|
|
4
4
|
readonly casing?: "snake_case" | "camelCase" | undefined;
|
|
@@ -45,7 +45,7 @@ export interface DrizzleColumnTypes {
|
|
|
45
45
|
PgBinaryVector: "bit";
|
|
46
46
|
PgCustomColumn: "unknown";
|
|
47
47
|
}
|
|
48
|
-
type TableLike = {
|
|
48
|
+
export type TableLike = {
|
|
49
49
|
readonly _: {
|
|
50
50
|
readonly brand: "Table";
|
|
51
51
|
readonly name: string;
|
|
@@ -53,7 +53,7 @@ type TableLike = {
|
|
|
53
53
|
readonly columns: object;
|
|
54
54
|
};
|
|
55
55
|
};
|
|
56
|
-
type ViewLike = {
|
|
56
|
+
export type ViewLike = {
|
|
57
57
|
readonly _: {
|
|
58
58
|
readonly brand: "View";
|
|
59
59
|
readonly name: string;
|
|
@@ -64,10 +64,10 @@ type EnumLike = {
|
|
|
64
64
|
readonly enumName: string;
|
|
65
65
|
readonly enumValues: readonly string[];
|
|
66
66
|
};
|
|
67
|
-
type ColumnLike = {
|
|
67
|
+
export type ColumnLike = {
|
|
68
68
|
readonly _: ColumnConfig;
|
|
69
69
|
};
|
|
70
|
-
type ColumnConfig = {
|
|
70
|
+
export type ColumnConfig = {
|
|
71
71
|
readonly brand: "Column";
|
|
72
72
|
readonly name: string;
|
|
73
73
|
readonly columnType: string;
|
|
@@ -100,7 +100,7 @@ type PgTypeOf<D extends ColumnConfig, Opts = {}, E = {}> = D extends {
|
|
|
100
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";
|
|
101
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>;
|
|
102
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>;
|
|
103
|
-
type Cased<N extends string, Opts> = Opts extends {
|
|
103
|
+
export type Cased<N extends string, Opts> = Opts extends {
|
|
104
104
|
readonly casing: "snake_case";
|
|
105
105
|
} ? ToSnakeCase<N> : Opts extends {
|
|
106
106
|
readonly casing: "camelCase";
|
|
@@ -108,7 +108,7 @@ type Cased<N extends string, Opts> = Opts extends {
|
|
|
108
108
|
type Columns<C, Opts, E> = {
|
|
109
109
|
-readonly [K in keyof C as C[K] extends ColumnLike ? Cased<C[K]["_"]["name"], Opts> : never]: C[K] extends ColumnLike ? ColOf<C[K]["_"], Opts, E> : never;
|
|
110
110
|
};
|
|
111
|
-
type Aliased = {
|
|
111
|
+
export type Aliased = {
|
|
112
112
|
readonly _: {
|
|
113
113
|
readonly brand: "SQL.Aliased";
|
|
114
114
|
};
|
|
@@ -133,7 +133,7 @@ type Build<S, Opts, E = Enums<S>> = {
|
|
|
133
133
|
} & (keyof E extends never ? {} : {
|
|
134
134
|
$types: E;
|
|
135
135
|
});
|
|
136
|
-
type Flat<T> = {
|
|
136
|
+
export type Flat<T> = {
|
|
137
137
|
[K in keyof T]: T[K];
|
|
138
138
|
} & {};
|
|
139
139
|
export type FromDrizzle<Schema, Opts extends FromDrizzleOptions = {}> = Schema extends TableLike | ViewLike ? Flat<Build<{
|
|
@@ -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,9 +1,31 @@
|
|
|
1
|
-
import type { DefaultTypeMap, TransactionalSql } from "@typesql/core";
|
|
1
|
+
import type { DefaultTypeMap, PostgresDialect, TransactionalSql } from "@typesql/core/postgres";
|
|
2
|
+
import type { SqliteDialect, TransactionalSql as SqliteTransactionalSql, DefaultTypeMap as SqliteTypeMap } from "@typesql/core/sqlite";
|
|
2
3
|
import { type DrizzleDatabase } from "./client.js";
|
|
3
4
|
import type { FromDrizzle, FromDrizzleOptions } from "./from-drizzle.js";
|
|
5
|
+
import type { FromDrizzleSqlite } from "./from-drizzle-sqlite.js";
|
|
6
|
+
import { type DrizzleSqliteDatabase } from "./sqlite-client.js";
|
|
4
7
|
export { type DrizzleDatabase, executor } from "./client.js";
|
|
5
8
|
export type { DrizzleColumnTypes, FromDrizzle, FromDrizzleOptions, } from "./from-drizzle.js";
|
|
6
|
-
export {
|
|
9
|
+
export type { DrizzleSqliteColumnTypes, FromDrizzleSqlite, } from "./from-drizzle-sqlite.js";
|
|
10
|
+
export { pgType, sqliteType } from "./pg-type.js";
|
|
11
|
+
export { type DrizzleSqliteDatabase, sqliteExecutor } from "./sqlite-client.js";
|
|
7
12
|
export type DrizzleSql<Schema, TM = DefaultTypeMap, Opts extends FromDrizzleOptions = {}> = TransactionalSql<FromDrizzle<Schema, Opts>, TM>;
|
|
8
|
-
export
|
|
13
|
+
export type DrizzleSqliteSql<Schema, TM = SqliteTypeMap, Opts extends FromDrizzleOptions = {}> = SqliteTransactionalSql<FromDrizzleSqlite<Schema, Opts>, TM>;
|
|
14
|
+
export type DrizzleSchema<D> = D extends {
|
|
15
|
+
readonly _: {
|
|
16
|
+
readonly fullSchema: infer S;
|
|
17
|
+
};
|
|
18
|
+
} ? S : never;
|
|
19
|
+
export declare function createSql<D extends DrizzleSqliteDatabase & {
|
|
20
|
+
readonly _: {
|
|
21
|
+
readonly fullSchema: Record<string, unknown>;
|
|
22
|
+
};
|
|
23
|
+
}>(dialect: SqliteDialect, db: D): DrizzleSqliteSql<DrizzleSchema<D>>;
|
|
24
|
+
export declare function createSql<Schema, TM = SqliteTypeMap, Opts extends FromDrizzleOptions = {}>(dialect: SqliteDialect, db?: DrizzleSqliteDatabase): DrizzleSqliteSql<Schema, TM, Opts>;
|
|
25
|
+
export declare function createSql<D extends DrizzleDatabase & {
|
|
26
|
+
readonly _: {
|
|
27
|
+
readonly fullSchema: Record<string, unknown>;
|
|
28
|
+
};
|
|
29
|
+
}>(dialect: PostgresDialect, db: D): DrizzleSql<DrizzleSchema<D>>;
|
|
30
|
+
export declare function createSql<Schema, TM = DefaultTypeMap, Opts extends FromDrizzleOptions = {}>(dialect: PostgresDialect, db?: DrizzleDatabase): DrizzleSql<Schema, TM, Opts>;
|
|
9
31
|
//# 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,KAAK,EACX,aAAa,EACb,gBAAgB,IAAI,sBAAsB,EAC1C,cAAc,IAAI,aAAa,EAC/B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,eAAe,EAAU,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,KAAK,qBAAqB,EAAgB,MAAM,oBAAoB,CAAC;AAE9E,OAAO,EAAE,KAAK,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7D,YAAY,EACX,kBAAkB,EAClB,WAAW,EACX,kBAAkB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACX,wBAAwB,EACxB,iBAAiB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,KAAK,qBAAqB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEhF,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,gBAAgB,CAC3B,MAAM,EACN,EAAE,GAAG,aAAa,EAClB,IAAI,SAAS,kBAAkB,GAAG,EAAE,IACjC,sBAAsB,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AAEhE,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,qBAAqB,GAAG;IACjC,QAAQ,CAAC,CAAC,EAAE;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CAC7D,EACA,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,wBAAgB,SAAS,CACxB,MAAM,EACN,EAAE,GAAG,aAAa,EAClB,IAAI,SAAS,kBAAkB,GAAG,EAAE,EAEpC,OAAO,EAAE,aAAa,EACtB,EAAE,CAAC,EAAE,qBAAqB,GACxB,gBAAgB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AACtC,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
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { createTransactionalSql } from "@typesql/core/adapter";
|
|
2
2
|
import { driver } from "./client.js";
|
|
3
|
+
import { sqliteDriver } from "./sqlite-client.js";
|
|
3
4
|
export { executor } from "./client.js";
|
|
4
|
-
export { pgType } from "./pg-type.js";
|
|
5
|
-
export
|
|
6
|
-
|
|
5
|
+
export { pgType, sqliteType } from "./pg-type.js";
|
|
6
|
+
export { sqliteExecutor } from "./sqlite-client.js";
|
|
7
|
+
export function createSql(dialect, db) {
|
|
8
|
+
return dialect.name === "sqlite"
|
|
9
|
+
? createTransactionalSql(dialect, db, sqliteDriver)
|
|
10
|
+
: createTransactionalSql(dialect, db, driver);
|
|
7
11
|
}
|
|
8
12
|
//# 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;AAW/D,OAAO,EAAwB,MAAM,EAAE,MAAM,aAAa,CAAC;AAG3D,OAAO,EAA8B,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE9E,OAAO,EAAwB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAU7D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAA8B,cAAc,EAAE,MAAM,oBAAoB,CAAC;AA2ChF,MAAM,UAAU,SAAS,CACxB,OAAwC,EACxC,EAA4C;IAE5C,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;QAC/B,CAAC,CAAC,sBAAsB,CACtB,OAAO,EACP,EAAuC,EACvC,YAAY,CACZ;QACF,CAAC,CAAC,sBAAsB,CACtB,OAAO,EACP,EAAiC,EACjC,MAAM,CACN,CAAC;AACL,CAAC"}
|
package/dist/pg-type.d.ts
CHANGED
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,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"}
|
|
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;AAED,eAAO,MAAM,UAAU,EAAE,OAAO,MAAe,CAAC"}
|
package/dist/pg-type.js
CHANGED
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,MAAM,UAAU,MAAM,CACrB,OAAU,EACV,IAAO;IAEP,KAAK,IAAI,CAAC;IACV,OAAO,OAA0D,CAAC;AACnE,CAAC"}
|
|
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;AAED,MAAM,CAAC,MAAM,UAAU,GAAkB,MAAM,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Executor } from "@typesql/core";
|
|
2
|
+
import { type SqlDriver } from "@typesql/core/adapter";
|
|
3
|
+
export interface DrizzleSqliteDatabase {
|
|
4
|
+
all(query: never): unknown;
|
|
5
|
+
run(query: never): unknown;
|
|
6
|
+
transaction(fn: never): unknown;
|
|
7
|
+
}
|
|
8
|
+
export declare function sqliteExecutor(db: DrizzleSqliteDatabase): Executor;
|
|
9
|
+
export declare const sqliteDriver: SqlDriver<DrizzleSqliteDatabase>;
|
|
10
|
+
//# sourceMappingURL=sqlite-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-client.d.ts","sourceRoot":"","sources":["../src/sqlite-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAEN,KAAK,SAAS,EAEd,MAAM,uBAAuB,CAAC;AAG/B,MAAM,WAAW,qBAAqB;IACrC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC;IAC3B,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC;CAChC;AA+BD,wBAAgB,cAAc,CAAC,EAAE,EAAE,qBAAqB,GAAG,QAAQ,CASlE;AA6BD,eAAO,MAAM,YAAY,EAAE,SAAS,CAAC,qBAAqB,CAGzD,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { runTransaction, splitParams, } from "@typesql/core/adapter";
|
|
2
|
+
import { Param, SQL, StringChunk } from "drizzle-orm";
|
|
3
|
+
const runner = (db) => db;
|
|
4
|
+
const isAsync = (db) => db.resultKind === "async";
|
|
5
|
+
function statement(text, values) {
|
|
6
|
+
const split = splitParams(text, values);
|
|
7
|
+
const chunks = [];
|
|
8
|
+
split.parts.forEach((part, i) => {
|
|
9
|
+
chunks.push(new StringChunk(part));
|
|
10
|
+
if (i < split.values.length)
|
|
11
|
+
chunks.push(new Param(split.values[i]));
|
|
12
|
+
});
|
|
13
|
+
return new SQL(chunks);
|
|
14
|
+
}
|
|
15
|
+
function changes(result) {
|
|
16
|
+
const r = (result ?? {});
|
|
17
|
+
return Number(r.changes ?? r.rowsAffected ?? 0);
|
|
18
|
+
}
|
|
19
|
+
export function sqliteExecutor(db) {
|
|
20
|
+
return Object.assign(async (text, values) => (await runner(db).all(statement(text, values))), {
|
|
21
|
+
count: async (text, values) => changes(await runner(db).run(statement(text, values))),
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
const queues = new WeakMap();
|
|
25
|
+
function transaction(db, depth, fn) {
|
|
26
|
+
if (isAsync(db))
|
|
27
|
+
return runner(db).transaction(fn);
|
|
28
|
+
const run = async (sql) => {
|
|
29
|
+
await runner(db).run(new SQL([new StringChunk(sql)]));
|
|
30
|
+
};
|
|
31
|
+
if (depth > 0)
|
|
32
|
+
return runTransaction(run, () => fn(db), {
|
|
33
|
+
savepoint: `typesql_${depth}`,
|
|
34
|
+
});
|
|
35
|
+
const previous = queues.get(db) ?? Promise.resolve();
|
|
36
|
+
const current = previous.then(() => runTransaction(run, () => fn(db)), () => runTransaction(run, () => fn(db)));
|
|
37
|
+
queues.set(db, current.catch(() => undefined));
|
|
38
|
+
return current;
|
|
39
|
+
}
|
|
40
|
+
export const sqliteDriver = {
|
|
41
|
+
executor: sqliteExecutor,
|
|
42
|
+
transaction,
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=sqlite-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-client.js","sourceRoot":"","sources":["../src/sqlite-client.ts"],"names":[],"mappings":"AACA,OAAO,EACN,cAAc,EAEd,WAAW,GACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,GAAG,EAAiB,WAAW,EAAE,MAAM,aAAa,CAAC;AAcrE,MAAM,MAAM,GAAG,CAAC,EAAyB,EAAU,EAAE,CAAC,EAAuB,CAAC;AAE9E,MAAM,OAAO,GAAG,CAAC,EAAyB,EAAW,EAAE,CACrD,EAAwC,CAAC,UAAU,KAAK,OAAO,CAAC;AAElE,SAAS,SAAS,CAAC,IAAY,EAAE,MAA0B;IAC1D,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAC/B,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,OAAO,CAAC,MAAe;IAC/B,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAGtB,CAAC;IACF,OAAO,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAyB;IACvD,OAAO,MAAM,CAAC,MAAM,CACnB,KAAK,EAAE,IAAY,EAAE,MAA0B,EAAE,EAAE,CAClD,CAAC,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAc,EAC7D;QACC,KAAK,EAAE,KAAK,EAAE,IAAY,EAAE,MAA0B,EAAE,EAAE,CACzD,OAAO,CAAC,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;KACvD,CACD,CAAC;AACH,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,OAAO,EAA4B,CAAC;AAEvD,SAAS,WAAW,CACnB,EAAyB,EACzB,KAAa,EACb,EAA6C;IAE7C,IAAI,OAAO,CAAC,EAAE,CAAC;QAAE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,KAAK,EAAE,GAAW,EAAiB,EAAE;QAChD,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC;IACF,IAAI,KAAK,GAAG,CAAC;QACZ,OAAO,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;YACxC,SAAS,EAAE,WAAW,KAAK,EAAE;SAC7B,CAAC,CAAC;IACJ,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAC5B,GAAG,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACvC,GAAG,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACvC,CAAC;IACF,MAAM,CAAC,GAAG,CACT,EAAE,EACF,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAC9B,CAAC;IACF,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAqC;IAC7D,QAAQ,EAAE,cAAc;IACxB,WAAW;CACX,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typesql/drizzle",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Use Drizzle ORM table definitions as a TypeSQL schema.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -28,14 +28,14 @@
|
|
|
28
28
|
"access": "public"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@typesql/core": "0.
|
|
31
|
+
"@typesql/core": "0.8.1"
|
|
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.
|
|
38
|
+
"@typesql/pg": "0.3.0",
|
|
39
39
|
"drizzle-orm": "^0.45.4",
|
|
40
40
|
"pg": "^8.23.1",
|
|
41
41
|
"tsrs": "0.18.0-ts7.1.0-dev.20260929",
|
|
@@ -50,6 +50,7 @@
|
|
|
50
50
|
"sql",
|
|
51
51
|
"postgres",
|
|
52
52
|
"postgresql",
|
|
53
|
+
"sqlite",
|
|
53
54
|
"typescript",
|
|
54
55
|
"type-safe",
|
|
55
56
|
"type-level",
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import type { Col, Typed } from "@typesql/core/sqlite";
|
|
2
|
+
import type {
|
|
3
|
+
Aliased,
|
|
4
|
+
Cased,
|
|
5
|
+
ColumnConfig,
|
|
6
|
+
ColumnLike,
|
|
7
|
+
Flat,
|
|
8
|
+
FromDrizzleOptions,
|
|
9
|
+
TableLike,
|
|
10
|
+
ViewLike,
|
|
11
|
+
} from "./from-drizzle.js";
|
|
12
|
+
|
|
13
|
+
export interface DrizzleSqliteColumnTypes {
|
|
14
|
+
SQLiteInteger: "integer";
|
|
15
|
+
SQLiteTimestamp: "integer";
|
|
16
|
+
SQLiteBoolean: "integer";
|
|
17
|
+
SQLiteReal: "real";
|
|
18
|
+
SQLiteNumeric: "numeric";
|
|
19
|
+
SQLiteNumericNumber: "numeric";
|
|
20
|
+
SQLiteNumericBigInt: "numeric";
|
|
21
|
+
SQLiteBigInt: "blob";
|
|
22
|
+
SQLiteBlobJson: "blob";
|
|
23
|
+
SQLiteBlobBuffer: "blob";
|
|
24
|
+
SQLiteCustomColumn: "any";
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
type SqliteTypeOf<D extends ColumnConfig> = D extends {
|
|
28
|
+
readonly typesqlType: infer T extends string;
|
|
29
|
+
}
|
|
30
|
+
? T
|
|
31
|
+
: D["columnType"] extends keyof DrizzleSqliteColumnTypes
|
|
32
|
+
? DrizzleSqliteColumnTypes[D["columnType"]]
|
|
33
|
+
: D["columnType"] extends "SQLiteText"
|
|
34
|
+
? D["enumValues"] extends readonly [string, ...string[]]
|
|
35
|
+
? string extends D["enumValues"][number]
|
|
36
|
+
? "text"
|
|
37
|
+
: Typed<"text", D["enumValues"][number]>
|
|
38
|
+
: "text"
|
|
39
|
+
: D["columnType"] extends "SQLiteTextJson"
|
|
40
|
+
? Typed<"json", D["data"]>
|
|
41
|
+
: "any";
|
|
42
|
+
|
|
43
|
+
type IsGenerated<D> = D extends {
|
|
44
|
+
readonly generated: { readonly type: string };
|
|
45
|
+
}
|
|
46
|
+
? true
|
|
47
|
+
: false;
|
|
48
|
+
|
|
49
|
+
type ColOf<D extends ColumnConfig> = Col<
|
|
50
|
+
SqliteTypeOf<D>,
|
|
51
|
+
{
|
|
52
|
+
nullable: D["notNull"] extends true ? false : true;
|
|
53
|
+
hasDefault: D["hasDefault"] extends true
|
|
54
|
+
? D["hasRuntimeDefault"] extends true
|
|
55
|
+
? false
|
|
56
|
+
: true
|
|
57
|
+
: false;
|
|
58
|
+
generated: IsGenerated<D>;
|
|
59
|
+
}
|
|
60
|
+
>;
|
|
61
|
+
|
|
62
|
+
type Columns<C, Opts> = {
|
|
63
|
+
-readonly [K in keyof C as C[K] extends ColumnLike
|
|
64
|
+
? Cased<C[K]["_"]["name"], Opts>
|
|
65
|
+
: never]: C[K] extends ColumnLike ? ColOf<C[K]["_"]> : never;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
type ViewColumns<F, Opts> = {
|
|
69
|
+
-readonly [K in keyof F as F[K] extends ColumnLike
|
|
70
|
+
? Cased<F[K]["_"]["name"], Opts>
|
|
71
|
+
: F[K] extends Aliased
|
|
72
|
+
? K
|
|
73
|
+
: never]: F[K] extends ColumnLike
|
|
74
|
+
? Col<
|
|
75
|
+
SqliteTypeOf<F[K]["_"]>,
|
|
76
|
+
{ nullable: F[K]["_"]["notNull"] extends true ? false : true }
|
|
77
|
+
>
|
|
78
|
+
: Col<"any", { nullable: true }>;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
type Relation<X, Opts> = X extends TableLike
|
|
82
|
+
? Columns<X["_"]["columns"], Opts>
|
|
83
|
+
: X extends ViewLike
|
|
84
|
+
? { readonly $view: ViewColumns<X["_"]["selectedFields"], Opts> }
|
|
85
|
+
: never;
|
|
86
|
+
|
|
87
|
+
type NameOf<X> = X extends TableLike | ViewLike ? X["_"]["name"] : never;
|
|
88
|
+
|
|
89
|
+
export type FromDrizzleSqlite<
|
|
90
|
+
Schema,
|
|
91
|
+
Opts extends FromDrizzleOptions = {},
|
|
92
|
+
> = Schema extends TableLike | ViewLike
|
|
93
|
+
? Flat<{ -readonly [N in NameOf<Schema>]: Relation<Schema, Opts> }>
|
|
94
|
+
: Flat<{
|
|
95
|
+
-readonly [K in keyof Schema as NameOf<Schema[K]>]: Relation<
|
|
96
|
+
Schema[K],
|
|
97
|
+
Opts
|
|
98
|
+
>;
|
|
99
|
+
}>;
|
package/src/from-drizzle.ts
CHANGED
|
@@ -3,7 +3,7 @@ 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
9
|
export interface FromDrizzleOptions {
|
|
@@ -53,7 +53,7 @@ export interface DrizzleColumnTypes {
|
|
|
53
53
|
PgCustomColumn: "unknown";
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
type TableLike = {
|
|
56
|
+
export type TableLike = {
|
|
57
57
|
readonly _: {
|
|
58
58
|
readonly brand: "Table";
|
|
59
59
|
readonly name: string;
|
|
@@ -61,7 +61,7 @@ type TableLike = {
|
|
|
61
61
|
readonly columns: object;
|
|
62
62
|
};
|
|
63
63
|
};
|
|
64
|
-
type ViewLike = {
|
|
64
|
+
export type ViewLike = {
|
|
65
65
|
readonly _: {
|
|
66
66
|
readonly brand: "View";
|
|
67
67
|
readonly name: string;
|
|
@@ -72,8 +72,8 @@ type EnumLike = {
|
|
|
72
72
|
readonly enumName: string;
|
|
73
73
|
readonly enumValues: readonly string[];
|
|
74
74
|
};
|
|
75
|
-
type ColumnLike = { readonly _: ColumnConfig };
|
|
76
|
-
type ColumnConfig = {
|
|
75
|
+
export type ColumnLike = { readonly _: ColumnConfig };
|
|
76
|
+
export type ColumnConfig = {
|
|
77
77
|
readonly brand: "Column";
|
|
78
78
|
readonly name: string;
|
|
79
79
|
readonly columnType: string;
|
|
@@ -159,7 +159,7 @@ type ColOf<D extends ColumnConfig, Opts, E> = Desc<
|
|
|
159
159
|
: false
|
|
160
160
|
>;
|
|
161
161
|
|
|
162
|
-
type Cased<N extends string, Opts> = Opts extends {
|
|
162
|
+
export type Cased<N extends string, Opts> = Opts extends {
|
|
163
163
|
readonly casing: "snake_case";
|
|
164
164
|
}
|
|
165
165
|
? ToSnakeCase<N>
|
|
@@ -173,7 +173,7 @@ type Columns<C, Opts, E> = {
|
|
|
173
173
|
: never]: C[K] extends ColumnLike ? ColOf<C[K]["_"], Opts, E> : never;
|
|
174
174
|
};
|
|
175
175
|
|
|
176
|
-
type Aliased = { readonly _: { readonly brand: "SQL.Aliased" } };
|
|
176
|
+
export type Aliased = { readonly _: { readonly brand: "SQL.Aliased" } };
|
|
177
177
|
type ViewColumns<F, Opts, E> = {
|
|
178
178
|
-readonly [K in keyof F as F[K] extends ColumnLike
|
|
179
179
|
? Cased<F[K]["_"]["name"], Opts>
|
|
@@ -218,7 +218,7 @@ type Build<S, Opts, E = Enums<S>> = {
|
|
|
218
218
|
};
|
|
219
219
|
} & (keyof E extends never ? {} : { $types: E });
|
|
220
220
|
|
|
221
|
-
type Flat<T> = { [K in keyof T]: T[K] } & {};
|
|
221
|
+
export type Flat<T> = { [K in keyof T]: T[K] } & {};
|
|
222
222
|
|
|
223
223
|
export type FromDrizzle<
|
|
224
224
|
Schema,
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,18 @@
|
|
|
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";
|
|
7
|
+
import type {
|
|
8
|
+
SqliteDialect,
|
|
9
|
+
TransactionalSql as SqliteTransactionalSql,
|
|
10
|
+
DefaultTypeMap as SqliteTypeMap,
|
|
11
|
+
} from "@typesql/core/sqlite";
|
|
3
12
|
import { type DrizzleDatabase, driver } from "./client.js";
|
|
4
13
|
import type { FromDrizzle, FromDrizzleOptions } from "./from-drizzle.js";
|
|
14
|
+
import type { FromDrizzleSqlite } from "./from-drizzle-sqlite.js";
|
|
15
|
+
import { type DrizzleSqliteDatabase, sqliteDriver } from "./sqlite-client.js";
|
|
5
16
|
|
|
6
17
|
export { type DrizzleDatabase, executor } from "./client.js";
|
|
7
18
|
export type {
|
|
@@ -9,7 +20,12 @@ export type {
|
|
|
9
20
|
FromDrizzle,
|
|
10
21
|
FromDrizzleOptions,
|
|
11
22
|
} from "./from-drizzle.js";
|
|
12
|
-
export {
|
|
23
|
+
export type {
|
|
24
|
+
DrizzleSqliteColumnTypes,
|
|
25
|
+
FromDrizzleSqlite,
|
|
26
|
+
} from "./from-drizzle-sqlite.js";
|
|
27
|
+
export { pgType, sqliteType } from "./pg-type.js";
|
|
28
|
+
export { type DrizzleSqliteDatabase, sqliteExecutor } from "./sqlite-client.js";
|
|
13
29
|
|
|
14
30
|
export type DrizzleSql<
|
|
15
31
|
Schema,
|
|
@@ -17,13 +33,54 @@ export type DrizzleSql<
|
|
|
17
33
|
Opts extends FromDrizzleOptions = {},
|
|
18
34
|
> = TransactionalSql<FromDrizzle<Schema, Opts>, TM>;
|
|
19
35
|
|
|
36
|
+
export type DrizzleSqliteSql<
|
|
37
|
+
Schema,
|
|
38
|
+
TM = SqliteTypeMap,
|
|
39
|
+
Opts extends FromDrizzleOptions = {},
|
|
40
|
+
> = SqliteTransactionalSql<FromDrizzleSqlite<Schema, Opts>, TM>;
|
|
41
|
+
|
|
42
|
+
export type DrizzleSchema<D> = D extends {
|
|
43
|
+
readonly _: { readonly fullSchema: infer S };
|
|
44
|
+
}
|
|
45
|
+
? S
|
|
46
|
+
: never;
|
|
47
|
+
|
|
48
|
+
export function createSql<
|
|
49
|
+
D extends DrizzleSqliteDatabase & {
|
|
50
|
+
readonly _: { readonly fullSchema: Record<string, unknown> };
|
|
51
|
+
},
|
|
52
|
+
>(dialect: SqliteDialect, db: D): DrizzleSqliteSql<DrizzleSchema<D>>;
|
|
53
|
+
export function createSql<
|
|
54
|
+
Schema,
|
|
55
|
+
TM = SqliteTypeMap,
|
|
56
|
+
Opts extends FromDrizzleOptions = {},
|
|
57
|
+
>(
|
|
58
|
+
dialect: SqliteDialect,
|
|
59
|
+
db?: DrizzleSqliteDatabase,
|
|
60
|
+
): DrizzleSqliteSql<Schema, TM, Opts>;
|
|
61
|
+
export function createSql<
|
|
62
|
+
D extends DrizzleDatabase & {
|
|
63
|
+
readonly _: { readonly fullSchema: Record<string, unknown> };
|
|
64
|
+
},
|
|
65
|
+
>(dialect: PostgresDialect, db: D): DrizzleSql<DrizzleSchema<D>>;
|
|
20
66
|
export function createSql<
|
|
21
67
|
Schema,
|
|
22
68
|
TM = DefaultTypeMap,
|
|
23
69
|
Opts extends FromDrizzleOptions = {},
|
|
24
|
-
>(db?: DrizzleDatabase): DrizzleSql<Schema, TM, Opts
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
70
|
+
>(dialect: PostgresDialect, db?: DrizzleDatabase): DrizzleSql<Schema, TM, Opts>;
|
|
71
|
+
export function createSql(
|
|
72
|
+
dialect: PostgresDialect | SqliteDialect,
|
|
73
|
+
db?: DrizzleDatabase | DrizzleSqliteDatabase,
|
|
74
|
+
): unknown {
|
|
75
|
+
return dialect.name === "sqlite"
|
|
76
|
+
? createTransactionalSql(
|
|
77
|
+
dialect,
|
|
78
|
+
db as DrizzleSqliteDatabase | undefined,
|
|
79
|
+
sqliteDriver,
|
|
80
|
+
)
|
|
81
|
+
: createTransactionalSql(
|
|
82
|
+
dialect,
|
|
83
|
+
db as DrizzleDatabase | undefined,
|
|
84
|
+
driver,
|
|
85
|
+
);
|
|
29
86
|
}
|
package/src/pg-type.ts
CHANGED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { Executor } from "@typesql/core";
|
|
2
|
+
import {
|
|
3
|
+
runTransaction,
|
|
4
|
+
type SqlDriver,
|
|
5
|
+
splitParams,
|
|
6
|
+
} from "@typesql/core/adapter";
|
|
7
|
+
import { Param, SQL, type SQLChunk, StringChunk } from "drizzle-orm";
|
|
8
|
+
|
|
9
|
+
export interface DrizzleSqliteDatabase {
|
|
10
|
+
all(query: never): unknown;
|
|
11
|
+
run(query: never): unknown;
|
|
12
|
+
transaction(fn: never): unknown;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface Runner {
|
|
16
|
+
all(query: SQL): unknown;
|
|
17
|
+
run(query: SQL): unknown;
|
|
18
|
+
transaction<T>(fn: (tx: DrizzleSqliteDatabase) => Promise<T>): Promise<T>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const runner = (db: DrizzleSqliteDatabase): Runner => db as unknown as Runner;
|
|
22
|
+
|
|
23
|
+
const isAsync = (db: DrizzleSqliteDatabase): boolean =>
|
|
24
|
+
(db as { readonly resultKind?: unknown }).resultKind === "async";
|
|
25
|
+
|
|
26
|
+
function statement(text: string, values: readonly unknown[]): SQL {
|
|
27
|
+
const split = splitParams(text, values);
|
|
28
|
+
const chunks: SQLChunk[] = [];
|
|
29
|
+
split.parts.forEach((part, i) => {
|
|
30
|
+
chunks.push(new StringChunk(part));
|
|
31
|
+
if (i < split.values.length) chunks.push(new Param(split.values[i]));
|
|
32
|
+
});
|
|
33
|
+
return new SQL(chunks);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function changes(result: unknown): number {
|
|
37
|
+
const r = (result ?? {}) as {
|
|
38
|
+
readonly changes?: number | bigint;
|
|
39
|
+
readonly rowsAffected?: number | bigint;
|
|
40
|
+
};
|
|
41
|
+
return Number(r.changes ?? r.rowsAffected ?? 0);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function sqliteExecutor(db: DrizzleSqliteDatabase): Executor {
|
|
45
|
+
return Object.assign(
|
|
46
|
+
async (text: string, values: readonly unknown[]) =>
|
|
47
|
+
(await runner(db).all(statement(text, values))) as unknown[],
|
|
48
|
+
{
|
|
49
|
+
count: async (text: string, values: readonly unknown[]) =>
|
|
50
|
+
changes(await runner(db).run(statement(text, values))),
|
|
51
|
+
},
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const queues = new WeakMap<object, Promise<unknown>>();
|
|
56
|
+
|
|
57
|
+
function transaction<T>(
|
|
58
|
+
db: DrizzleSqliteDatabase,
|
|
59
|
+
depth: number,
|
|
60
|
+
fn: (tx: DrizzleSqliteDatabase) => Promise<T>,
|
|
61
|
+
): Promise<T> {
|
|
62
|
+
if (isAsync(db)) return runner(db).transaction(fn);
|
|
63
|
+
const run = async (sql: string): Promise<void> => {
|
|
64
|
+
await runner(db).run(new SQL([new StringChunk(sql)]));
|
|
65
|
+
};
|
|
66
|
+
if (depth > 0)
|
|
67
|
+
return runTransaction(run, () => fn(db), {
|
|
68
|
+
savepoint: `typesql_${depth}`,
|
|
69
|
+
});
|
|
70
|
+
const previous = queues.get(db) ?? Promise.resolve();
|
|
71
|
+
const current = previous.then(
|
|
72
|
+
() => runTransaction(run, () => fn(db)),
|
|
73
|
+
() => runTransaction(run, () => fn(db)),
|
|
74
|
+
);
|
|
75
|
+
queues.set(
|
|
76
|
+
db,
|
|
77
|
+
current.catch(() => undefined),
|
|
78
|
+
);
|
|
79
|
+
return current;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export const sqliteDriver: SqlDriver<DrizzleSqliteDatabase> = {
|
|
83
|
+
executor: sqliteExecutor,
|
|
84
|
+
transaction,
|
|
85
|
+
};
|
package/CHANGELOG.md
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
# @typesql/drizzle
|
|
2
|
-
|
|
3
|
-
## 0.2.9
|
|
4
|
-
|
|
5
|
-
### Patch Changes
|
|
6
|
-
|
|
7
|
-
- Validate packages against PostgreSQL behavior and built outputs instead of hand-written test suites.
|
|
8
|
-
|
|
9
|
-
- Reorganize core internals and remove source comments and inline API documentation without changing SQL behavior.
|
|
10
|
-
|
|
11
|
-
- Updated dependencies:
|
|
12
|
-
- @typesql/core@0.7.6
|
|
13
|
-
|
|
14
|
-
## 0.2.8
|
|
15
|
-
|
|
16
|
-
### Patch Changes
|
|
17
|
-
|
|
18
|
-
- Updated dependencies:
|
|
19
|
-
- @typesql/core@0.7.5
|
|
20
|
-
|
|
21
|
-
## 0.2.7
|
|
22
|
-
|
|
23
|
-
### Patch Changes
|
|
24
|
-
|
|
25
|
-
- Updated dependencies:
|
|
26
|
-
- @typesql/core@0.7.4
|
|
27
|
-
|
|
28
|
-
## 0.2.6
|
|
29
|
-
|
|
30
|
-
### Patch Changes
|
|
31
|
-
|
|
32
|
-
- Updated dependencies:
|
|
33
|
-
- @typesql/core@0.7.3
|
|
34
|
-
|
|
35
|
-
## 0.2.5
|
|
36
|
-
|
|
37
|
-
### Patch Changes
|
|
38
|
-
|
|
39
|
-
- Updated dependencies:
|
|
40
|
-
- @typesql/core@0.7.2
|
|
41
|
-
|
|
42
|
-
## 0.2.4
|
|
43
|
-
|
|
44
|
-
### Patch Changes
|
|
45
|
-
|
|
46
|
-
- Updated dependencies:
|
|
47
|
-
- @typesql/core@0.7.1
|
|
48
|
-
|
|
49
|
-
## 0.2.3
|
|
50
|
-
|
|
51
|
-
### Patch Changes
|
|
52
|
-
|
|
53
|
-
- Updated dependencies:
|
|
54
|
-
- @typesql/core@0.7.0
|
|
55
|
-
|
|
56
|
-
## 0.2.2
|
|
57
|
-
|
|
58
|
-
### Patch Changes
|
|
59
|
-
|
|
60
|
-
- Build and type-check the package with `tsrs`.
|
|
61
|
-
|
|
62
|
-
- Updated dependencies:
|
|
63
|
-
- @typesql/core@0.6.1
|
|
64
|
-
|
|
65
|
-
## 0.2.1
|
|
66
|
-
|
|
67
|
-
### Patch Changes
|
|
68
|
-
|
|
69
|
-
- The README is shorter: install, one example and links to the docs site, which now has the details it used to repeat.
|
|
70
|
-
|
|
71
|
-
- Updated dependencies:
|
|
72
|
-
- @typesql/core@0.6.0
|
|
73
|
-
|
|
74
|
-
## 0.2.0
|
|
75
|
-
|
|
76
|
-
### Minor Changes
|
|
77
|
-
|
|
78
|
-
- `NoResultError`, `Executor` and `TransactionalSql` are no longer re-exported (from `@typesql/drizzle` also `Sql`, `Query`, `RowType`, `ParamsType`, `DefaultTypeMap` and `TypeMap`); import them from `@typesql/core`.
|
|
79
|
-
|
|
80
|
-
### Patch Changes
|
|
81
|
-
|
|
82
|
-
- Updated dependencies:
|
|
83
|
-
- @typesql/core@0.5.0
|
|
84
|
-
|
|
85
|
-
## 0.1.5
|
|
86
|
-
|
|
87
|
-
### Patch Changes
|
|
88
|
-
|
|
89
|
-
- Updated dependencies:
|
|
90
|
-
- @typesql/core@0.4.0
|
|
91
|
-
|
|
92
|
-
## 0.1.4
|
|
93
|
-
|
|
94
|
-
### Patch Changes
|
|
95
|
-
|
|
96
|
-
- Updated dependencies:
|
|
97
|
-
- @typesql/core@0.3.0
|
|
98
|
-
|
|
99
|
-
## 0.1.3
|
|
100
|
-
|
|
101
|
-
### Patch Changes
|
|
102
|
-
|
|
103
|
-
- Updated dependencies:
|
|
104
|
-
- @typesql/core@0.2.0
|
|
105
|
-
|
|
106
|
-
## 0.1.2
|
|
107
|
-
|
|
108
|
-
### Patch Changes
|
|
109
|
-
|
|
110
|
-
- npm package pages link to the documentation site and the issue tracker, and list keywords.
|
|
111
|
-
|
|
112
|
-
- Updated dependencies:
|
|
113
|
-
- @typesql/core@0.1.2
|
|
114
|
-
|
|
115
|
-
## 0.1.1
|
|
116
|
-
|
|
117
|
-
### Patch Changes
|
|
118
|
-
|
|
119
|
-
- Docs, package descriptions and error messages spell the project name TypeSQL.
|
|
120
|
-
|
|
121
|
-
- Updated dependencies:
|
|
122
|
-
- @typesql/core@0.1.1
|
|
123
|
-
|
|
124
|
-
## 0.1.0
|
|
125
|
-
|
|
126
|
-
### Minor Changes
|
|
127
|
-
|
|
128
|
-
- `createSql<typeof schema>(db)` takes a Drizzle database or transaction on node-postgres or postgres.js instead of an `Executor`, runs the queries on its driver client, and has `sql.transaction(fn)`, which runs in `db.transaction`.
|
|
129
|
-
|
|
130
|
-
### Patch Changes
|
|
131
|
-
|
|
132
|
-
- Updated dependencies:
|
|
133
|
-
- @typesql/core@0.1.0
|
|
134
|
-
|
|
135
|
-
## 0.0.4
|
|
136
|
-
|
|
137
|
-
### Patch Changes
|
|
138
|
-
|
|
139
|
-
- Updated dependencies:
|
|
140
|
-
- @typesql/core@0.0.4
|
|
141
|
-
|
|
142
|
-
## 0.0.3
|
|
143
|
-
|
|
144
|
-
### Patch Changes
|
|
145
|
-
|
|
146
|
-
- Updated dependencies:
|
|
147
|
-
- @typesql/core@0.0.3
|