36 lines
872 B
TypeScript
36 lines
872 B
TypeScript
import { DBSchema, openDB } from "idb";
|
|
import { Card } from "./types";
|
|
|
|
interface CardDB extends DBSchema {
|
|
card: {
|
|
key: string;
|
|
value: Card;
|
|
indexes: {
|
|
"by-set": string;
|
|
"by-element": string[];
|
|
"by-type": string;
|
|
"by-cost": number;
|
|
"by-power": number;
|
|
"by-rarity": string;
|
|
};
|
|
};
|
|
}
|
|
|
|
const cardDBName = "card-db";
|
|
|
|
export async function openCardDB() {
|
|
return await openDB<CardDB>(cardDBName, 1, {
|
|
upgrade(db) {
|
|
const cardStore = db.createObjectStore("card", {
|
|
keyPath: "ID"
|
|
});
|
|
cardStore.createIndex("by-set", "Set");
|
|
cardStore.createIndex("by-element", "Element");
|
|
cardStore.createIndex("by-type", "Type");
|
|
cardStore.createIndex("by-cost", "Cost");
|
|
cardStore.createIndex("by-power", "Power");
|
|
cardStore.createIndex("by-rarity", "Rarity");
|
|
}
|
|
});
|
|
}
|