refactor(v2): use effect sqlite session storage

This commit is contained in:
Kit Langton 2026-05-20 20:34:02 -04:00
commit dcbd244dd7
7 changed files with 183 additions and 124 deletions

View file

@ -1,7 +1,8 @@
/* oxlint-disable */
import type { MigrationConfig } from "drizzle-orm/migrator"
import type { MigrationConfig, MigrationFromJournalConfig, MigrationsJournal } from "drizzle-orm/migrator"
import { readMigrationFiles } from "drizzle-orm/migrator"
import type { AnyRelations } from "drizzle-orm/relations"
import crypto from "node:crypto"
import { migrate as coreMigrate } from "../sqlite-core/effect/session"
import type { EffectSQLiteDatabase } from "./driver"
@ -12,3 +13,21 @@ export function migrate<TRelations extends AnyRelations>(
const migrations = readMigrationFiles(config)
return coreMigrate(migrations, db.session, config)
}
export function migrateFromJournal<TRelations extends AnyRelations>(
db: EffectSQLiteDatabase<TRelations>,
journal: MigrationsJournal,
config: Omit<MigrationFromJournalConfig, "migrationsJournal"> = {},
) {
return coreMigrate(
journal.map((migration) => ({
sql: migration.sql.split("--> statement-breakpoint"),
bps: true,
folderMillis: migration.timestamp,
hash: crypto.createHash("sha256").update(migration.sql).digest("hex"),
name: migration.name,
})),
db.session,
{ migrationsFolder: "", migrationsTable: config.migrationsTable },
)
}

View file

@ -1,6 +1,6 @@
export { EffectLogger } from "drizzle-orm/effect-core"
export * from "./effect-sqlite/driver"
export * from "./effect-sqlite/session"
export { migrate } from "./effect-sqlite/migrator"
export { migrate, migrateFromJournal } from "./effect-sqlite/migrator"
export * as EffectDrizzleSqlite from "."