From 83b7fb83ab03100c08953849d0fc60b14810a08c Mon Sep 17 00:00:00 2001 From: Hachi-R Date: Sun, 3 Nov 2024 21:39:05 -0300 Subject: [PATCH] feat: add seed-list table --- src/main/data-source.ts | 2 ++ src/main/entity/index.ts | 1 + src/main/entity/seed-list.entity.ts | 25 +++++++++++++++++++ src/main/knex-client.ts | 2 ++ .../20241103231555_add_seed_list_table.ts | 19 ++++++++++++++ src/main/repository.ts | 3 +++ 6 files changed, 52 insertions(+) create mode 100644 src/main/entity/seed-list.entity.ts create mode 100644 src/main/migrations/20241103231555_add_seed_list_table.ts diff --git a/src/main/data-source.ts b/src/main/data-source.ts index 80a40f47..2fb89572 100644 --- a/src/main/data-source.ts +++ b/src/main/data-source.ts @@ -9,6 +9,7 @@ import { UserAuth, GameAchievement, UserSubscription, + SeedList, } from "@main/entity"; import { databasePath } from "./constants"; @@ -25,6 +26,7 @@ export const dataSource = new DataSource({ DownloadSource, DownloadQueue, GameAchievement, + SeedList, ], synchronize: false, database: databasePath, diff --git a/src/main/entity/index.ts b/src/main/entity/index.ts index 5829e6a2..519a8aa2 100644 --- a/src/main/entity/index.ts +++ b/src/main/entity/index.ts @@ -8,3 +8,4 @@ export * from "./game.entity"; export * from "./game-achievements.entity"; export * from "./download-source.entity"; export * from "./download-queue.entity"; +export * from "./seed-list.entity"; diff --git a/src/main/entity/seed-list.entity.ts b/src/main/entity/seed-list.entity.ts new file mode 100644 index 00000000..da8aad3a --- /dev/null +++ b/src/main/entity/seed-list.entity.ts @@ -0,0 +1,25 @@ +import { + Entity, + PrimaryGeneratedColumn, + CreateDateColumn, + UpdateDateColumn, + Column, +} from "typeorm"; + +@Entity("seed_list") +export class SeedList { + @PrimaryGeneratedColumn() + id: number; + + @Column("text") + downloadUri: string; + + @Column("boolean", { default: false }) + shouldSeed: boolean; + + @CreateDateColumn() + createdAt: Date; + + @UpdateDateColumn() + updatedAt: Date; +} diff --git a/src/main/knex-client.ts b/src/main/knex-client.ts index 6ddc79e7..3abbbaed 100644 --- a/src/main/knex-client.ts +++ b/src/main/knex-client.ts @@ -13,6 +13,7 @@ import { AddBackgroundImageUrl } from "./migrations/20241016100249_add_backgroun import { AddWinePrefixToGame } from "./migrations/20241019081648_add_wine_prefix_to_game"; import { AddStartMinimizedColumn } from "./migrations/20241030171454_add_start_minimized_column"; import { AddSeedAfterDownloadCompletesColumn } from "./migrations/20241101012727_add_seed_after_download_completes_column"; +import { AddSeedListTable } from "./migrations/20241103231555_add_seed_list_table"; export type HydraMigration = Knex.Migration & { name: string }; class MigrationSource implements Knex.MigrationSource { @@ -30,6 +31,7 @@ class MigrationSource implements Knex.MigrationSource { AddWinePrefixToGame, AddStartMinimizedColumn, AddSeedAfterDownloadCompletesColumn, + AddSeedListTable, ]); } getMigrationName(migration: HydraMigration): string { diff --git a/src/main/migrations/20241103231555_add_seed_list_table.ts b/src/main/migrations/20241103231555_add_seed_list_table.ts new file mode 100644 index 00000000..a4ec398e --- /dev/null +++ b/src/main/migrations/20241103231555_add_seed_list_table.ts @@ -0,0 +1,19 @@ +import type { HydraMigration } from "@main/knex-client"; +import type { Knex } from "knex"; + +export const AddSeedListTable: HydraMigration = { + name: "AddSeedListTable", + up: (knex: Knex) => { + return knex.schema.createTable("seed_list", async (table) => { + table.increments("id").primary(); + table.text("downloadUri").notNullable(); + table.boolean("shouldSeed").defaultTo(false); + table.datetime("createdAt").notNullable().defaultTo(knex.fn.now()); + table.datetime("updatedAt").notNullable().defaultTo(knex.fn.now()); + }); + }, + + down: async (knex: Knex) => { + return knex.schema.dropTable("seed_list"); + }, +}; diff --git a/src/main/repository.ts b/src/main/repository.ts index cf3ab143..74184601 100644 --- a/src/main/repository.ts +++ b/src/main/repository.ts @@ -9,6 +9,7 @@ import { UserAuth, GameAchievement, UserSubscription, + SeedList, } from "@main/entity"; export const gameRepository = dataSource.getRepository(Game); @@ -27,6 +28,8 @@ export const downloadQueueRepository = dataSource.getRepository(DownloadQueue); export const userAuthRepository = dataSource.getRepository(UserAuth); +export const seedListRepository = dataSource.getRepository(SeedList); + export const userSubscriptionRepository = dataSource.getRepository(UserSubscription);