core&ui: flatten testcases directory

This commit is contained in:
undefined committed 2023-03-11 00:19:04 +08:00
1 parent 366b01aa75
commit 5a0584f6b7
4 files changed
+21 -17

No files matched your search

+1 -1
View File
@@ -76,7 +76,7 @@ class ProblemImportHydroHandler extends Handler {
const sub = await fs.readdir(path.join(tmpdir, i, 'testdata', f.name));
for (const s of sub) {
const stream = fs.createReadStream(path.join(tmpdir, i, 'testdata', f.name, s));
await problem.addTestdata(domainId, docId, `${f.name}/${s}`, stream);
await problem.addTestdata(domainId, docId, s, stream);
}
} else if (f.isFile()) {
const stream = fs.createReadStream(path.join(tmpdir, i, 'testdata', f.name));
+19
View File
@@ -17,6 +17,7 @@ import MessageModel from './model/message';
import problem from './model/problem';
import RecordModel from './model/record';
import ScheduleModel from './model/schedule';
import StorageModel from './model/storage';
import * as system from './model/system';
import TaskModel from './model/task';
import user from './model/user';
@@ -532,6 +533,24 @@ const scripts: UpgradeScript[] = [
}
return true;
},
async function _76_77() {
return await iterateAllProblem(['domainId', 'title', 'docId', 'data'], async (pdoc, current, total) => {
if (!pdoc.data?.find((i) => i.name.includes('/'))) return;
logger.info(pdoc.domainId, pdoc.docId, pdoc.title, pdoc.data.map((i) => i._id));
const prefix = `problem/${pdoc.domainId}/${pdoc.docId}/testdata/`;
for (const file of pdoc.data) {
if (!file._id.includes('/')) continue;
let newName = file._id.split('/')[1].toLowerCase();
if (pdoc.data.find((i) => i._id === newName)) {
newName = file._id.replace(/\//g, '_').toLowerCase();
}
await StorageModel.rename(`${prefix}${file._id}`, `${prefix}${newName}`);
file._id = newName;
file.name = newName;
}
await problem.edit(pdoc.domainId, pdoc.docId, { data: pdoc.data });
});
},
];
export default scripts;