grungnet/src/database.js

111 lines
3.3 KiB
JavaScript
Raw Normal View History

import Dexie from "dexie";
import blobToBuffer from "./helpers/blobToBuffer";
function loadVersions(db) {
2020-05-03 08:12:39 -04:00
// v1.2.0
db.version(1).stores({
maps: "id, owner",
states: "mapId",
tokens: "id, owner",
user: "key",
});
2020-05-03 08:12:39 -04:00
// v1.2.1 - Move from blob files to array buffers
db.version(2)
.stores({})
2020-05-03 08:12:39 -04: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));
}
return tx
.table("maps")
.toCollection()
.modify((map) => {
2020-05-03 08:12:39 -04:00
map.file = mapBuffers[map.id];
});
});
2020-05-18 02:31:32 -04:00
// v1.3.0 - Added new default tokens
db.version(3)
.stores({})
.upgrade((tx) => {
return tx
.table("states")
.toCollection()
.modify((state) => {
function mapTokenId(id) {
switch (id) {
case "__default-Axes":
return "__default-Barbarian";
2020-05-18 02:31:32 -04:00
case "__default-Bird":
return "__default-Druid";
2020-05-18 02:31:32 -04:00
case "__default-Book":
return "__default-Wizard";
2020-05-18 02:31:32 -04:00
case "__default-Crown":
return "__default-Humanoid";
2020-05-18 02:31:32 -04:00
case "__default-Dragon":
return "__default-Dragon";
2020-05-18 02:31:32 -04:00
case "__default-Eye":
return "__default-Warlock";
2020-05-18 02:31:32 -04:00
case "__default-Fist":
return "__default-Monk";
2020-05-18 02:31:32 -04:00
case "__default-Horse":
return "__default-Fey";
2020-05-18 02:31:32 -04:00
case "__default-Leaf":
return "__default-Druid";
2020-05-18 02:31:32 -04:00
case "__default-Lion":
return "__default-Monstrosity";
2020-05-18 02:31:32 -04:00
case "__default-Money":
return "__default-Humanoid";
2020-05-18 02:31:32 -04:00
case "__default-Moon":
return "__default-Cleric";
2020-05-18 02:31:32 -04:00
case "__default-Potion":
return "__default-Sorcerer";
2020-05-18 02:31:32 -04:00
case "__default-Shield":
return "__default-Paladin";
2020-05-18 02:31:32 -04:00
case "__default-Skull":
return "__default-Undead";
2020-05-18 02:31:32 -04:00
case "__default-Snake":
return "__default-Beast";
2020-05-18 02:31:32 -04:00
case "__default-Sun":
return "__default-Cleric";
2020-05-18 02:31:32 -04:00
case "__default-Swords":
return "__default-Fighter";
2020-05-18 02:31:32 -04:00
case "__default-Tree":
return "__default-Plant";
2020-05-18 02:31:32 -04:00
case "__default-Triangle":
return "__default-Sorcerer";
2020-05-18 02:31:32 -04:00
default:
return "__default-Fighter";
2020-05-18 02:31:32 -04:00
}
}
for (let stateId in state.tokens) {
state.tokens[stateId].tokenId = mapTokenId(
state.tokens[stateId].tokenId
);
state.tokens[stateId].lastEditedBy = "";
state.tokens[stateId].rotation = 0;
2020-05-18 02:31:32 -04:00
}
});
});
2020-05-31 02:25:05 -04:00
// v1.3.1 - Added show grid option
db.version(4)
.stores({})
.upgrade((tx) => {
return tx
.table("maps")
.toCollection()
.modify((map) => {
map.showGrid = false;
});
});
}
// Get the dexie database used in DatabaseContext
export function getDatabase(options) {
let db = new Dexie("OwlbearRodeoDB", options);
loadVersions(db);
return db;
}