import { openDB, DBSchema, StoreNames } from "idb"; export interface NovelDb extends DBSchema { history: { value: HistoryItem; key: string; indexes: { uri: string; historyUpdateTime: Date; historyIsReading: number; historyIsFavorite: number; }; }; } export default function getDb() { return openDB("NovelDit", 2, { upgrade(db, oldVersion, newVersion) { console.log(oldVersion, newVersion); if (oldVersion === 0) { const historyStore = db.createObjectStore("history", { keyPath: "uri", }); historyStore.createIndex("historyUpdateTime", "readTime", { unique: false, }); historyStore.createIndex( "historyIsReading", ["isReading", "readTime"], { unique: false, } ); historyStore.createIndex("historyIsFavorite", "isFavorite", { unique: false, }); } else if (oldVersion === 1) { const historyStore = db.transaction("history", "versionchange"); const store = historyStore.store; store.deleteIndex("historyIsFavorite"); store.createIndex("historyIsFavorite", "isFavorite", { unique: false, }); } }, }); }