diff --git a/package.json b/package.json index c78f9ae..84186aa 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", "test:e2e": "jest --config ./test/jest-e2e.json", "crawl": "ts-node -r tsconfig-paths/register src/scripts/crawl.ts", + "update-source": "ts-node -r tsconfig-paths/register src/scripts/update-source.ts", "web":"npm --prefix frontend run build" }, "dependencies": { diff --git a/src/scripts/update-source.ts b/src/scripts/update-source.ts new file mode 100644 index 0000000..a70f551 --- /dev/null +++ b/src/scripts/update-source.ts @@ -0,0 +1,57 @@ +import { NestFactory } from '@nestjs/core'; +import { AppModule } from '../app.module'; +import { getRepositoryToken } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { BidItem } from '../bids/entities/bid-item.entity'; +import { CustomLogger } from '../common/logger/logger.service'; + +async function updateSource() { + const app = await NestFactory.createApplicationContext(AppModule); + + // 设置自定义 logger + const logger = await app.resolve(CustomLogger); + app.useLogger(logger); + logger.setContext('UpdateSourceScript'); + + try { + // 获取 BidItem 的 repository + const bidItemRepository = app.get>(getRepositoryToken(BidItem)); + + const oldSource = '北京电力交易平台'; + const newSource = '北京京能电子商务平台'; + + logger.log(`开始更新 source 字段: "${oldSource}" -> "${newSource}"`); + + // 查找需要更新的记录数量 + const count = await bidItemRepository.count({ + where: { source: oldSource }, + }); + + logger.log(`找到 ${count} 条需要更新的记录`); + + if (count === 0) { + logger.log('没有需要更新的记录'); + await app.close(); + process.exit(0); + } + + // 执行更新 + const result = await bidItemRepository + .createQueryBuilder() + .update(BidItem) + .set({ source: newSource }) + .where('source = :oldSource', { oldSource }) + .execute(); + + logger.log(`成功更新 ${result.affected} 条记录`); + + await app.close(); + process.exit(0); + } catch (error) { + logger.error('更新失败:', error); + await app.close(); + process.exit(1); + } +} + +updateSource();