From 1bf8a75f511a42251cdf9ac8d8ed08fbd3abfe26 Mon Sep 17 00:00:00 2001 From: 1-alex98 Date: Fri, 16 Jun 2023 16:58:54 +0200 Subject: [PATCH] Error on SinglePlayer page Fixes #219 --- src/renderer/api/cache-db.ts | 6 ++++-- src/renderer/api/content/engine-content.ts | 2 +- src/renderer/api/content/game-content.ts | 2 +- src/renderer/config/default-battle.ts | 4 ++-- src/renderer/utils/serialize-plugin.ts | 1 + 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/renderer/api/cache-db.ts b/src/renderer/api/cache-db.ts index 60ce152b..bb13d2c2 100644 --- a/src/renderer/api/cache-db.ts +++ b/src/renderer/api/cache-db.ts @@ -44,8 +44,6 @@ export class CacheDbAPI extends Kysely { } public async init() { - await this.serializePlugin.setSchema(this); - await this.schema .createTable("map") .ifNotExists() @@ -122,8 +120,12 @@ export class CacheDbAPI extends Kysely { .addColumn("fileName", "varchar", (col) => col.primaryKey()) .execute(); + await this.serializePlugin.setSchema(this); //might be needed already for migration + await this.migrateToLatest(); + await this.serializePlugin.setSchema(this); //again in case migration changed the database + return this; } diff --git a/src/renderer/api/content/engine-content.ts b/src/renderer/api/content/engine-content.ts index 674e284c..81b04b38 100644 --- a/src/renderer/api/content/engine-content.ts +++ b/src/renderer/api/content/engine-content.ts @@ -214,7 +214,7 @@ export class EngineContentAPI extends AbstractContentAPI { } protected async parseAi(aiPath: string): Promise { - const aiDefinitions = await glob.promise(`${aiPath}/**/{AIInfo.lua,AIOptions.lua}`); + const aiDefinitions = await glob.promise(`${aiPath}/**/{AIInfo.lua,AIOptions.lua}`, { windowsPathsNoEscape: true }); const aiInfoPath = aiDefinitions.find((filePath) => filePath.endsWith("AIInfo.lua")); const aiOptionsPath = aiDefinitions.find((filePath) => filePath.endsWith("AIOptions.lua")); diff --git a/src/renderer/api/content/game-content.ts b/src/renderer/api/content/game-content.ts index 66960181..4a7d2924 100644 --- a/src/renderer/api/content/game-content.ts +++ b/src/renderer/api/content/game-content.ts @@ -128,7 +128,7 @@ export class GameContentAPI extends PrDownloaderAPI = []; const customGameDir = path.join(api.info.contentPath, "games", version.dir); - const files = await glob.promise(path.join(customGameDir, filePattern)); + const files = await glob.promise(path.join(customGameDir, filePattern), { windowsPathsNoEscape: true }); for (const file of files) { const sdpData = { diff --git a/src/renderer/config/default-battle.ts b/src/renderer/config/default-battle.ts index 437ce425..6345d76d 100644 --- a/src/renderer/config/default-battle.ts +++ b/src/renderer/config/default-battle.ts @@ -15,7 +15,7 @@ export function defaultBattle(mapScriptName?: string) { me.battleStatus.isSpectator = false; const engine = api.content.engine.installedVersions.find((version) => version.id === defaultEngineVersion); - const barb = engine?.ais.find((ai) => ai.shortName === "BARb")!; + const barb = engine?.ais.find((ai) => ai.shortName === "BARb"); return new OfflineBattle({ battleOptions: { @@ -31,6 +31,6 @@ export function defaultBattle(mapScriptName?: string) { restrictions: [], }, users: [me], - bots: [{ playerId: 1, teamId: 1, ownerUserId: me.userId, name: barb.name, aiShortName: barb.shortName, aiOptions: {} }], + bots: barb ? [{ playerId: 1, teamId: 1, ownerUserId: me.userId, name: barb.name, aiShortName: barb.shortName, aiOptions: {} }] : [], }); } diff --git a/src/renderer/utils/serialize-plugin.ts b/src/renderer/utils/serialize-plugin.ts index a3e8247c..f8351a1f 100644 --- a/src/renderer/utils/serialize-plugin.ts +++ b/src/renderer/utils/serialize-plugin.ts @@ -17,6 +17,7 @@ export class SerializePlugin implements KyselyPlugin { protected colTypes = new Map(); public async setSchema(db: Kysely) { + this.colTypes.clear(); const tableMetadata = await db.introspection.getTables(); for (const table of tableMetadata) { for (const col of table.columns) {