From b31224a81cfb977bfbbe88295c88260e42d488f8 Mon Sep 17 00:00:00 2001 From: geekgeekrun Date: Sun, 13 Jul 2025 14:19:23 +0800 Subject: [PATCH] add job source column migration for db --- .../src/entity/ChatStartupLog.ts | 6 ++ .../src/entity/MarkAsNotSuitLog.ts | 7 +- packages/sqlite-plugin/src/enums.ts | 6 ++ packages/sqlite-plugin/src/index.ts | 2 + ...umnForChatStartupLogAndMarkAsNotSuitLog.ts | 64 +++++++++++++++++++ 5 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 packages/sqlite-plugin/src/migrations/1752380078526-AddJobSourceColumnForChatStartupLogAndMarkAsNotSuitLog.ts diff --git a/packages/sqlite-plugin/src/entity/ChatStartupLog.ts b/packages/sqlite-plugin/src/entity/ChatStartupLog.ts index 94ff5aa..a8d2481 100644 --- a/packages/sqlite-plugin/src/entity/ChatStartupLog.ts +++ b/packages/sqlite-plugin/src/entity/ChatStartupLog.ts @@ -1,3 +1,4 @@ +import { JobSource } from "../enums"; import { requireTypeorm } from "../utils/module-loader"; const { Entity, Column, PrimaryGeneratedColumn } = requireTypeorm() @@ -29,4 +30,9 @@ export class ChatStartupLog { nullable: true }) autoStartupChatRecordId?: number; + + @Column({ + nullable: true + }) + jobSource?: JobSource; } diff --git a/packages/sqlite-plugin/src/entity/MarkAsNotSuitLog.ts b/packages/sqlite-plugin/src/entity/MarkAsNotSuitLog.ts index 163035c..c3325fc 100644 --- a/packages/sqlite-plugin/src/entity/MarkAsNotSuitLog.ts +++ b/packages/sqlite-plugin/src/entity/MarkAsNotSuitLog.ts @@ -1,4 +1,4 @@ -import { MarkAsNotSuitOp, MarkAsNotSuitReason } from "../enums"; +import { JobSource, MarkAsNotSuitOp, MarkAsNotSuitReason } from "../enums"; import { requireTypeorm } from "../utils/module-loader"; import { ChatStartupFrom } from "./ChatStartupLog"; const { Entity, Column, PrimaryGeneratedColumn } = requireTypeorm() @@ -41,4 +41,9 @@ export class MarkAsNotSuitLog { nullable: true }) autoStartupChatRecordId?: number; + + @Column({ + nullable: true + }) + jobSource?: JobSource; } diff --git a/packages/sqlite-plugin/src/enums.ts b/packages/sqlite-plugin/src/enums.ts index 8351a0c..ca74232 100644 --- a/packages/sqlite-plugin/src/enums.ts +++ b/packages/sqlite-plugin/src/enums.ts @@ -28,3 +28,9 @@ export enum JobDetailRegExpMatchLogic { EVERY = 1, SOME = 2, } + +export enum JobSource { + expect = 1, + recommend = 2, + search = 3, +} diff --git a/packages/sqlite-plugin/src/index.ts b/packages/sqlite-plugin/src/index.ts index 324c57f..43f058f 100644 --- a/packages/sqlite-plugin/src/index.ts +++ b/packages/sqlite-plugin/src/index.ts @@ -37,6 +37,7 @@ import { UpdateBossInfoTable1732032381304 } from "./migrations/1732032381304-Upd import { MarkAsNotSuitOp, MarkAsNotSuitReason } from "./enums"; import { AddColumnForMarkAsNotSuitLog1746092370665 } from "./migrations/1746092370665-AddColumnForMarkAsNotSuitLog"; import { Init1000000000000 } from "./migrations/1000000000000-Init"; +import { AddJobSourceColumnForChatStartupLogAndMarkAsNotSuitLog1752380078526 } from "./migrations/1752380078526-AddJobSourceColumnForChatStartupLogAndMarkAsNotSuitLog"; export function initDb(dbFilePath) { const { DataSource } = requireTypeorm() @@ -72,6 +73,7 @@ export function initDb(dbFilePath) { UpdateChatStartupLogTable1729182577167, UpdateBossInfoTable1732032381304, AddColumnForMarkAsNotSuitLog1746092370665, + AddJobSourceColumnForChatStartupLogAndMarkAsNotSuitLog1752380078526 ], migrationsRun: true }); diff --git a/packages/sqlite-plugin/src/migrations/1752380078526-AddJobSourceColumnForChatStartupLogAndMarkAsNotSuitLog.ts b/packages/sqlite-plugin/src/migrations/1752380078526-AddJobSourceColumnForChatStartupLogAndMarkAsNotSuitLog.ts new file mode 100644 index 0000000..194af72 --- /dev/null +++ b/packages/sqlite-plugin/src/migrations/1752380078526-AddJobSourceColumnForChatStartupLogAndMarkAsNotSuitLog.ts @@ -0,0 +1,64 @@ +import { DataSource, MigrationInterface, QueryRunner, TableColumn } from "typeorm" +import { VBossLibrary } from "../entity/VBossLibrary"; +import { VChatStartupLog } from "../entity/VChatStartupLog"; +import { VCompanyLibrary } from "../entity/VCompanyLibrary"; +import { VJobLibrary } from "../entity/VJobLibrary"; +import { VMarkAsNotSuitLog } from "../entity/VMarkAsNotSuitLog"; +import { JobSource } from "../enums"; + +const ViewEntities = [ + VBossLibrary, + VChatStartupLog, + VCompanyLibrary, + VJobLibrary, + VMarkAsNotSuitLog, +] +export class AddJobSourceColumnForChatStartupLogAndMarkAsNotSuitLog1752380078526 implements MigrationInterface { + + public async up(queryRunner: QueryRunner): Promise { + for (const EntityDefinition of ViewEntities) { + const dataSource = queryRunner.connection as DataSource; + const viewMetadata = dataSource.getMetadata(EntityDefinition); + await queryRunner.query(`DROP VIEW IF EXISTS "${viewMetadata.tableName}"`); + } + if (await queryRunner.hasTable("mark_as_not_suit_log")) { + if (!await queryRunner.hasColumn("mark_as_not_suit_log", "jobSource")) { + await queryRunner.addColumn( + "mark_as_not_suit_log", + new TableColumn({ + name: "jobSource", + type: "number", + isNullable: true, + }) + ); + await queryRunner.query(`UPDATE mark_as_not_suit_log SET jobSource=?`, [JobSource.expect]); + } + } + if (await queryRunner.hasTable("chat_startup_log")) { + if (!await queryRunner.hasColumn("chat_startup_log", "jobSource")) { + await queryRunner.addColumn( + "chat_startup_log", + new TableColumn({ + name: "jobSource", + type: "number", + isNullable: true, + }) + ); + await queryRunner.query(`UPDATE chat_startup_log SET jobSource=?`, [JobSource.expect]); + } + } + for (const EntityDefinition of ViewEntities) { + const dataSource = queryRunner.connection as DataSource; + const viewMetadata = dataSource.getMetadata(EntityDefinition); + let expression = viewMetadata.expression; + if (typeof expression === 'function') { + expression = expression(dataSource).getQuery(); + } + await queryRunner.query(`CREATE VIEW "${viewMetadata.tableName}" AS ${expression}`); + } + } + + public async down(queryRunner: QueryRunner): Promise { + } + +}