diff --git a/src/lib/db/import-amq.ts b/src/lib/db/import-amq.ts index ba7f972..c35352e 100644 --- a/src/lib/db/import-amq.ts +++ b/src/lib/db/import-amq.ts @@ -375,7 +375,7 @@ export async function importAmqData( malId: a.malId, kitsuId: a.kitsuId, categoryName: a.category.name, - categoryNumber: categoryNumberToText(a.category.number), + categoryNumber: a.category.number, mainName: a.mainName, mainNameEn: a.mainNames.EN, mainNameJa: a.mainNames.JA, diff --git a/src/lib/db/index.ts b/src/lib/db/index.ts index 5f08cfc..685d222 100644 --- a/src/lib/db/index.ts +++ b/src/lib/db/index.ts @@ -1,4 +1,21 @@ import "dotenv/config"; -import { drizzle } from "drizzle-orm/better-sqlite3"; +import type { BetterSQLite3Database } from "drizzle-orm/better-sqlite3"; +import type { BunSQLiteDatabase } from "drizzle-orm/bun-sqlite"; -export const db = drizzle(process.env.DB_FILE_NAME); +let _db: BunSQLiteDatabase | BetterSQLite3Database; + +if (!process.env.DB_FILE_NAME) { + throw new Error("DB_FILE_NAME is not set"); +} + +if (process.versions.bun) { + console.info("Using Bun SQLite"); + const { drizzle } = await import("drizzle-orm/bun-sqlite"); + _db = drizzle(process.env.DB_FILE_NAME); +} else { + console.info("Using Better SQLite3"); + const { drizzle } = await import("drizzle-orm/better-sqlite3"); + _db = drizzle(process.env.DB_FILE_NAME); +} + +export const db = _db; diff --git a/src/lib/db/schema/tables/anime.ts b/src/lib/db/schema/tables/anime.ts index 017f984..6a5077d 100644 --- a/src/lib/db/schema/tables/anime.ts +++ b/src/lib/db/schema/tables/anime.ts @@ -1,4 +1,10 @@ -import { index, integer, sqliteTable, text } from "drizzle-orm/sqlite-core"; +import { + index, + integer, + real, + sqliteTable, + text, +} from "drizzle-orm/sqlite-core"; /** * Core `anime` table. @@ -21,7 +27,7 @@ export const anime = sqliteTable( // Category object (name + number that can be number|string|null in source) categoryName: text("category_name").notNull(), - categoryNumber: text("category_number"), + categoryNumber: real("category_number"), // Names mainName: text("main_name").notNull(), diff --git a/src/lib/types/amq/anime.ts b/src/lib/types/amq/anime.ts index 47b4d97..701c64e 100644 --- a/src/lib/types/amq/anime.ts +++ b/src/lib/types/amq/anime.ts @@ -37,7 +37,7 @@ export const AmqAnimeSchema = z.object({ kitsuId: z.int().positive().nullable(), category: z.object({ name: AmqAnimeCategory, - number: z.union([z.number(), z.string()]).nullable(), + number: z.coerce.number().nullable(), }), genres: z.array(AmqAnimeGenre), tags: z.array(AmqAnimeTag),