@prisma-next/sqlite 0.13.0-dev.2 → 0.13.0-dev.21
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 +3 -3
- package/dist/runtime.d.mts +17 -2
- package/dist/runtime.d.mts.map +1 -1
- package/dist/runtime.mjs +13 -6
- package/dist/runtime.mjs.map +1 -1
- package/package.json +20 -20
- package/src/exports/runtime.ts +2 -0
- package/src/runtime/sqlite-runtime.ts +16 -0
- package/src/runtime/sqlite.ts +14 -5
package/README.md
CHANGED
|
@@ -26,7 +26,7 @@ import { defineContract, field, model } from '@prisma-next/sqlite/contract-build
|
|
|
26
26
|
|
|
27
27
|
export default defineContract({
|
|
28
28
|
models: {
|
|
29
|
-
User: model('User', { fields: { id: field.id.
|
|
29
|
+
User: model('User', { fields: { id: field.id.uuidv4String() } }),
|
|
30
30
|
},
|
|
31
31
|
});
|
|
32
32
|
```
|
|
@@ -56,7 +56,7 @@ import { defineContract, field, model } from '@prisma-next/sqlite/contract-build
|
|
|
56
56
|
|
|
57
57
|
export default defineContract({
|
|
58
58
|
models: {
|
|
59
|
-
User: model('User', { fields: { id: field.id.
|
|
59
|
+
User: model('User', { fields: { id: field.id.uuidv4String() } }),
|
|
60
60
|
},
|
|
61
61
|
});
|
|
62
62
|
```
|
|
@@ -76,7 +76,7 @@ await control.dbUpdate({ migrations: { dir: 'migrations/app' } });
|
|
|
76
76
|
|
|
77
77
|
### `@prisma-next/sqlite/migration`
|
|
78
78
|
|
|
79
|
-
Re-exports all migration operation helpers from `@prisma-next/target-sqlite/migration` (`Migration`, `MigrationCLI`, `
|
|
79
|
+
Re-exports all migration operation helpers from `@prisma-next/target-sqlite/migration` (`Migration`, `MigrationCLI`, `col`, `lit`, `fn`, `primaryKey`, `foreignKey`, `unique`, `addColumn`, `dropTable`, `createIndex`, `dropIndex`, `dropColumn`, `recreateTable`, `dataTransform`, `placeholder`, `rawSql`). `createTable` is no longer a free export — it is a protected method on `Migration`; call it as `this.createTable({...})` inside `get operations()`.
|
|
80
80
|
|
|
81
81
|
### `@prisma-next/sqlite/runtime`
|
|
82
82
|
|
package/dist/runtime.d.mts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { NamespacedEnums } from "@prisma-next/contract/enum-accessor";
|
|
1
2
|
import { UNBOUND_NAMESPACE_ID } from "@prisma-next/framework-components/ir";
|
|
2
3
|
import { orm } from "@prisma-next/sql-orm-client";
|
|
3
4
|
import { CodecTypesBase, RawSqlTag } from "@prisma-next/sql-relational-core/expression";
|
|
4
|
-
import { BindSiteParams, Declaration, ExecutionContext, ParamsFromDeclaration, PreparedStatement, Runtime, SqlExecutionStackWithDriver, SqlMiddleware, SqlRuntimeExtensionDescriptor, TransactionContext, VerifyMarkerOption } from "@prisma-next/sql-runtime";
|
|
5
|
+
import { BindSiteParams, Declaration, ExecutionContext, ParamsFromDeclaration, PreparedStatement, Runtime, SqlExecutionStackWithDriver, SqlMiddleware, SqlRuntimeBase, SqlRuntimeExtensionDescriptor, TransactionContext, VerifyMarkerOption } from "@prisma-next/sql-runtime";
|
|
5
6
|
import { ExtractCodecTypes, SqlStorage } from "@prisma-next/sql-contract/types";
|
|
6
7
|
import { Contract } from "@prisma-next/contract/types";
|
|
7
8
|
import { Db } from "@prisma-next/sql-builder/types";
|
|
@@ -17,13 +18,16 @@ type SqliteTargetId = 'sqlite';
|
|
|
17
18
|
type OrmClient<TContract extends Contract<SqlStorage>> = ReturnType<typeof orm<TContract>>;
|
|
18
19
|
type UnboundSql<TContract extends Contract<SqlStorage>> = Db<TContract>[typeof UNBOUND_NAMESPACE_ID];
|
|
19
20
|
type UnboundOrm<TContract extends Contract<SqlStorage>> = OrmClient<TContract>[typeof UNBOUND_NAMESPACE_ID];
|
|
21
|
+
type UnboundEnums<TContract extends Contract<SqlStorage>> = NamespacedEnums<TContract>[typeof UNBOUND_NAMESPACE_ID];
|
|
20
22
|
interface SqliteTransactionContext<TContract extends Contract<SqlStorage>> extends TransactionContext {
|
|
21
23
|
readonly sql: UnboundSql<TContract>;
|
|
22
24
|
readonly orm: UnboundOrm<TContract>;
|
|
25
|
+
readonly enums: UnboundEnums<TContract>;
|
|
23
26
|
}
|
|
24
27
|
interface SqliteClient<TContract extends Contract<SqlStorage>> {
|
|
25
28
|
readonly sql: UnboundSql<TContract>;
|
|
26
29
|
readonly orm: UnboundOrm<TContract>;
|
|
30
|
+
readonly enums: UnboundEnums<TContract>;
|
|
27
31
|
readonly raw: RawSqlTag;
|
|
28
32
|
readonly context: ExecutionContext<TContract>;
|
|
29
33
|
readonly stack: SqlExecutionStackWithDriver<SqliteTargetId>;
|
|
@@ -58,5 +62,16 @@ type SqliteOptions<TContract extends Contract<SqlStorage>> = SqliteOptionsWithCo
|
|
|
58
62
|
declare function sqlite<TContract extends Contract<SqlStorage>>(options: SqliteOptionsWithContract<TContract>): SqliteClient<TContract>;
|
|
59
63
|
declare function sqlite<TContract extends Contract<SqlStorage>>(options: SqliteOptionsWithContractJson<TContract>): SqliteClient<TContract>;
|
|
60
64
|
//#endregion
|
|
61
|
-
|
|
65
|
+
//#region src/runtime/sqlite-runtime.d.ts
|
|
66
|
+
/**
|
|
67
|
+
* The SQLite runtime interface. App code depends on this — `sqlite()` returns it
|
|
68
|
+
* and `Runtime` (the common interface) is the everyday parameter type.
|
|
69
|
+
*
|
|
70
|
+
* `SqliteRuntimeImpl` is the implementing class. It is exported so that other
|
|
71
|
+
* extensions can subclass it; app code never references it directly.
|
|
72
|
+
*/
|
|
73
|
+
interface SqliteRuntime extends Runtime {}
|
|
74
|
+
declare class SqliteRuntimeImpl<TContract extends Contract<SqlStorage> = Contract<SqlStorage>> extends SqlRuntimeBase<TContract> {}
|
|
75
|
+
//#endregion
|
|
76
|
+
export { type SqliteBindingInput, type SqliteClient, type SqliteOptions, type SqliteOptionsBase, type SqliteOptionsWithContract, type SqliteOptionsWithContractJson, type SqliteRuntime, SqliteRuntimeImpl, type SqliteTargetId, sqlite as default };
|
|
62
77
|
//# sourceMappingURL=runtime.d.mts.map
|
package/dist/runtime.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.mts","names":[],"sources":["../src/runtime/binding.ts","../src/runtime/sqlite.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime.d.mts","names":[],"sources":["../src/runtime/binding.ts","../src/runtime/sqlite.ts","../src/runtime/sqlite-runtime.ts"],"mappings":";;;;;;;;;;;KAEY,kBAAA;EAAA,SAAgC,IAAI;AAAA;;;KCqCpC,cAAA;AAAA,KACP,SAAA,mBAA4B,QAAA,CAAS,UAAA,KAAe,UAAA,QAAkB,GAAA,CAAW,SAAA;AAAA,KAEjF,UAAA,mBAA6B,QAAA,CAAS,UAAA,KACzC,EAAA,CAAG,SAAA,SAAkB,oBAAA;AAAA,KAClB,UAAA,mBAA6B,QAAA,CAAS,UAAA,KACzC,SAAA,CAAU,SAAA,SAAkB,oBAAA;AAAA,KACzB,YAAA,mBAA+B,QAAA,CAAS,UAAA,KAC3C,eAAA,CAAgB,SAAA,SAAkB,oBAAA;AAAA,UAQnB,wBAAA,mBAA2C,QAAA,CAAS,UAAA,WAC3D,kBAAA;EAAA,SACC,GAAA,EAAK,UAAA,CAAW,SAAA;EAAA,SAChB,GAAA,EAAK,UAAA,CAAW,SAAA;EAAA,SAChB,KAAA,EAAO,YAAA,CAAa,SAAA;AAAA;AAAA,UAGd,YAAA,mBAA+B,QAAA,CAAS,UAAA;EAAA,SAC9C,GAAA,EAAK,UAAA,CAAW,SAAA;EAAA,SAChB,GAAA,EAAK,UAAA,CAAW,SAAA;EAAA,SAChB,KAAA,EAAO,YAAA,CAAa,SAAA;EAAA,SACpB,GAAA,EAAK,SAAA;EAAA,SACL,OAAA,EAAS,gBAAA,CAAiB,SAAA;EAAA,SAC1B,KAAA,EAAO,2BAAA,CAA4B,cAAA;EAC5C,OAAA,CAAQ,YAAA;IAAA,SAA0B,IAAA;EAAA,IAAiB,OAAA,CAAQ,OAAA;EAC3D,OAAA,IAAW,OAAA;EACX,OAAA,WACY,WAAA,CAAY,EAAA,mBAEX,cAAA,GAAiB,iBAAA,CAAkB,SAAA,IAAa,cAAA,EAE3D,WAAA,EAAa,CAAA,EACb,QAAA,GAAW,GAAA,EAAK,UAAA,CAAW,SAAA,GAAY,MAAA,EAAQ,cAAA,CAAe,CAAA,MAAO,YAAA,CAAa,GAAA,IACjF,OAAA,CAAQ,iBAAA,CAAkB,qBAAA,CAAsB,CAAA,EAAG,EAAA,GAAK,GAAA;EAC3D,WAAA,IAAe,EAAA,GAAK,EAAA,EAAI,wBAAA,CAAyB,SAAA,MAAe,WAAA,CAAY,CAAA,IAAK,OAAA,CAAQ,CAAA;EACzF,KAAA,IAAS,OAAA;EAAA,CACR,MAAA,CAAO,YAAA,KAAiB,OAAA;AAAA;AAAA,UAGV,iBAAA;EAAA,SACN,UAAA,YAAsB,6BAAA,CAA8B,cAAA;EAAA,SACpD,UAAA,YAAsB,aAAA;EAAA,SACtB,YAAA,GAAe,kBAAA;AAAA;AAAA,KAGd,yBAAA,mBAA4C,QAAA,CAAS,UAAA;EAAA,SACtD,IAAA;AAAA,IACP,iBAAA;EAAA,SACS,QAAA,EAAU,SAAA;EAAA,SACV,YAAA;AAAA;AAAA,KAGD,6BAAA,mBAAgD,QAAA,CAAS,UAAA;EAAA,SAC1D,IAAA;EAAA,SACA,SAAA,GAAY,SAAA;AAAA,IACnB,iBAAA;EAAA,SACS,YAAA;EAAA,SACA,QAAA;AAAA;AAAA,KAGD,aAAA,mBAAgC,QAAA,CAAS,UAAA,KACjD,yBAAA,CAA0B,SAAA,IAC1B,6BAAA,CAA8B,SAAA;AAAA,iBAYV,MAAA,mBAAyB,QAAA,CAAS,UAAA,GACxD,OAAA,EAAS,yBAAA,CAA0B,SAAA,IAClC,YAAA,CAAa,SAAA;AAAA,iBACQ,MAAA,mBAAyB,QAAA,CAAS,UAAA,GACxD,OAAA,EAAS,6BAAA,CAA8B,SAAA,IACtC,YAAA,CAAa,SAAA;;;;;;;;;;UCjHC,aAAA,SAAsB,OAAO;AAAA,cAEjC,iBAAA,mBACO,QAAA,CAAS,UAAA,IAAc,QAAA,CAAS,UAAA,WAC1C,cAAA,CAAe,SAAA"}
|
package/dist/runtime.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ifDefined } from "@prisma-next/utils/defined";
|
|
2
2
|
import sqliteAdapter from "@prisma-next/adapter-sqlite/runtime";
|
|
3
|
+
import { buildNamespacedEnums } from "@prisma-next/contract/enum-accessor";
|
|
3
4
|
import sqliteDriver from "@prisma-next/driver-sqlite/runtime";
|
|
4
5
|
import { SqlContractSerializer } from "@prisma-next/family-sql/ir";
|
|
5
6
|
import { instantiateExecutionStack } from "@prisma-next/framework-components/execution";
|
|
@@ -7,7 +8,7 @@ import { UNBOUND_NAMESPACE_ID } from "@prisma-next/framework-components/ir";
|
|
|
7
8
|
import { sql } from "@prisma-next/sql-builder/runtime";
|
|
8
9
|
import { orm } from "@prisma-next/sql-orm-client";
|
|
9
10
|
import { createRawSql } from "@prisma-next/sql-relational-core/expression";
|
|
10
|
-
import {
|
|
11
|
+
import { SqlRuntimeBase, createExecutionContext, createSqlExecutionStack, withTransaction } from "@prisma-next/sql-runtime";
|
|
11
12
|
import sqliteTarget from "@prisma-next/target-sqlite/runtime";
|
|
12
13
|
import { blindCast, castAs } from "@prisma-next/utils/casts";
|
|
13
14
|
//#region src/runtime/binding.ts
|
|
@@ -25,6 +26,9 @@ function resolveOptionalSqliteBinding(options) {
|
|
|
25
26
|
};
|
|
26
27
|
}
|
|
27
28
|
//#endregion
|
|
29
|
+
//#region src/runtime/sqlite-runtime.ts
|
|
30
|
+
var SqliteRuntimeImpl = class extends SqlRuntimeBase {};
|
|
31
|
+
//#endregion
|
|
28
32
|
//#region src/runtime/sqlite.ts
|
|
29
33
|
function unboundNamespace(builderOutput) {
|
|
30
34
|
return blindCast(builderOutput[UNBOUND_NAMESPACE_ID]);
|
|
@@ -52,6 +56,7 @@ function sqlite(options) {
|
|
|
52
56
|
context,
|
|
53
57
|
rawCodecInferer
|
|
54
58
|
}));
|
|
59
|
+
const enums = unboundNamespace(Object.freeze(buildNamespacedEnums(contract.domain)));
|
|
55
60
|
let runtimeInstance;
|
|
56
61
|
let runtimeDriver;
|
|
57
62
|
let driverConnected = false;
|
|
@@ -84,12 +89,12 @@ function sqlite(options) {
|
|
|
84
89
|
ownedDispose = () => driver.close();
|
|
85
90
|
runtimeDriver = driver;
|
|
86
91
|
if (binding !== void 0) connectDriver(binding).catch(() => void 0);
|
|
87
|
-
runtimeInstance =
|
|
88
|
-
stackInstance,
|
|
92
|
+
runtimeInstance = new SqliteRuntimeImpl({
|
|
89
93
|
context,
|
|
94
|
+
adapter: stackInstance.adapter,
|
|
90
95
|
driver,
|
|
91
96
|
...ifDefined("verifyMarker", options.verifyMarker),
|
|
92
|
-
...
|
|
97
|
+
...ifDefined("middleware", options.middleware)
|
|
93
98
|
});
|
|
94
99
|
return runtimeInstance;
|
|
95
100
|
};
|
|
@@ -106,6 +111,7 @@ function sqlite(options) {
|
|
|
106
111
|
}
|
|
107
112
|
}
|
|
108
113
|
})),
|
|
114
|
+
enums,
|
|
109
115
|
raw: rawSqlTag,
|
|
110
116
|
context,
|
|
111
117
|
stack,
|
|
@@ -146,7 +152,8 @@ function sqlite(options) {
|
|
|
146
152
|
}));
|
|
147
153
|
return fn(Object.assign(castAs(Object.create(txCtx)), {
|
|
148
154
|
sql: txSql,
|
|
149
|
-
orm: txOrm
|
|
155
|
+
orm: txOrm,
|
|
156
|
+
enums
|
|
150
157
|
}));
|
|
151
158
|
});
|
|
152
159
|
},
|
|
@@ -165,6 +172,6 @@ function sqlite(options) {
|
|
|
165
172
|
};
|
|
166
173
|
}
|
|
167
174
|
//#endregion
|
|
168
|
-
export { sqlite as default };
|
|
175
|
+
export { SqliteRuntimeImpl, sqlite as default };
|
|
169
176
|
|
|
170
177
|
//# sourceMappingURL=runtime.mjs.map
|
package/dist/runtime.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.mjs","names":["sql","sqlBuilder","ormBuilder"],"sources":["../src/runtime/binding.ts","../src/runtime/sqlite.ts"],"sourcesContent":["import type { SqliteBinding } from '@prisma-next/driver-sqlite/runtime';\n\nexport type SqliteBindingInput = { readonly path: string };\n\nexport function resolveSqliteBinding(input: SqliteBindingInput): SqliteBinding {\n return { kind: 'path', path: input.path };\n}\n\nexport function resolveOptionalSqliteBinding(options: {\n readonly path?: string;\n}): SqliteBinding | undefined {\n if (options.path === undefined) {\n return undefined;\n }\n return { kind: 'path', path: options.path };\n}\n","import sqliteAdapter from '@prisma-next/adapter-sqlite/runtime';\nimport type { Contract } from '@prisma-next/contract/types';\nimport type { SqliteBinding } from '@prisma-next/driver-sqlite/runtime';\nimport sqliteDriver from '@prisma-next/driver-sqlite/runtime';\nimport { SqlContractSerializer } from '@prisma-next/family-sql/ir';\nimport { instantiateExecutionStack } from '@prisma-next/framework-components/execution';\nimport { UNBOUND_NAMESPACE_ID } from '@prisma-next/framework-components/ir';\nimport { sql as sqlBuilder } from '@prisma-next/sql-builder/runtime';\nimport type { Db } from '@prisma-next/sql-builder/types';\nimport type { ExtractCodecTypes, SqlStorage } from '@prisma-next/sql-contract/types';\nimport { orm as ormBuilder } from '@prisma-next/sql-orm-client';\nimport type { CodecTypesBase, RawSqlTag } from '@prisma-next/sql-relational-core/expression';\nimport { createRawSql } from '@prisma-next/sql-relational-core/expression';\nimport type { SqlQueryPlan } from '@prisma-next/sql-relational-core/plan';\nimport type {\n BindSiteParams,\n Declaration,\n ExecutionContext,\n ParamsFromDeclaration,\n PreparedStatement,\n Runtime,\n SqlExecutionStackWithDriver,\n SqlMiddleware,\n SqlRuntimeExtensionDescriptor,\n TransactionContext,\n VerifyMarkerOption,\n} from '@prisma-next/sql-runtime';\nimport {\n createExecutionContext,\n createRuntime,\n createSqlExecutionStack,\n withTransaction,\n} from '@prisma-next/sql-runtime';\nimport sqliteTarget from '@prisma-next/target-sqlite/runtime';\nimport { blindCast, castAs } from '@prisma-next/utils/casts';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport { resolveOptionalSqliteBinding, resolveSqliteBinding } from './binding';\n\nexport type SqliteTargetId = 'sqlite';\ntype OrmClient<TContract extends Contract<SqlStorage>> = ReturnType<typeof ormBuilder<TContract>>;\n\ntype UnboundSql<TContract extends Contract<SqlStorage>> =\n Db<TContract>[typeof UNBOUND_NAMESPACE_ID];\ntype UnboundOrm<TContract extends Contract<SqlStorage>> =\n OrmClient<TContract>[typeof UNBOUND_NAMESPACE_ID];\n\nfunction unboundNamespace<T>(builderOutput: { readonly [UNBOUND_NAMESPACE_ID]?: unknown }): T {\n return blindCast<T, 'the unbound namespace always exists on a sqlite builder output'>(\n builderOutput[UNBOUND_NAMESPACE_ID],\n );\n}\n\nexport interface SqliteTransactionContext<TContract extends Contract<SqlStorage>>\n extends TransactionContext {\n readonly sql: UnboundSql<TContract>;\n readonly orm: UnboundOrm<TContract>;\n}\n\nexport interface SqliteClient<TContract extends Contract<SqlStorage>> {\n readonly sql: UnboundSql<TContract>;\n readonly orm: UnboundOrm<TContract>;\n readonly raw: RawSqlTag;\n readonly context: ExecutionContext<TContract>;\n readonly stack: SqlExecutionStackWithDriver<SqliteTargetId>;\n connect(bindingInput?: { readonly path: string }): Promise<Runtime>;\n runtime(): Runtime;\n prepare<\n D extends Declaration<CT>,\n Row,\n CT extends CodecTypesBase = ExtractCodecTypes<TContract> & CodecTypesBase,\n >(\n declaration: D,\n callback: (sql: UnboundSql<TContract>, params: BindSiteParams<D>) => SqlQueryPlan<Row>,\n ): Promise<PreparedStatement<ParamsFromDeclaration<D, CT>, Row>>;\n transaction<R>(fn: (tx: SqliteTransactionContext<TContract>) => PromiseLike<R>): Promise<R>;\n close(): Promise<void>;\n [Symbol.asyncDispose](): Promise<void>;\n}\n\nexport interface SqliteOptionsBase {\n readonly extensions?: readonly SqlRuntimeExtensionDescriptor<SqliteTargetId>[];\n readonly middleware?: readonly SqlMiddleware[];\n readonly verifyMarker?: VerifyMarkerOption;\n}\n\nexport type SqliteOptionsWithContract<TContract extends Contract<SqlStorage>> = {\n readonly path?: string;\n} & SqliteOptionsBase & {\n readonly contract: TContract;\n readonly contractJson?: never;\n };\n\nexport type SqliteOptionsWithContractJson<TContract extends Contract<SqlStorage>> = {\n readonly path?: string;\n readonly _contract?: TContract;\n} & SqliteOptionsBase & {\n readonly contractJson: unknown;\n readonly contract?: never;\n };\n\nexport type SqliteOptions<TContract extends Contract<SqlStorage>> =\n | SqliteOptionsWithContract<TContract>\n | SqliteOptionsWithContractJson<TContract>;\n\nfunction resolveContract<TContract extends Contract<SqlStorage>>(\n options: SqliteOptions<TContract>,\n): TContract {\n const contractInput =\n 'contractJson' in options && options.contractJson !== undefined\n ? options.contractJson\n : (options as SqliteOptionsWithContract<TContract>).contract;\n return new SqlContractSerializer().deserializeContract(contractInput) as TContract;\n}\n\nexport default function sqlite<TContract extends Contract<SqlStorage>>(\n options: SqliteOptionsWithContract<TContract>,\n): SqliteClient<TContract>;\nexport default function sqlite<TContract extends Contract<SqlStorage>>(\n options: SqliteOptionsWithContractJson<TContract>,\n): SqliteClient<TContract>;\nexport default function sqlite<TContract extends Contract<SqlStorage>>(\n options: SqliteOptions<TContract>,\n): SqliteClient<TContract> {\n const contract = resolveContract(options);\n let binding = resolveOptionalSqliteBinding(options);\n const stack = createSqlExecutionStack({\n target: sqliteTarget,\n adapter: sqliteAdapter,\n driver: sqliteDriver,\n extensionPacks: options.extensions ?? [],\n });\n\n const context = createExecutionContext({\n contract,\n stack,\n });\n\n const rawCodecInferer = stack.adapter.rawCodecInferer;\n const rawSqlTag: RawSqlTag = createRawSql(rawCodecInferer);\n\n const sql: UnboundSql<TContract> = unboundNamespace(\n sqlBuilder<TContract>({ context, rawCodecInferer }),\n );\n let runtimeInstance: Runtime | undefined;\n let runtimeDriver: { connect(binding: unknown): Promise<void> } | undefined;\n let driverConnected = false;\n let connectPromise: Promise<void> | undefined;\n let closePromise: Promise<void> | undefined;\n let backgroundConnectError: unknown;\n let closed = false;\n let ownedDispose: (() => Promise<void>) | undefined;\n\n const connectDriver = async (resolvedBinding: SqliteBinding): Promise<void> => {\n if (driverConnected) return;\n if (!runtimeDriver) throw new Error('SQLite runtime driver missing');\n if (connectPromise) return connectPromise;\n connectPromise = runtimeDriver\n .connect(resolvedBinding)\n .then(() => {\n driverConnected = true;\n })\n .catch((err) => {\n backgroundConnectError = err;\n connectPromise = undefined;\n throw err;\n });\n return connectPromise;\n };\n\n const getRuntime = (): Runtime => {\n if (closed) {\n throw new Error('SQLite client is closed');\n }\n\n if (backgroundConnectError !== undefined) {\n throw backgroundConnectError;\n }\n\n if (runtimeInstance) {\n return runtimeInstance;\n }\n\n const stackInstance = instantiateExecutionStack(stack);\n const driverDescriptor = stack.driver;\n if (!driverDescriptor) {\n throw new Error('Driver descriptor missing from execution stack');\n }\n\n const driver = driverDescriptor.create();\n ownedDispose = () => driver.close();\n runtimeDriver = driver;\n if (binding !== undefined) {\n void connectDriver(binding).catch(() => undefined);\n }\n\n runtimeInstance = createRuntime({\n stackInstance,\n context,\n driver,\n ...ifDefined('verifyMarker', options.verifyMarker),\n ...(options.middleware ? { middleware: options.middleware } : {}),\n });\n\n return runtimeInstance;\n };\n\n const orm: UnboundOrm<TContract> = unboundNamespace(\n ormBuilder({\n context,\n runtime: {\n execute(plan) {\n return getRuntime().execute(plan);\n },\n connection() {\n return getRuntime().connection();\n },\n },\n }),\n );\n\n return {\n sql,\n orm,\n raw: rawSqlTag,\n context,\n stack,\n async connect(bindingInput) {\n if (closed) {\n throw new Error('SQLite client is closed');\n }\n\n if (driverConnected || connectPromise) {\n throw new Error('SQLite client already connected');\n }\n\n backgroundConnectError = undefined;\n\n if (bindingInput !== undefined) {\n binding = resolveSqliteBinding(bindingInput);\n }\n\n if (binding === undefined) {\n throw new Error(\n 'SQLite binding not configured. Pass path to sqlite(...) or call db.connect({ path }).',\n );\n }\n\n const runtime = getRuntime();\n if (driverConnected) {\n return runtime;\n }\n\n await connectDriver(binding);\n return runtime;\n },\n runtime() {\n return getRuntime();\n },\n prepare<\n D extends Declaration<CT>,\n Row,\n CT extends CodecTypesBase = ExtractCodecTypes<TContract> & CodecTypesBase,\n >(\n declaration: D,\n callback: (sql: UnboundSql<TContract>, params: BindSiteParams<D>) => SqlQueryPlan<Row>,\n ): Promise<PreparedStatement<ParamsFromDeclaration<D, CT>, Row>> {\n return getRuntime().prepare<D, Row, CT>(declaration, (params) => callback(sql, params));\n },\n\n transaction<R>(fn: (tx: SqliteTransactionContext<TContract>) => PromiseLike<R>): Promise<R> {\n let runtime: ReturnType<typeof getRuntime>;\n try {\n runtime = getRuntime();\n } catch (err) {\n return Promise.reject(err);\n }\n return withTransaction(runtime, (txCtx) => {\n const txSql: UnboundSql<TContract> = unboundNamespace(\n sqlBuilder<TContract>({\n context,\n rawCodecInferer,\n }),\n );\n\n const txOrm: UnboundOrm<TContract> = unboundNamespace(\n ormBuilder({\n runtime: {\n execute(plan) {\n return txCtx.execute(plan);\n },\n },\n context,\n }),\n );\n\n // Use `txCtx` as the prototype instead of spreading it so that live\n // accessors (notably the `invalidated` getter, which reads a closure\n // variable in `withTransaction`) remain wired to the original object.\n // Spreading would evaluate the getter once and freeze its value.\n const tx: SqliteTransactionContext<TContract> = Object.assign(\n castAs<TransactionContext>(Object.create(txCtx)),\n { sql: txSql, orm: txOrm },\n );\n\n return fn(tx);\n });\n },\n\n close(): Promise<void> {\n if (closePromise) return closePromise;\n closed = true;\n closePromise = (async () => {\n await connectPromise?.catch(() => undefined);\n await ownedDispose?.();\n })();\n return closePromise;\n },\n\n [Symbol.asyncDispose](): Promise<void> {\n return this.close();\n },\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime.mjs","names":["sql","sqlBuilder","ormBuilder"],"sources":["../src/runtime/binding.ts","../src/runtime/sqlite-runtime.ts","../src/runtime/sqlite.ts"],"sourcesContent":["import type { SqliteBinding } from '@prisma-next/driver-sqlite/runtime';\n\nexport type SqliteBindingInput = { readonly path: string };\n\nexport function resolveSqliteBinding(input: SqliteBindingInput): SqliteBinding {\n return { kind: 'path', path: input.path };\n}\n\nexport function resolveOptionalSqliteBinding(options: {\n readonly path?: string;\n}): SqliteBinding | undefined {\n if (options.path === undefined) {\n return undefined;\n }\n return { kind: 'path', path: options.path };\n}\n","import type { Contract } from '@prisma-next/contract/types';\nimport type { SqlStorage } from '@prisma-next/sql-contract/types';\nimport { type Runtime, SqlRuntimeBase } from '@prisma-next/sql-runtime';\n\n/**\n * The SQLite runtime interface. App code depends on this — `sqlite()` returns it\n * and `Runtime` (the common interface) is the everyday parameter type.\n *\n * `SqliteRuntimeImpl` is the implementing class. It is exported so that other\n * extensions can subclass it; app code never references it directly.\n */\nexport interface SqliteRuntime extends Runtime {}\n\nexport class SqliteRuntimeImpl<\n TContract extends Contract<SqlStorage> = Contract<SqlStorage>,\n> extends SqlRuntimeBase<TContract> {}\n","import sqliteAdapter from '@prisma-next/adapter-sqlite/runtime';\nimport { buildNamespacedEnums, type NamespacedEnums } from '@prisma-next/contract/enum-accessor';\nimport type { Contract } from '@prisma-next/contract/types';\nimport type { SqliteBinding } from '@prisma-next/driver-sqlite/runtime';\nimport sqliteDriver from '@prisma-next/driver-sqlite/runtime';\nimport { SqlContractSerializer } from '@prisma-next/family-sql/ir';\nimport { instantiateExecutionStack } from '@prisma-next/framework-components/execution';\nimport { UNBOUND_NAMESPACE_ID } from '@prisma-next/framework-components/ir';\nimport { sql as sqlBuilder } from '@prisma-next/sql-builder/runtime';\nimport type { Db } from '@prisma-next/sql-builder/types';\nimport type { ExtractCodecTypes, SqlStorage } from '@prisma-next/sql-contract/types';\nimport { orm as ormBuilder } from '@prisma-next/sql-orm-client';\nimport type { CodecTypesBase, RawSqlTag } from '@prisma-next/sql-relational-core/expression';\nimport { createRawSql } from '@prisma-next/sql-relational-core/expression';\nimport type { SqlQueryPlan } from '@prisma-next/sql-relational-core/plan';\nimport type {\n BindSiteParams,\n Declaration,\n ExecutionContext,\n ParamsFromDeclaration,\n PreparedStatement,\n Runtime,\n SqlExecutionStackWithDriver,\n SqlMiddleware,\n SqlRuntimeExtensionDescriptor,\n TransactionContext,\n VerifyMarkerOption,\n} from '@prisma-next/sql-runtime';\nimport {\n createExecutionContext,\n createSqlExecutionStack,\n withTransaction,\n} from '@prisma-next/sql-runtime';\nimport sqliteTarget from '@prisma-next/target-sqlite/runtime';\nimport { blindCast, castAs } from '@prisma-next/utils/casts';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport { resolveOptionalSqliteBinding, resolveSqliteBinding } from './binding';\nimport { SqliteRuntimeImpl } from './sqlite-runtime';\n\nexport type SqliteTargetId = 'sqlite';\ntype OrmClient<TContract extends Contract<SqlStorage>> = ReturnType<typeof ormBuilder<TContract>>;\n\ntype UnboundSql<TContract extends Contract<SqlStorage>> =\n Db<TContract>[typeof UNBOUND_NAMESPACE_ID];\ntype UnboundOrm<TContract extends Contract<SqlStorage>> =\n OrmClient<TContract>[typeof UNBOUND_NAMESPACE_ID];\ntype UnboundEnums<TContract extends Contract<SqlStorage>> =\n NamespacedEnums<TContract>[typeof UNBOUND_NAMESPACE_ID];\n\nfunction unboundNamespace<T>(builderOutput: { readonly [UNBOUND_NAMESPACE_ID]?: unknown }): T {\n return blindCast<T, 'the unbound namespace always exists on a sqlite builder output'>(\n builderOutput[UNBOUND_NAMESPACE_ID],\n );\n}\n\nexport interface SqliteTransactionContext<TContract extends Contract<SqlStorage>>\n extends TransactionContext {\n readonly sql: UnboundSql<TContract>;\n readonly orm: UnboundOrm<TContract>;\n readonly enums: UnboundEnums<TContract>;\n}\n\nexport interface SqliteClient<TContract extends Contract<SqlStorage>> {\n readonly sql: UnboundSql<TContract>;\n readonly orm: UnboundOrm<TContract>;\n readonly enums: UnboundEnums<TContract>;\n readonly raw: RawSqlTag;\n readonly context: ExecutionContext<TContract>;\n readonly stack: SqlExecutionStackWithDriver<SqliteTargetId>;\n connect(bindingInput?: { readonly path: string }): Promise<Runtime>;\n runtime(): Runtime;\n prepare<\n D extends Declaration<CT>,\n Row,\n CT extends CodecTypesBase = ExtractCodecTypes<TContract> & CodecTypesBase,\n >(\n declaration: D,\n callback: (sql: UnboundSql<TContract>, params: BindSiteParams<D>) => SqlQueryPlan<Row>,\n ): Promise<PreparedStatement<ParamsFromDeclaration<D, CT>, Row>>;\n transaction<R>(fn: (tx: SqliteTransactionContext<TContract>) => PromiseLike<R>): Promise<R>;\n close(): Promise<void>;\n [Symbol.asyncDispose](): Promise<void>;\n}\n\nexport interface SqliteOptionsBase {\n readonly extensions?: readonly SqlRuntimeExtensionDescriptor<SqliteTargetId>[];\n readonly middleware?: readonly SqlMiddleware[];\n readonly verifyMarker?: VerifyMarkerOption;\n}\n\nexport type SqliteOptionsWithContract<TContract extends Contract<SqlStorage>> = {\n readonly path?: string;\n} & SqliteOptionsBase & {\n readonly contract: TContract;\n readonly contractJson?: never;\n };\n\nexport type SqliteOptionsWithContractJson<TContract extends Contract<SqlStorage>> = {\n readonly path?: string;\n readonly _contract?: TContract;\n} & SqliteOptionsBase & {\n readonly contractJson: unknown;\n readonly contract?: never;\n };\n\nexport type SqliteOptions<TContract extends Contract<SqlStorage>> =\n | SqliteOptionsWithContract<TContract>\n | SqliteOptionsWithContractJson<TContract>;\n\nfunction resolveContract<TContract extends Contract<SqlStorage>>(\n options: SqliteOptions<TContract>,\n): TContract {\n const contractInput =\n 'contractJson' in options && options.contractJson !== undefined\n ? options.contractJson\n : (options as SqliteOptionsWithContract<TContract>).contract;\n return new SqlContractSerializer().deserializeContract(contractInput) as TContract;\n}\n\nexport default function sqlite<TContract extends Contract<SqlStorage>>(\n options: SqliteOptionsWithContract<TContract>,\n): SqliteClient<TContract>;\nexport default function sqlite<TContract extends Contract<SqlStorage>>(\n options: SqliteOptionsWithContractJson<TContract>,\n): SqliteClient<TContract>;\nexport default function sqlite<TContract extends Contract<SqlStorage>>(\n options: SqliteOptions<TContract>,\n): SqliteClient<TContract> {\n const contract = resolveContract(options);\n let binding = resolveOptionalSqliteBinding(options);\n const stack = createSqlExecutionStack({\n target: sqliteTarget,\n adapter: sqliteAdapter,\n driver: sqliteDriver,\n extensionPacks: options.extensions ?? [],\n });\n\n const context = createExecutionContext({\n contract,\n stack,\n });\n\n const rawCodecInferer = stack.adapter.rawCodecInferer;\n const rawSqlTag: RawSqlTag = createRawSql(rawCodecInferer);\n\n const sql: UnboundSql<TContract> = unboundNamespace(\n sqlBuilder<TContract>({ context, rawCodecInferer }),\n );\n const enums: UnboundEnums<TContract> = unboundNamespace(\n Object.freeze(buildNamespacedEnums(contract.domain)),\n );\n let runtimeInstance: Runtime | undefined;\n let runtimeDriver: { connect(binding: unknown): Promise<void> } | undefined;\n let driverConnected = false;\n let connectPromise: Promise<void> | undefined;\n let closePromise: Promise<void> | undefined;\n let backgroundConnectError: unknown;\n let closed = false;\n let ownedDispose: (() => Promise<void>) | undefined;\n\n const connectDriver = async (resolvedBinding: SqliteBinding): Promise<void> => {\n if (driverConnected) return;\n if (!runtimeDriver) throw new Error('SQLite runtime driver missing');\n if (connectPromise) return connectPromise;\n connectPromise = runtimeDriver\n .connect(resolvedBinding)\n .then(() => {\n driverConnected = true;\n })\n .catch((err) => {\n backgroundConnectError = err;\n connectPromise = undefined;\n throw err;\n });\n return connectPromise;\n };\n\n const getRuntime = (): Runtime => {\n if (closed) {\n throw new Error('SQLite client is closed');\n }\n\n if (backgroundConnectError !== undefined) {\n throw backgroundConnectError;\n }\n\n if (runtimeInstance) {\n return runtimeInstance;\n }\n\n const stackInstance = instantiateExecutionStack(stack);\n const driverDescriptor = stack.driver;\n if (!driverDescriptor) {\n throw new Error('Driver descriptor missing from execution stack');\n }\n\n const driver = driverDescriptor.create();\n ownedDispose = () => driver.close();\n runtimeDriver = driver;\n if (binding !== undefined) {\n void connectDriver(binding).catch(() => undefined);\n }\n\n runtimeInstance = new SqliteRuntimeImpl({\n context,\n adapter: stackInstance.adapter,\n driver,\n ...ifDefined('verifyMarker', options.verifyMarker),\n ...ifDefined('middleware', options.middleware),\n });\n\n return runtimeInstance;\n };\n\n const orm: UnboundOrm<TContract> = unboundNamespace(\n ormBuilder({\n context,\n runtime: {\n execute(plan) {\n return getRuntime().execute(plan);\n },\n connection() {\n return getRuntime().connection();\n },\n },\n }),\n );\n\n return {\n sql,\n orm,\n enums,\n raw: rawSqlTag,\n context,\n stack,\n async connect(bindingInput) {\n if (closed) {\n throw new Error('SQLite client is closed');\n }\n\n if (driverConnected || connectPromise) {\n throw new Error('SQLite client already connected');\n }\n\n backgroundConnectError = undefined;\n\n if (bindingInput !== undefined) {\n binding = resolveSqliteBinding(bindingInput);\n }\n\n if (binding === undefined) {\n throw new Error(\n 'SQLite binding not configured. Pass path to sqlite(...) or call db.connect({ path }).',\n );\n }\n\n const runtime = getRuntime();\n if (driverConnected) {\n return runtime;\n }\n\n await connectDriver(binding);\n return runtime;\n },\n runtime() {\n return getRuntime();\n },\n prepare<\n D extends Declaration<CT>,\n Row,\n CT extends CodecTypesBase = ExtractCodecTypes<TContract> & CodecTypesBase,\n >(\n declaration: D,\n callback: (sql: UnboundSql<TContract>, params: BindSiteParams<D>) => SqlQueryPlan<Row>,\n ): Promise<PreparedStatement<ParamsFromDeclaration<D, CT>, Row>> {\n return getRuntime().prepare<D, Row, CT>(declaration, (params) => callback(sql, params));\n },\n\n transaction<R>(fn: (tx: SqliteTransactionContext<TContract>) => PromiseLike<R>): Promise<R> {\n let runtime: ReturnType<typeof getRuntime>;\n try {\n runtime = getRuntime();\n } catch (err) {\n return Promise.reject(err);\n }\n return withTransaction(runtime, (txCtx) => {\n const txSql: UnboundSql<TContract> = unboundNamespace(\n sqlBuilder<TContract>({\n context,\n rawCodecInferer,\n }),\n );\n\n const txOrm: UnboundOrm<TContract> = unboundNamespace(\n ormBuilder({\n runtime: {\n execute(plan) {\n return txCtx.execute(plan);\n },\n },\n context,\n }),\n );\n\n // Use `txCtx` as the prototype instead of spreading it so that live\n // accessors (notably the `invalidated` getter, which reads a closure\n // variable in `withTransaction`) remain wired to the original object.\n // Spreading would evaluate the getter once and freeze its value.\n const tx: SqliteTransactionContext<TContract> = Object.assign(\n castAs<TransactionContext>(Object.create(txCtx)),\n { sql: txSql, orm: txOrm, enums },\n );\n\n return fn(tx);\n });\n },\n\n close(): Promise<void> {\n if (closePromise) return closePromise;\n closed = true;\n closePromise = (async () => {\n await connectPromise?.catch(() => undefined);\n await ownedDispose?.();\n })();\n return closePromise;\n },\n\n [Symbol.asyncDispose](): Promise<void> {\n return this.close();\n },\n };\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma-next/sqlite",
|
|
3
|
-
"version": "0.13.0-dev.
|
|
3
|
+
"version": "0.13.0-dev.21",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
7
7
|
"description": "One-liner lazy SQLite client composition for Prisma Next",
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@prisma-next/adapter-sqlite": "0.13.0-dev.
|
|
10
|
-
"@prisma-next/cli": "0.13.0-dev.
|
|
11
|
-
"@prisma-next/config": "0.13.0-dev.
|
|
12
|
-
"@prisma-next/contract": "0.13.0-dev.
|
|
13
|
-
"@prisma-next/driver-sqlite": "0.13.0-dev.
|
|
14
|
-
"@prisma-next/family-sql": "0.13.0-dev.
|
|
15
|
-
"@prisma-next/framework-components": "0.13.0-dev.
|
|
16
|
-
"@prisma-next/sql-builder": "0.13.0-dev.
|
|
17
|
-
"@prisma-next/sql-contract": "0.13.0-dev.
|
|
18
|
-
"@prisma-next/sql-contract-psl": "0.13.0-dev.
|
|
19
|
-
"@prisma-next/sql-contract-ts": "0.13.0-dev.
|
|
20
|
-
"@prisma-next/sql-orm-client": "0.13.0-dev.
|
|
21
|
-
"@prisma-next/sql-relational-core": "0.13.0-dev.
|
|
22
|
-
"@prisma-next/sql-runtime": "0.13.0-dev.
|
|
23
|
-
"@prisma-next/target-sqlite": "0.13.0-dev.
|
|
24
|
-
"@prisma-next/utils": "0.13.0-dev.
|
|
9
|
+
"@prisma-next/adapter-sqlite": "0.13.0-dev.21",
|
|
10
|
+
"@prisma-next/cli": "0.13.0-dev.21",
|
|
11
|
+
"@prisma-next/config": "0.13.0-dev.21",
|
|
12
|
+
"@prisma-next/contract": "0.13.0-dev.21",
|
|
13
|
+
"@prisma-next/driver-sqlite": "0.13.0-dev.21",
|
|
14
|
+
"@prisma-next/family-sql": "0.13.0-dev.21",
|
|
15
|
+
"@prisma-next/framework-components": "0.13.0-dev.21",
|
|
16
|
+
"@prisma-next/sql-builder": "0.13.0-dev.21",
|
|
17
|
+
"@prisma-next/sql-contract": "0.13.0-dev.21",
|
|
18
|
+
"@prisma-next/sql-contract-psl": "0.13.0-dev.21",
|
|
19
|
+
"@prisma-next/sql-contract-ts": "0.13.0-dev.21",
|
|
20
|
+
"@prisma-next/sql-orm-client": "0.13.0-dev.21",
|
|
21
|
+
"@prisma-next/sql-relational-core": "0.13.0-dev.21",
|
|
22
|
+
"@prisma-next/sql-runtime": "0.13.0-dev.21",
|
|
23
|
+
"@prisma-next/target-sqlite": "0.13.0-dev.21",
|
|
24
|
+
"@prisma-next/utils": "0.13.0-dev.21",
|
|
25
25
|
"pathe": "^2.0.3"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@prisma-next/test-utils": "0.13.0-dev.
|
|
29
|
-
"@prisma-next/tsconfig": "0.13.0-dev.
|
|
30
|
-
"@prisma-next/tsdown": "0.13.0-dev.
|
|
28
|
+
"@prisma-next/test-utils": "0.13.0-dev.21",
|
|
29
|
+
"@prisma-next/tsconfig": "0.13.0-dev.21",
|
|
30
|
+
"@prisma-next/tsdown": "0.13.0-dev.21",
|
|
31
31
|
"tsdown": "0.22.1",
|
|
32
32
|
"typescript": "5.9.3",
|
|
33
33
|
"vitest": "4.1.8"
|
package/src/exports/runtime.ts
CHANGED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Contract } from '@prisma-next/contract/types';
|
|
2
|
+
import type { SqlStorage } from '@prisma-next/sql-contract/types';
|
|
3
|
+
import { type Runtime, SqlRuntimeBase } from '@prisma-next/sql-runtime';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The SQLite runtime interface. App code depends on this — `sqlite()` returns it
|
|
7
|
+
* and `Runtime` (the common interface) is the everyday parameter type.
|
|
8
|
+
*
|
|
9
|
+
* `SqliteRuntimeImpl` is the implementing class. It is exported so that other
|
|
10
|
+
* extensions can subclass it; app code never references it directly.
|
|
11
|
+
*/
|
|
12
|
+
export interface SqliteRuntime extends Runtime {}
|
|
13
|
+
|
|
14
|
+
export class SqliteRuntimeImpl<
|
|
15
|
+
TContract extends Contract<SqlStorage> = Contract<SqlStorage>,
|
|
16
|
+
> extends SqlRuntimeBase<TContract> {}
|
package/src/runtime/sqlite.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import sqliteAdapter from '@prisma-next/adapter-sqlite/runtime';
|
|
2
|
+
import { buildNamespacedEnums, type NamespacedEnums } from '@prisma-next/contract/enum-accessor';
|
|
2
3
|
import type { Contract } from '@prisma-next/contract/types';
|
|
3
4
|
import type { SqliteBinding } from '@prisma-next/driver-sqlite/runtime';
|
|
4
5
|
import sqliteDriver from '@prisma-next/driver-sqlite/runtime';
|
|
@@ -27,7 +28,6 @@ import type {
|
|
|
27
28
|
} from '@prisma-next/sql-runtime';
|
|
28
29
|
import {
|
|
29
30
|
createExecutionContext,
|
|
30
|
-
createRuntime,
|
|
31
31
|
createSqlExecutionStack,
|
|
32
32
|
withTransaction,
|
|
33
33
|
} from '@prisma-next/sql-runtime';
|
|
@@ -35,6 +35,7 @@ import sqliteTarget from '@prisma-next/target-sqlite/runtime';
|
|
|
35
35
|
import { blindCast, castAs } from '@prisma-next/utils/casts';
|
|
36
36
|
import { ifDefined } from '@prisma-next/utils/defined';
|
|
37
37
|
import { resolveOptionalSqliteBinding, resolveSqliteBinding } from './binding';
|
|
38
|
+
import { SqliteRuntimeImpl } from './sqlite-runtime';
|
|
38
39
|
|
|
39
40
|
export type SqliteTargetId = 'sqlite';
|
|
40
41
|
type OrmClient<TContract extends Contract<SqlStorage>> = ReturnType<typeof ormBuilder<TContract>>;
|
|
@@ -43,6 +44,8 @@ type UnboundSql<TContract extends Contract<SqlStorage>> =
|
|
|
43
44
|
Db<TContract>[typeof UNBOUND_NAMESPACE_ID];
|
|
44
45
|
type UnboundOrm<TContract extends Contract<SqlStorage>> =
|
|
45
46
|
OrmClient<TContract>[typeof UNBOUND_NAMESPACE_ID];
|
|
47
|
+
type UnboundEnums<TContract extends Contract<SqlStorage>> =
|
|
48
|
+
NamespacedEnums<TContract>[typeof UNBOUND_NAMESPACE_ID];
|
|
46
49
|
|
|
47
50
|
function unboundNamespace<T>(builderOutput: { readonly [UNBOUND_NAMESPACE_ID]?: unknown }): T {
|
|
48
51
|
return blindCast<T, 'the unbound namespace always exists on a sqlite builder output'>(
|
|
@@ -54,11 +57,13 @@ export interface SqliteTransactionContext<TContract extends Contract<SqlStorage>
|
|
|
54
57
|
extends TransactionContext {
|
|
55
58
|
readonly sql: UnboundSql<TContract>;
|
|
56
59
|
readonly orm: UnboundOrm<TContract>;
|
|
60
|
+
readonly enums: UnboundEnums<TContract>;
|
|
57
61
|
}
|
|
58
62
|
|
|
59
63
|
export interface SqliteClient<TContract extends Contract<SqlStorage>> {
|
|
60
64
|
readonly sql: UnboundSql<TContract>;
|
|
61
65
|
readonly orm: UnboundOrm<TContract>;
|
|
66
|
+
readonly enums: UnboundEnums<TContract>;
|
|
62
67
|
readonly raw: RawSqlTag;
|
|
63
68
|
readonly context: ExecutionContext<TContract>;
|
|
64
69
|
readonly stack: SqlExecutionStackWithDriver<SqliteTargetId>;
|
|
@@ -141,6 +146,9 @@ export default function sqlite<TContract extends Contract<SqlStorage>>(
|
|
|
141
146
|
const sql: UnboundSql<TContract> = unboundNamespace(
|
|
142
147
|
sqlBuilder<TContract>({ context, rawCodecInferer }),
|
|
143
148
|
);
|
|
149
|
+
const enums: UnboundEnums<TContract> = unboundNamespace(
|
|
150
|
+
Object.freeze(buildNamespacedEnums(contract.domain)),
|
|
151
|
+
);
|
|
144
152
|
let runtimeInstance: Runtime | undefined;
|
|
145
153
|
let runtimeDriver: { connect(binding: unknown): Promise<void> } | undefined;
|
|
146
154
|
let driverConnected = false;
|
|
@@ -193,12 +201,12 @@ export default function sqlite<TContract extends Contract<SqlStorage>>(
|
|
|
193
201
|
void connectDriver(binding).catch(() => undefined);
|
|
194
202
|
}
|
|
195
203
|
|
|
196
|
-
runtimeInstance =
|
|
197
|
-
stackInstance,
|
|
204
|
+
runtimeInstance = new SqliteRuntimeImpl({
|
|
198
205
|
context,
|
|
206
|
+
adapter: stackInstance.adapter,
|
|
199
207
|
driver,
|
|
200
208
|
...ifDefined('verifyMarker', options.verifyMarker),
|
|
201
|
-
...(
|
|
209
|
+
...ifDefined('middleware', options.middleware),
|
|
202
210
|
});
|
|
203
211
|
|
|
204
212
|
return runtimeInstance;
|
|
@@ -221,6 +229,7 @@ export default function sqlite<TContract extends Contract<SqlStorage>>(
|
|
|
221
229
|
return {
|
|
222
230
|
sql,
|
|
223
231
|
orm,
|
|
232
|
+
enums,
|
|
224
233
|
raw: rawSqlTag,
|
|
225
234
|
context,
|
|
226
235
|
stack,
|
|
@@ -299,7 +308,7 @@ export default function sqlite<TContract extends Contract<SqlStorage>>(
|
|
|
299
308
|
// Spreading would evaluate the getter once and freeze its value.
|
|
300
309
|
const tx: SqliteTransactionContext<TContract> = Object.assign(
|
|
301
310
|
castAs<TransactionContext>(Object.create(txCtx)),
|
|
302
|
-
{ sql: txSql, orm: txOrm },
|
|
311
|
+
{ sql: txSql, orm: txOrm, enums },
|
|
303
312
|
);
|
|
304
313
|
|
|
305
314
|
return fn(tx);
|