library-picturebook-activity/backend/scripts/query-contest-submit-time.ts

103 lines
2.9 KiB
TypeScript
Raw Normal View History

2026-01-09 18:14:35 +08:00
// 加载环境变量(必须在其他导入之前)
import * as dotenv from 'dotenv';
import * as path from 'path';
// 根据 NODE_ENV 加载对应的环境配置文件
const nodeEnv = process.env.NODE_ENV || 'development';
const envFile = `.env.${nodeEnv}`;
// scripts 目录的父目录就是 backend 目录
const backendDir = path.resolve(__dirname, '..');
const envPath = path.resolve(backendDir, envFile);
// 尝试加载环境特定的配置文件
dotenv.config({ path: envPath });
// 如果环境特定文件不存在,尝试加载默认的 .env 文件
if (!process.env.DATABASE_URL) {
dotenv.config({ path: path.resolve(backendDir, '.env') });
}
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
async function queryContestSubmitTime() {
try {
const contestName = '3D打印作品大赛2';
const contest = await prisma.contest.findFirst({
where: {
contestName: {
contains: contestName,
},
validState: 1,
},
select: {
id: true,
contestName: true,
submitStartTime: true,
submitEndTime: true,
submitRule: true,
startTime: true,
endTime: true,
},
});
if (!contest) {
console.log(`未找到名为"${contestName}"的比赛`);
// 尝试查找包含"3D打印"的比赛
const contests = await prisma.contest.findMany({
where: {
contestName: {
contains: '3D打印',
},
validState: 1,
},
select: {
id: true,
contestName: true,
submitStartTime: true,
submitEndTime: true,
},
orderBy: {
createTime: 'desc',
},
});
if (contests.length > 0) {
console.log('\n找到以下包含"3D打印"的比赛:');
contests.forEach((c) => {
console.log(`\n比赛名称: ${c.contestName}`);
console.log(`作品提交开始时间: ${c.submitStartTime}`);
console.log(`作品提交结束时间: ${c.submitEndTime}`);
});
} else {
console.log('未找到任何包含"3D打印"的比赛');
}
return;
}
console.log('='.repeat(60));
console.log('比赛信息');
console.log('='.repeat(60));
console.log(`比赛ID: ${contest.id}`);
console.log(`比赛名称: ${contest.contestName}`);
console.log(`\n作品提交时间:`);
console.log(` 开始时间: ${contest.submitStartTime}`);
console.log(` 结束时间: ${contest.submitEndTime}`);
console.log(` 提交规则: ${contest.submitRule === 'once' ? '单次提交' : '可多次提交'}`);
console.log(`\n比赛时间:`);
console.log(` 开始时间: ${contest.startTime}`);
console.log(` 结束时间: ${contest.endTime}`);
console.log('='.repeat(60));
} catch (error) {
console.error('查询失败:', error);
} finally {
await prisma.$disconnect();
}
}
queryContestSubmitTime();