2020-05-03 19:52:01 +10:00
|
|
|
import Dexie from "dexie";
|
|
|
|
|
|
|
|
|
|
import blobToBuffer from "./helpers/blobToBuffer";
|
|
|
|
|
|
|
|
|
|
function loadVersions(db) {
|
2020-05-03 22:12:39 +10:00
|
|
|
// v1.2.0
|
2020-05-03 19:52:01 +10:00
|
|
|
db.version(1).stores({
|
|
|
|
|
maps: "id, owner",
|
|
|
|
|
states: "mapId",
|
|
|
|
|
tokens: "id, owner",
|
|
|
|
|
user: "key",
|
|
|
|
|
});
|
2020-05-03 22:12:39 +10:00
|
|
|
// v1.2.1 - Move from blob files to array buffers
|
2020-05-03 19:52:01 +10:00
|
|
|
db.version(2)
|
|
|
|
|
.stores({})
|
2020-05-03 22:12:39 +10:00
|
|
|
.upgrade(async (tx) => {
|
|
|
|
|
const maps = await Dexie.waitFor(tx.table("maps").toArray());
|
|
|
|
|
let mapBuffers = {};
|
|
|
|
|
for (let map of maps) {
|
|
|
|
|
mapBuffers[map.id] = await Dexie.waitFor(blobToBuffer(map.file));
|
|
|
|
|
}
|
2020-05-03 19:52:01 +10:00
|
|
|
return tx
|
|
|
|
|
.table("maps")
|
|
|
|
|
.toCollection()
|
|
|
|
|
.modify((map) => {
|
2020-05-03 22:12:39 +10:00
|
|
|
map.file = mapBuffers[map.id];
|
2020-05-03 19:52:01 +10:00
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Get the dexie database used in DatabaseContext
|
|
|
|
|
export function getDatabase(options) {
|
|
|
|
|
let db = new Dexie("OwlbearRodeoDB", options);
|
|
|
|
|
loadVersions(db);
|
|
|
|
|
return db;
|
|
|
|
|
}
|