Skip to content

Commit 5e73cb2

Browse files
beeequeueBrutuZ
authored andcommitted
fix migration, improve code structure in update.ts migration runner
1 parent c66ba94 commit 5e73cb2

4 files changed

Lines changed: 17 additions & 52 deletions

File tree

src/db/db.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { mkdirSync } from "node:fs"
1+
import { existsSync } from "node:fs"
22

33
import { createDatabase } from "db0"
44
import sqlite from "db0/connectors/node-sqlite"
@@ -62,9 +62,6 @@ export interface Database {
6262
relations: Relation
6363
}
6464

65-
// Ensure SQLite directory exists
66-
mkdirSync("./dir", { recursive: true })
67-
6865
const sqliteDb = sqlite(
6966
process.env.VITEST_POOL_ID == null
7067
? { path: `./db/${process.env.NODE_ENV ?? "development"}.sqlite3` }
@@ -79,6 +76,6 @@ export const db = new Kysely<Database>({
7976
export const migrator = new Migrator({
8077
db,
8178
provider: new ActuallyWorkingMigrationProvider(
82-
process.env.NODE_ENV !== "test" ? "dist/migrations" : "src/migrations",
79+
existsSync("src/migrations") ? "src/migrations" : "dist/migrations",
8380
),
8481
})

src/migrations/20190611171759_initial.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { type Kysely, sql } from "kysely"
22

3-
export async function up(db: Kysely<any>): Promise<void> {
3+
export async function up(db: Kysely<unknown>): Promise<void> {
44
await sql`PRAGMA journal_mode=WAL`.execute(db)
55

66
await db.schema
Lines changed: 11 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,12 @@
1-
import { type Kysely, sql } from "kysely"
2-
3-
export async function up(db: Kysely<any>): Promise<void> {
4-
await sql`PRAGMA journal_mode=WAL`.execute(db)
5-
6-
await db.schema.dropTable("relations").ifExists().execute()
7-
8-
await db.schema
9-
.createTable("relations")
10-
.ifNotExists()
11-
12-
// Original columns
13-
.addColumn("anidb", "integer", (col) => col.unique())
14-
.addColumn("anilist", "integer", (col) => col.unique())
15-
.addColumn("myanimelist", "integer", (col) => col.unique())
16-
.addColumn("kitsu", "integer", (col) => col.unique())
17-
18-
// v2 columns
19-
.addColumn("anime-planet", "text", (col) => col.unique())
20-
.addColumn("anisearch", "integer", (col) => col.unique())
21-
.addColumn("imdb", "text")
22-
.addColumn("livechart", "integer", (col) => col.unique())
23-
.addColumn("notify-moe", "text", (col) => col.unique())
24-
.addColumn("themoviedb", "integer")
25-
.addColumn("thetvdb", "integer")
26-
27-
// New Columns
28-
.addColumn("themoviedb-season", "integer")
29-
.addColumn("thetvdb-season", "integer")
30-
.addColumn("animenewsnetwork", "integer", (col) => col.unique())
31-
.addColumn("animecountdown", "integer", (col) => col.unique())
32-
.addColumn("simkl", "integer")
33-
.addColumn("media", "text")
34-
.execute()
1+
import type { Kysely } from "kysely"
2+
3+
export async function up(db: Kysely<unknown>): Promise<void> {
4+
await db.schema.alterTable("relations").addColumn("themoviedb-season", "integer").execute()
5+
await db.schema.alterTable("relations").addColumn("thetvdb-season", "integer").execute()
6+
// unique, but sqlite can't add unique columns to tables
7+
await db.schema.alterTable("relations").addColumn("animenewsnetwork", "integer").execute()
8+
// unique, but sqlite can't add unique columns to tables
9+
await db.schema.alterTable("relations").addColumn("animecountdown", "integer").execute()
10+
await db.schema.alterTable("relations").addColumn("simkl", "integer").execute()
11+
await db.schema.alterTable("relations").addColumn("media", "text").execute()
3512
}

src/update.ts

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -135,18 +135,9 @@ export const updateRelations = async () => {
135135
log.info("update", `Removed duplicates. ${goodEntries.length} remain.`)
136136

137137
if (config.NODE_ENV !== Environment.Prod) {
138-
const { error, results } = await migrator.migrateToLatest()
139-
140-
results?.forEach((it) => {
141-
log.info("update", `Migration ${it.direction} "${it.migrationName}" ...`)
142-
if (it.status === "Success") {
143-
log.info("update", `... was executed successfully`)
144-
} else if (it.status === "Error") {
145-
log.error("update", `... FAILED!`)
146-
}
147-
})
148-
if (Boolean(error) || "Error" in (results?.map((x) => x.status) || [])) {
149-
throw new Error(`failed to run 'migrateToLatest' ${(error as string) || ""}`)
138+
const { error } = await migrator.migrateToLatest()
139+
if (error != null) {
140+
throw new Error("Executing migrations failed.", { cause: error })
150141
}
151142
}
152143

0 commit comments

Comments
 (0)