import 'reflect-metadata'; import { readFileSync } from 'node:fs'; import { createRequire } from 'node:module'; import { parseArgs, parseEnv } from 'node:util'; const require = createRequire(import.meta.url); const { PrismaService } = require('../dist/database/prisma.service.js'); const { seedPaperSheets } = require('../dist/worksheets/paper-sheet-seed.js'); const { HttpException } = require('@nestjs/common'); let database; try { const { values } = parseArgs({ options: { apply: { type: 'boolean', default: false } }, }); const local = parseEnv( readFileSync(new URL('../.env', import.meta.url), 'utf8'), ); const url = new URL(process.env.DATABASE_URL ?? local.DATABASE_URL); // 与现有导入工具一致,仅操作本机开发库;默认预演,不代替内容正式发布。 if ( !['127.0.0.1', 'localhost'].includes(url.hostname) || url.pathname !== '/doodle_dev' ) throw new Error('作业纸初始化只允许本机 doodle_dev'); database = new PrismaService({ databaseUrl: url.toString() }); console.log( JSON.stringify(await seedPaperSheets(database, !values.apply), null, 4), ); } catch (error) { console.error( error instanceof HttpException ? error.message : '作业纸初始化失败,请检查本地数据库及构建结果', ); process.exitCode = 1; } finally { await database?.onModuleDestroy(); }