Files
flutter_learning/scripts/import-sets.js
T
2026-08-17 23:57:43 +08:00

42 lines
1.4 KiB
JavaScript

const fs = require('fs');
const path = require('path');
const BASE = (process.env.BASE_URL || 'http://localhost:3031').replace(/\/$/, '');
const ADMIN_USER = process.env.ADMIN_USER || 'admin';
const ADMIN_PASS = process.env.ADMIN_PASS || 'admin123';
const ARGS = process.argv.slice(2);
const FILES = ARGS.length ? ARGS : ['set-dart-dev.json', 'set-flutter-dev.json'];
async function main() {
const loginRes = await fetch(BASE + '/api/admin/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ username: ADMIN_USER, password: ADMIN_PASS })
});
const login = await loginRes.json();
if (!loginRes.ok) throw new Error('登录失败: ' + login.error);
for (const file of FILES) {
const data = JSON.parse(fs.readFileSync(path.join(__dirname, 'data', file), 'utf8'));
const res = await fetch(BASE + '/api/admin/import', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: 'Bearer ' + login.token
},
body: JSON.stringify(data)
});
const result = await res.json();
if (!res.ok) {
console.log(`${data.name} 导入失败: ${result.error}`);
} else {
console.log(`${data.name}: 导入 ${result.imported} 题, 套题 id=${result.set.id}`);
}
}
}
main().catch(e => {
console.error(e.message);
process.exit(1);
});