Make type changes on Dexie items

This commit is contained in:
nthouliss
2022-04-01 17:07:38 +11:00
parent 6adee0684a
commit acfc84b406
2 changed files with 16 additions and 15 deletions

View File

@@ -201,7 +201,7 @@ function ImportExportModal({
let newTokens: Token[] = [];
if (checkedTokens.length > 0) {
const tokenIds = checkedTokens.map((token) => token.id);
const tokensToAdd: Token[] = await importDB.table("tokens").bulkGet(tokenIds);
const tokensToAdd: Token[] = await importDB.table<Token>("tokens").bulkGet(tokenIds);
for (let token of tokensToAdd) {
if (token) {
// Generate new ids
@@ -240,7 +240,7 @@ function ImportExportModal({
let newStates: MapState[] = [];
if (checkedMaps.length > 0) {
const mapIds = checkedMaps.map((map) => map.id);
const mapsToAdd = await importDB.table("maps").bulkGet(mapIds);
const mapsToAdd = await importDB.table<Map>("maps").bulkGet(mapIds);
for (let map of mapsToAdd) {
let state: MapState = await importDB.table("states").get(map.id);
// Apply new token ids to imported state
@@ -295,7 +295,7 @@ function ImportExportModal({
// Add assets with new ids
const assetsToAdd = await importDB
.table("assets")
.table<Asset>("assets")
.bulkGet(Object.keys(newAssetIds));
let newAssets: Asset[] = [];
const processedAssetIds: string[] = []
@@ -380,26 +380,26 @@ function ImportExportModal({
],
async () => {
if (newTokens.length > 0) {
await db.table("tokens").bulkAdd(newTokens);
await db.table<Token>("tokens").bulkAdd(newTokens);
}
if (newMaps.length > 0) {
await db.table("maps").bulkAdd(newMaps);
await db.table<Map>("maps").bulkAdd(newMaps);
}
if (newStates.length > 0) {
await db.table("states").bulkAdd(newStates);
}
if (newAssets.length > 0) {
await db.table("assets").bulkAdd(newAssets);
await db.table<Asset>("assets").bulkAdd(newAssets);
}
if (newMapGroups.length > 0) {
const mapGroup = await db.table("groups").get("maps");
await db
.table("groups")
.table<Group>("groups")
.update("maps", { items: [...newMapGroups, ...mapGroup.items] });
}
if (newTokenGroups.length > 0) {
const tokenGroup = await db.table("groups").get("tokens");
await db.table("groups").update("tokens", {
await db.table<Group>("groups").update("tokens", {
items: [...newTokenGroups, ...tokenGroup.items],
});
}

View File

@@ -12,6 +12,7 @@ import blobToBuffer from "../helpers/blobToBuffer";
import { Map } from "../types/Map";
import { Token } from "../types/Token";
import { Asset } from "../types/Asset";
type ProgressCallback = (progress: ExportProgress) => boolean;
@@ -34,7 +35,7 @@ let service = {
// Load entire table
let items: T[] = [];
// Use a cursor instead of toArray to prevent IPC max size error
await db.table(table).each((item) => {
await db.table(table).each((item: any) => {
items.push(item);
});
@@ -77,7 +78,7 @@ let service = {
let db = getDatabase({});
// Add assets for selected maps and tokens
const maps = await db
const maps: Map[] = await db
.table<Map>("maps")
.where("id")
.anyOf(mapIds)
@@ -125,7 +126,7 @@ let service = {
return false;
};
const data = await exportDB(db as any, {
const data = await exportDB(db, {
progressCallback,
filter,
numRowsPerChunk: 1,
@@ -176,7 +177,7 @@ let service = {
importMeta.data.databaseVersion,
false
);
await importInto(importDB as any, data, {
await importInto(importDB, data, {
progressCallback,
acceptNameDiff: true,
overwriteValues: true,
@@ -207,10 +208,10 @@ let service = {
const assetSizes: { id: string; size: number }[] = [];
await db
.table("assets")
.table<Asset>("assets")
.where("owner")
.notEqual(userId)
.each((asset) => {
.each((asset: Asset) => {
assetSizes.push({ id: asset.id, size: asset.file.byteLength });
});
const totalSize = assetSizes.reduce((acc, cur) => acc + cur.size, 0);
@@ -226,7 +227,7 @@ let service = {
break;
}
}
await db.table("assets").bulkDelete(assetsToDelete);
await db.table<Asset>("assets").bulkDelete(assetsToDelete);
}
} catch {}
},