feat: 作业纸
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
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();
|
||||
}
|
||||
Reference in New Issue
Block a user