diff --git a/src/main/knex-client.ts b/src/main/knex-client.ts index d7206677..b6ec3e3d 100644 --- a/src/main/knex-client.ts +++ b/src/main/knex-client.ts @@ -5,6 +5,7 @@ import { RepackUris } from "./migrations/20240830143906_RepackUris"; import { UpdateUserLanguage } from "./migrations/20240913213944_update_user_language"; import { EnsureRepackUris } from "./migrations/20240915035339_ensure_repack_uris"; import { app } from "electron"; +import { FixMissingColumns } from "./migrations/20240918001920_FixMissingColumns"; export type HydraMigration = Knex.Migration & { name: string }; @@ -15,6 +16,7 @@ class MigrationSource implements Knex.MigrationSource { RepackUris, UpdateUserLanguage, EnsureRepackUris, + FixMissingColumns, ]); } getMigrationName(migration: HydraMigration): string { diff --git a/src/main/migrations/20240918001920_FixMissingColumns.ts b/src/main/migrations/20240918001920_FixMissingColumns.ts new file mode 100644 index 00000000..d23662ed --- /dev/null +++ b/src/main/migrations/20240918001920_FixMissingColumns.ts @@ -0,0 +1,41 @@ +import type { HydraMigration } from "@main/knex-client"; +import type { Knex } from "knex"; + +export const FixMissingColumns: HydraMigration = { + name: "FixMissingColumns", + up: async (knex: Knex) => { + const timestamp = new Date().getTime(); + await knex.schema + .hasColumn("repack", "downloadSourceId") + .then(async (exists) => { + if (!exists) { + await knex.schema.table("repack", (table) => { + table + .integer("downloadSourceId") + .references("download_source.id") + .onDelete("CASCADE"); + }); + } + }); + + await knex.schema.hasColumn("game", "remoteId").then(async (exists) => { + if (!exists) { + await knex.schema.table("game", (table) => { + table + .text("remoteId") + .unique({ indexName: "game_remoteId_unique_" + timestamp }); + }); + } + }); + + await knex.schema.hasColumn("game", "uri").then(async (exists) => { + if (!exists) { + await knex.schema.table("game", (table) => { + table.text("uri"); + }); + } + }); + }, + + down: async (_knex: Knex) => {}, +};