39 lines
1.4 KiB
JavaScript
39 lines
1.4 KiB
JavaScript
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();
|
|
}
|