getDb.ts 941 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { openDB, DBSchema, StoreNames } from "idb";
  2. export interface NovelDb extends DBSchema {
  3. history: {
  4. value: HistoryItem;
  5. key: string;
  6. indexes: {
  7. uri: string;
  8. historyUpdateTime: Date;
  9. historyIsReading: number;
  10. historyIsFavorite: number;
  11. };
  12. };
  13. }
  14. export default function getDb() {
  15. return openDB<NovelDb>("NovelDit", 3, {
  16. upgrade(db, oldVersion, newVersion) {
  17. if (newVersion && newVersion > oldVersion) {
  18. db.deleteObjectStore("history");
  19. }
  20. const historyStore = db.createObjectStore("history", {
  21. keyPath: "uri",
  22. });
  23. historyStore.createIndex("historyUpdateTime", "readTime", {
  24. unique: false,
  25. });
  26. historyStore.createIndex("historyIsReading", ["isReading", "readTime"], {
  27. unique: false,
  28. });
  29. historyStore.createIndex("historyIsFavorite", "isFavorite", {
  30. unique: false,
  31. });
  32. },
  33. });
  34. }