import { index, integer, real, sqliteTable, text, } from "drizzle-orm/sqlite-core"; /** * Core `anime` table. * * Normalized schema for AMQ source data (imported from JSON). * Keeps original AMQ integer identifiers where present (annId, etc.). * * Source: AmqAnimeSchema */ export const anime = sqliteTable( "anime", { /** AMQ anime ID */ annId: integer("ann_id").notNull().primaryKey(), // External IDs from the source aniListId: integer("anilist_id"), malId: integer("mal_id").notNull(), kitsuId: integer("kitsu_id"), // Category object (name + number that can be number|string|null in source) categoryName: text("category_name").notNull(), categoryNumber: real("category_number"), // Names mainName: text("main_name").notNull(), mainNameEn: text("main_name_en"), mainNameJa: text("main_name_ja"), // Season/year year: integer("year").notNull(), seasonId: integer("season_id").notNull(), // 0..3 from Season enum // Counts opCount: integer("op_count").notNull(), edCount: integer("ed_count").notNull(), insertCount: integer("insert_count").notNull(), }, (t) => ({ aniListIndex: index("anime_anilist_id_uq").on(t.aniListId), malIndex: index("anime_mal_id_uq").on(t.malId), kitsuIndex: index("anime_kitsu_id_uq").on(t.kitsuId), }), );