import { Logger } from '@nestjs/common';
import { PrismaClient } from '.prisma/client';
import { NestFactory } from '@nestjs/core';
import { AppModule } from '../app.module';
import { ConfigModule } from '../config/config.module';
import { AppConfigService } from '../config/app-config.service';
import { CurrencyCode } from '../prisma/generated';
interface commonParamsInterface {
prisma: PrismaClient;
rate: number;
}
const main = async () => {
const prisma: PrismaClient = new PrismaClient();
const app = await NestFactory.createApplicationContext(AppModule);
const appConfigService = app.select(ConfigModule).get<AppConfigService>(AppConfigService);
const rate = appConfigService.exchangeRates(CurrencyCode.MYR, CurrencyCode.YIPPS);
const commonParams = {
prisma,
rate,
};
const tableNames = ['x1', 'x2', 'x3'];
await Promise.all(tableNames.map(async (tableName: string) => await handleUpdate(tableName, commonParams)));
};
const handleUpdate = async (tableName: string, commonParams: commonParamsInterface) => {
const { prisma, rate } = commonParams;
return await prisma[tableName].updateMany({
data: {
commissionCreditLimit: {
multiply: rate,
},
commissionCreditLimitTotal: {
multiply: rate,
},
},
});
};
main()
.then(() => {
Logger.log(`FINISHED AT ${new Date().toISOString()}`);
})
.catch((error) => {
Logger.error(error, error.message);
})
.finally(() => {
process.exit(0);
});
package.json/scripts 添加以下命令:
“scripts:fileName”: “npx ts-node -r tsconfig-paths/register ./src/scripts/fileName”
执行ts脚本
npx run script:filename
相关库:
npm i ts-node tsconfig-paths -g
ts-node
: 命令行执行ts。
tsconfig-paths
: 解析脚本中模块引入的路径,比如引入的文件是相对路径,tsconfig中需要设置根目录,比如:"baseUrl": "./"
。