@yielded/auth-persistence-drizzle 0.1.0-beta.26 → 0.1.0-beta.27
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.
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { DatabaseValue } from "./sqlite-do-database.mjs";
|
|
2
2
|
import { AnyRelations } from "drizzle-orm";
|
|
3
|
-
import { EffectMysql2Database } from "drizzle-orm/effect-mysql2";
|
|
4
3
|
import { EffectSQLiteD1Database } from "drizzle-orm/effect-d1";
|
|
5
4
|
import { EffectLibsqlDatabase } from "drizzle-orm/effect-libsql";
|
|
5
|
+
import { EffectMysql2Database } from "drizzle-orm/effect-mysql2";
|
|
6
6
|
import { EffectPgDatabase } from "drizzle-orm/effect-pglite";
|
|
7
7
|
import { EffectPgDatabase as EffectPgDatabase$1 } from "drizzle-orm/effect-postgres";
|
|
8
8
|
import { EffectSQLiteBunDatabase } from "drizzle-orm/effect-sqlite-bun";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PersistenceMappingError } from "@yielded/auth-persistence/Adapter";
|
|
2
2
|
import { Context, Effect, Option } from "effect";
|
|
3
|
-
import { EffectMysql2Transaction } from "drizzle-orm/effect-mysql2";
|
|
3
|
+
import { EffectMysql2Transaction } from "drizzle-orm/effect-mysql2/session";
|
|
4
4
|
import { makeWithTransaction } from "effect/sql/SqlClient";
|
|
5
5
|
//#region src/drizzle/transaction-mysql.ts
|
|
6
6
|
var CurrentMysqlTransaction = class extends Context.Service()("@yielded/auth-persistence-drizzle/CurrentMysqlTransaction") {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-mysql.mjs","names":[],"sources":["../../src/drizzle/transaction-mysql.ts"],"sourcesContent":["/* oxlint-disable no-explicit-any -- this private acquisition preserves the installed native transaction; public wrappers retain its exact type. */\nimport type { SqlNativeCommit } from \"@yielded/auth-persistence/Adapter\";\nimport { PersistenceMappingError } from \"@yielded/auth-persistence/Adapter\";\nimport { EffectMysql2Transaction } from \"drizzle-orm/effect-mysql2\";\nimport { Context, Effect, Option } from \"effect\";\nimport { makeWithTransaction, type SqlClient } from \"effect/sql/SqlClient\";\nimport type { SqlError } from \"effect/sql/SqlError\";\n\ninterface MysqlTransactionScope {\n readonly client: SqlClient;\n readonly transaction: SqlClient[\"withTransaction\"];\n active: boolean;\n}\n\nclass CurrentMysqlTransaction extends Context.Service<\n CurrentMysqlTransaction,\n MysqlTransactionScope\n>()(\"@yielded/auth-persistence-drizzle/CurrentMysqlTransaction\") {}\n\n/** The native handle reuses the physical owner's exact savepoint closure. */\nexport const makeMysqlTransactionHandle = (\n database: any,\n): Effect.Effect<EffectMysql2Transaction<any, any>> =>\n Effect.map(Effect.serviceOption(CurrentMysqlTransaction), (current) => {\n if (Option.isNone(current))\n throw PersistenceMappingError.make({\n operation: \"transaction\",\n cause: \"MySQL transaction owner is required\",\n });\n const scope = current.value;\n\n class NativeTransaction extends EffectMysql2Transaction<any, any> {\n override transaction<A, E, R>(body: (transaction: any) => Effect.Effect<A, E, R>) {\n return Effect.gen(function* () {\n const current = yield* Effect.serviceOption(CurrentMysqlTransaction);\n\n if (\n !scope.active ||\n Option.isNone(current) ||\n current.value !== scope ||\n scope.client.transactionService !== database.$client.transactionService\n )\n return yield* Effect.die(\n PersistenceMappingError.make({\n operation: \"transaction\",\n cause: \"MySQL transaction handle escaped its owner\",\n }),\n );\n\n return yield* scope.transaction(\n Effect.suspend(() =>\n body(\n new NativeTransaction(database.dialect, database._.session, database._.relations),\n ),\n ),\n );\n });\n }\n }\n\n return new NativeTransaction(database.dialect, database._.session, database._.relations);\n });\n\n/** Locking discovery and later SQL policy predicates must see the same current\n * authority. MySQL's default repeatable-read snapshot is unsuitable after a\n * contended authority lock. Own one connection and one-shot transaction mode;\n * the pooled connection's session default is never changed. */\nconst withMysqlTransaction = <A, E, R, Failure>(\n unavailable: () => Failure,\n client: SqlClient,\n body: (transaction: SqlClient[\"withTransaction\"]) => Effect.Effect<A, E, R>,\n): Effect.Effect<A, E | Failure | SqlError, R> =>\n Effect.scoped(\n Effect.gen(function* () {\n const connection = yield* client.reserve;\n\n // Installed @effect/sql-mysql2 ConnectionImpl exposes its reserved native\n // PoolConnection as `conn`. Capture only its public disposal method; fail\n // before transaction work if an installed driver no longer provides it.\n const nativeConnection = (\n connection as {\n readonly conn?: { readonly destroy?: () => void; readonly release?: () => void };\n }\n ).conn;\n\n if (\n typeof nativeConnection?.destroy !== \"function\" ||\n typeof nativeConnection.release !== \"function\"\n )\n return yield* Effect.fail(unavailable());\n const destroy = nativeConnection.destroy.bind(nativeConnection);\n\n const defaults = yield* connection.executeUnprepared(\n \"select @@session.transaction_isolation as isolation\",\n [],\n undefined,\n );\n\n const isolation = String(defaults[0]?.isolation).replaceAll(\"-\", \" \").toUpperCase();\n\n if (\n ![\"READ UNCOMMITTED\", \"READ COMMITTED\", \"REPEATABLE READ\", \"SERIALIZABLE\"].includes(\n isolation,\n )\n )\n return yield* Effect.fail(unavailable());\n\n const statement = (source: string) =>\n Effect.asVoid(connection.executeUnprepared(source, [], undefined));\n\n const transaction = makeWithTransaction({\n transactionService: client.transactionService,\n spanAttributes: [\n [\"db.system\", \"mysql\"],\n [\"effect_auth.owner\", \"oauth\"],\n ],\n acquireConnection: Effect.succeed([undefined, connection] as const),\n begin: () =>\n statement(\"SET TRANSACTION ISOLATION LEVEL READ COMMITTED\").pipe(\n Effect.andThen(statement(\"BEGIN\")),\n ),\n commit: () => statement(\"COMMIT\"),\n rollback: () => statement(\"ROLLBACK\"),\n savepoint: (_connection, id) => statement(`SAVEPOINT effect_auth_oauth_${id}`),\n releaseSavepoint: (_connection, id) =>\n statement(`RELEASE SAVEPOINT effect_auth_oauth_${id}`),\n rollbackSavepoint: (_connection, id) =>\n statement(`ROLLBACK TO SAVEPOINT effect_auth_oauth_${id}`),\n });\n\n const cleanup = statement(\"ROLLBACK\").pipe(\n Effect.andThen(statement(`SET TRANSACTION ISOLATION LEVEL ${isolation}`)),\n Effect.onExit((exit) => (exit._tag === \"Failure\" ? Effect.sync(destroy) : Effect.void)),\n Effect.orDie,\n );\n\n const scope: MysqlTransactionScope = { client, transaction, active: true };\n\n return yield* transaction(\n Effect.suspend(() => body(transaction)).pipe(\n Effect.provideService(CurrentMysqlTransaction, scope),\n ),\n ).pipe(\n Effect.ensuring(\n Effect.sync(() => {\n scope.active = false;\n }),\n ),\n // BEGIN/COMMIT acknowledgments can be lost after the server acted.\n // Roll back any surviving transaction before resetting one-shot mode.\n // Failed cleanup destroys the connection before its reserve is released;\n // the unknown owner result cannot release a prepared receipt.\n Effect.ensuring(cleanup),\n );\n }),\n );\n\n/** Shared owner capability: one reserved connection, one-shot READ COMMITTED. */\nexport const mysqlNativeCommit = (client: SqlClient): SqlNativeCommit[\"Service\"] => ({\n client,\n withTransaction: (effect) =>\n withMysqlTransaction(\n () =>\n PersistenceMappingError.make({\n operation: \"transaction\",\n cause: \"Unable to acquire MySQL transaction ownership\",\n }),\n client,\n () => effect,\n ),\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transaction-mysql.mjs","names":[],"sources":["../../src/drizzle/transaction-mysql.ts"],"sourcesContent":["/* oxlint-disable no-explicit-any -- this private acquisition preserves the installed native transaction; public wrappers retain its exact type. */\nimport type { SqlNativeCommit } from \"@yielded/auth-persistence/Adapter\";\nimport { PersistenceMappingError } from \"@yielded/auth-persistence/Adapter\";\nimport { EffectMysql2Transaction } from \"drizzle-orm/effect-mysql2/session\";\nimport { Context, Effect, Option } from \"effect\";\nimport { makeWithTransaction, type SqlClient } from \"effect/sql/SqlClient\";\nimport type { SqlError } from \"effect/sql/SqlError\";\n\ninterface MysqlTransactionScope {\n readonly client: SqlClient;\n readonly transaction: SqlClient[\"withTransaction\"];\n active: boolean;\n}\n\nclass CurrentMysqlTransaction extends Context.Service<\n CurrentMysqlTransaction,\n MysqlTransactionScope\n>()(\"@yielded/auth-persistence-drizzle/CurrentMysqlTransaction\") {}\n\n/** The native handle reuses the physical owner's exact savepoint closure. */\nexport const makeMysqlTransactionHandle = (\n database: any,\n): Effect.Effect<EffectMysql2Transaction<any, any>> =>\n Effect.map(Effect.serviceOption(CurrentMysqlTransaction), (current) => {\n if (Option.isNone(current))\n throw PersistenceMappingError.make({\n operation: \"transaction\",\n cause: \"MySQL transaction owner is required\",\n });\n const scope = current.value;\n\n class NativeTransaction extends EffectMysql2Transaction<any, any> {\n override transaction<A, E, R>(body: (transaction: any) => Effect.Effect<A, E, R>) {\n return Effect.gen(function* () {\n const current = yield* Effect.serviceOption(CurrentMysqlTransaction);\n\n if (\n !scope.active ||\n Option.isNone(current) ||\n current.value !== scope ||\n scope.client.transactionService !== database.$client.transactionService\n )\n return yield* Effect.die(\n PersistenceMappingError.make({\n operation: \"transaction\",\n cause: \"MySQL transaction handle escaped its owner\",\n }),\n );\n\n return yield* scope.transaction(\n Effect.suspend(() =>\n body(\n new NativeTransaction(database.dialect, database._.session, database._.relations),\n ),\n ),\n );\n });\n }\n }\n\n return new NativeTransaction(database.dialect, database._.session, database._.relations);\n });\n\n/** Locking discovery and later SQL policy predicates must see the same current\n * authority. MySQL's default repeatable-read snapshot is unsuitable after a\n * contended authority lock. Own one connection and one-shot transaction mode;\n * the pooled connection's session default is never changed. */\nconst withMysqlTransaction = <A, E, R, Failure>(\n unavailable: () => Failure,\n client: SqlClient,\n body: (transaction: SqlClient[\"withTransaction\"]) => Effect.Effect<A, E, R>,\n): Effect.Effect<A, E | Failure | SqlError, R> =>\n Effect.scoped(\n Effect.gen(function* () {\n const connection = yield* client.reserve;\n\n // Installed @effect/sql-mysql2 ConnectionImpl exposes its reserved native\n // PoolConnection as `conn`. Capture only its public disposal method; fail\n // before transaction work if an installed driver no longer provides it.\n const nativeConnection = (\n connection as {\n readonly conn?: { readonly destroy?: () => void; readonly release?: () => void };\n }\n ).conn;\n\n if (\n typeof nativeConnection?.destroy !== \"function\" ||\n typeof nativeConnection.release !== \"function\"\n )\n return yield* Effect.fail(unavailable());\n const destroy = nativeConnection.destroy.bind(nativeConnection);\n\n const defaults = yield* connection.executeUnprepared(\n \"select @@session.transaction_isolation as isolation\",\n [],\n undefined,\n );\n\n const isolation = String(defaults[0]?.isolation).replaceAll(\"-\", \" \").toUpperCase();\n\n if (\n ![\"READ UNCOMMITTED\", \"READ COMMITTED\", \"REPEATABLE READ\", \"SERIALIZABLE\"].includes(\n isolation,\n )\n )\n return yield* Effect.fail(unavailable());\n\n const statement = (source: string) =>\n Effect.asVoid(connection.executeUnprepared(source, [], undefined));\n\n const transaction = makeWithTransaction({\n transactionService: client.transactionService,\n spanAttributes: [\n [\"db.system\", \"mysql\"],\n [\"effect_auth.owner\", \"oauth\"],\n ],\n acquireConnection: Effect.succeed([undefined, connection] as const),\n begin: () =>\n statement(\"SET TRANSACTION ISOLATION LEVEL READ COMMITTED\").pipe(\n Effect.andThen(statement(\"BEGIN\")),\n ),\n commit: () => statement(\"COMMIT\"),\n rollback: () => statement(\"ROLLBACK\"),\n savepoint: (_connection, id) => statement(`SAVEPOINT effect_auth_oauth_${id}`),\n releaseSavepoint: (_connection, id) =>\n statement(`RELEASE SAVEPOINT effect_auth_oauth_${id}`),\n rollbackSavepoint: (_connection, id) =>\n statement(`ROLLBACK TO SAVEPOINT effect_auth_oauth_${id}`),\n });\n\n const cleanup = statement(\"ROLLBACK\").pipe(\n Effect.andThen(statement(`SET TRANSACTION ISOLATION LEVEL ${isolation}`)),\n Effect.onExit((exit) => (exit._tag === \"Failure\" ? Effect.sync(destroy) : Effect.void)),\n Effect.orDie,\n );\n\n const scope: MysqlTransactionScope = { client, transaction, active: true };\n\n return yield* transaction(\n Effect.suspend(() => body(transaction)).pipe(\n Effect.provideService(CurrentMysqlTransaction, scope),\n ),\n ).pipe(\n Effect.ensuring(\n Effect.sync(() => {\n scope.active = false;\n }),\n ),\n // BEGIN/COMMIT acknowledgments can be lost after the server acted.\n // Roll back any surviving transaction before resetting one-shot mode.\n // Failed cleanup destroys the connection before its reserve is released;\n // the unknown owner result cannot release a prepared receipt.\n Effect.ensuring(cleanup),\n );\n }),\n );\n\n/** Shared owner capability: one reserved connection, one-shot READ COMMITTED. */\nexport const mysqlNativeCommit = (client: SqlClient): SqlNativeCommit[\"Service\"] => ({\n client,\n withTransaction: (effect) =>\n withMysqlTransaction(\n () =>\n PersistenceMappingError.make({\n operation: \"transaction\",\n cause: \"Unable to acquire MySQL transaction ownership\",\n }),\n client,\n () => effect,\n ),\n});\n"],"mappings":";;;;;AAcA,IAAM,0BAAN,cAAsC,QAAQ,QAG5C,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC;;AAGlE,MAAa,8BACX,aAEA,OAAO,IAAI,OAAO,cAAc,uBAAuB,IAAI,YAAY;CACrE,IAAI,OAAO,OAAO,OAAO,GACvB,MAAM,wBAAwB,KAAK;EACjC,WAAW;EACX,OAAO;CACT,CAAC;CACH,MAAM,QAAQ,QAAQ;CAEtB,MAAM,0BAA0B,wBAAkC;EAChE,YAA8B,MAAoD;GAChF,OAAO,OAAO,IAAI,aAAa;IAC7B,MAAM,UAAU,OAAO,OAAO,cAAc,uBAAuB;IAEnE,IACE,CAAC,MAAM,UACP,OAAO,OAAO,OAAO,KACrB,QAAQ,UAAU,SAClB,MAAM,OAAO,uBAAuB,SAAS,QAAQ,oBAErD,OAAO,OAAO,OAAO,IACnB,wBAAwB,KAAK;KAC3B,WAAW;KACX,OAAO;IACT,CAAC,CACH;IAEF,OAAO,OAAO,MAAM,YAClB,OAAO,cACL,KACE,IAAI,kBAAkB,SAAS,SAAS,SAAS,EAAE,SAAS,SAAS,EAAE,SAAS,CAClF,CACF,CACF;GACF,CAAC;EACH;CACF;CAEA,OAAO,IAAI,kBAAkB,SAAS,SAAS,SAAS,EAAE,SAAS,SAAS,EAAE,SAAS;AACzF,CAAC;;;;;AAMH,MAAM,wBACJ,aACA,QACA,SAEA,OAAO,OACL,OAAO,IAAI,aAAa;CACtB,MAAM,aAAa,OAAO,OAAO;CAKjC,MAAM,mBACJ,WAGA;CAEF,IACE,OAAO,kBAAkB,YAAY,cACrC,OAAO,iBAAiB,YAAY,YAEpC,OAAO,OAAO,OAAO,KAAK,YAAY,CAAC;CACzC,MAAM,UAAU,iBAAiB,QAAQ,KAAK,gBAAgB;CAE9D,MAAM,WAAW,OAAO,WAAW,kBACjC,uDACA,CAAC,GACD,KAAA,CACF;CAEA,MAAM,YAAY,OAAO,SAAS,EAAE,EAAE,SAAS,CAAC,CAAC,WAAW,KAAK,GAAG,CAAC,CAAC,YAAY;CAElF,IACE,CAAC;EAAC;EAAoB;EAAkB;EAAmB;CAAc,CAAC,CAAC,SACzE,SACF,GAEA,OAAO,OAAO,OAAO,KAAK,YAAY,CAAC;CAEzC,MAAM,aAAa,WACjB,OAAO,OAAO,WAAW,kBAAkB,QAAQ,CAAC,GAAG,KAAA,CAAS,CAAC;CAEnE,MAAM,cAAc,oBAAoB;EACtC,oBAAoB,OAAO;EAC3B,gBAAgB,CACd,CAAC,aAAa,OAAO,GACrB,CAAC,qBAAqB,OAAO,CAC/B;EACA,mBAAmB,OAAO,QAAQ,CAAC,KAAA,GAAW,UAAU,CAAU;EAClE,aACE,UAAU,gDAAgD,CAAC,CAAC,KAC1D,OAAO,QAAQ,UAAU,OAAO,CAAC,CACnC;EACF,cAAc,UAAU,QAAQ;EAChC,gBAAgB,UAAU,UAAU;EACpC,YAAY,aAAa,OAAO,UAAU,+BAA+B,IAAI;EAC7E,mBAAmB,aAAa,OAC9B,UAAU,uCAAuC,IAAI;EACvD,oBAAoB,aAAa,OAC/B,UAAU,2CAA2C,IAAI;CAC7D,CAAC;CAED,MAAM,UAAU,UAAU,UAAU,CAAC,CAAC,KACpC,OAAO,QAAQ,UAAU,mCAAmC,WAAW,CAAC,GACxE,OAAO,QAAQ,SAAU,KAAK,SAAS,YAAY,OAAO,KAAK,OAAO,IAAI,OAAO,IAAK,GACtF,OAAO,KACT;CAEA,MAAM,QAA+B;EAAE;EAAQ;EAAa,QAAQ;CAAK;CAEzE,OAAO,OAAO,YACZ,OAAO,cAAc,KAAK,WAAW,CAAC,CAAC,CAAC,KACtC,OAAO,eAAe,yBAAyB,KAAK,CACtD,CACF,CAAC,CAAC,KACA,OAAO,SACL,OAAO,WAAW;EAChB,MAAM,SAAS;CACjB,CAAC,CACH,GAKA,OAAO,SAAS,OAAO,CACzB;AACF,CAAC,CACH;;AAGF,MAAa,qBAAqB,YAAmD;CACnF;CACA,kBAAkB,WAChB,2BAEI,wBAAwB,KAAK;EAC3B,WAAW;EACX,OAAO;CACT,CAAC,GACH,cACM,MACR;AACJ"}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@yielded/auth-persistence-drizzle","version":"0.1.0-beta.
|
|
1
|
+
{"name":"@yielded/auth-persistence-drizzle","version":"0.1.0-beta.27","dependencies":{"@yielded/auth":"0.1.0-beta.27","@yielded/auth-persistence":"0.1.0-beta.27"},"devDependencies":{"@effect/platform-bun":"4.0.0","@effect/platform-node":"4.0.0","@effect/sql-d1":"4.0.0","@effect/sql-libsql":"4.0.0","@effect/sql-mysql2":"4.0.0","@effect/sql-pg":"4.0.0","@effect/sql-pglite":"4.0.0","@effect/sql-sqlite-bun":"4.0.0","@effect/sql-sqlite-do":"4.0.0","@effect/sql-sqlite-node":"4.0.0","@effect/sql-sqlite-wasm":"4.0.0","@effect/vitest":"4.0.0","@yielded/crypto":"0.1.0-beta.27","drizzle-orm":"1.0.0-rc.4","effect":"4.0.0","typescript":"7.0.2","vite-plus":"0.3.3"},"peerDependencies":{"@effect/sql-d1":">=4.0.0","@effect/sql-libsql":">=4.0.0","@effect/sql-mysql2":">=4.0.0","@effect/sql-pg":">=4.0.0","@effect/sql-pglite":">=4.0.0","@effect/sql-sqlite-bun":">=4.0.0","@effect/sql-sqlite-do":">=4.0.0","@effect/sql-sqlite-node":">=4.0.0","@effect/sql-sqlite-wasm":">=4.0.0","drizzle-orm":">=1.0.0-rc.4","effect":"^4.0.0"},"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./D1":{"types":"./dist/D1.d.mts","default":"./dist/D1.mjs"},"./Libsql":{"types":"./dist/Libsql.d.mts","default":"./dist/Libsql.mjs"},"./Mysql2":{"types":"./dist/Mysql2.d.mts","default":"./dist/Mysql2.mjs"},"./Pglite":{"types":"./dist/Pglite.d.mts","default":"./dist/Pglite.mjs"},"./Postgres":{"types":"./dist/Postgres.d.mts","default":"./dist/Postgres.mjs"},"./SqliteBun":{"types":"./dist/SqliteBun.d.mts","default":"./dist/SqliteBun.mjs"},"./SqliteDo":{"types":"./dist/SqliteDo.d.mts","default":"./dist/SqliteDo.mjs"},"./SqliteNode":{"types":"./dist/SqliteNode.d.mts","default":"./dist/SqliteNode.mjs"},"./SqliteWasm":{"types":"./dist/SqliteWasm.d.mts","default":"./dist/SqliteWasm.mjs"}},"description":"Drizzle persistence, table mappings, and migration adapters for Yielded Auth.","homepage":"https://yielded.dev/auth/","bugs":{"url":"https://github.com/yielded-dev/auth/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/yielded-dev/auth.git","directory":"packages/auth-persistence-drizzle"},"files":["dist","src"],"type":"module","sideEffects":[],"publishConfig":{"access":"public"},"scripts":{"build":"vp pack","check":"tsc --noEmit -p tsconfig.json","test":"vp test --passWithNoTests","example:totp":"bun test/fixtures/totp-sqlite-bun.ts"},"peerDependenciesMeta":{"@effect/sql-d1":{"optional":true},"@effect/sql-libsql":{"optional":true},"@effect/sql-mysql2":{"optional":true},"@effect/sql-pg":{"optional":true},"@effect/sql-pglite":{"optional":true},"@effect/sql-sqlite-bun":{"optional":true},"@effect/sql-sqlite-do":{"optional":true},"@effect/sql-sqlite-node":{"optional":true},"@effect/sql-sqlite-wasm":{"optional":true}}}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* oxlint-disable no-explicit-any -- this private acquisition preserves the installed native transaction; public wrappers retain its exact type. */
|
|
2
2
|
import type { SqlNativeCommit } from "@yielded/auth-persistence/Adapter";
|
|
3
3
|
import { PersistenceMappingError } from "@yielded/auth-persistence/Adapter";
|
|
4
|
-
import { EffectMysql2Transaction } from "drizzle-orm/effect-mysql2";
|
|
4
|
+
import { EffectMysql2Transaction } from "drizzle-orm/effect-mysql2/session";
|
|
5
5
|
import { Context, Effect, Option } from "effect";
|
|
6
6
|
import { makeWithTransaction, type SqlClient } from "effect/sql/SqlClient";
|
|
7
7
|
import type { SqlError } from "effect/sql/SqlError";
|