Files
doodle-store/apps/server/scripts/seed-paper-sheets.mjs
T
2026-10-23 16:52:47 +08:00

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();
}