mlpcardgame/src/mlpccg/database.ts

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");
}
});
}