feat: 添加更新数据源脚本
This commit is contained in:
@@ -19,6 +19,7 @@
|
|||||||
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
|
"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",
|
"test:e2e": "jest --config ./test/jest-e2e.json",
|
||||||
"crawl": "ts-node -r tsconfig-paths/register src/scripts/crawl.ts",
|
"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"
|
"web":"npm --prefix frontend run build"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
57
src/scripts/update-source.ts
Normal file
57
src/scripts/update-source.ts
Normal file
@@ -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<Repository<BidItem>>(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();
|
||||||
Reference in New Issue
Block a user