Menci
6 years ago
3 changed files with 51 additions and 0 deletions
@ -0,0 +1,47 @@
|
||||
/* |
||||
* This script will help format all submissions' codes whose id in a interval. |
||||
*
|
||||
* Useful when upgrading from a version that doesn't support code formatting. |
||||
*/ |
||||
|
||||
const JudgeState = syzoj.model('judge_state'); |
||||
const FormattedCode = syzoj.model('formatted_code'); |
||||
const CodeFormatter = syzoj.lib('code_formatter'); |
||||
require('.'); |
||||
|
||||
const fn = async (begin, end) => { |
||||
for (let i = begin; i < end; i++) { |
||||
const judge_state = await JudgeState.fromID(i); |
||||
if (!judge_state) continue; |
||||
|
||||
if (!judge_state.language) continue; |
||||
|
||||
const key = syzoj.utils.getFormattedCodeKey(judge_state.code, judge_state.language); |
||||
if (!key) continue; |
||||
|
||||
let formatted_code = await FormattedCode.findOne({ where: { key: key } }); |
||||
|
||||
const code = await CodeFormatter(judge_state.code, syzoj.languages[judge_state.language].format); |
||||
if (code === null) { |
||||
console.error(`Format ${i} failed.`); |
||||
continue; |
||||
} |
||||
|
||||
if (!formatted_code) { |
||||
formatted_code = await FormattedCode.create({ |
||||
key: key, |
||||
code: code |
||||
}); |
||||
} else continue; // formatted_code.code = code;
|
||||
|
||||
try { |
||||
await formatted_code.save(); |
||||
console.error(`Format and save ${i} success.`); |
||||
} catch (e) { |
||||
console.error(`Save ${i} failed:`, e); |
||||
} |
||||
} |
||||
}; |
||||
|
||||
// NOTE: Uncomment and fill arguments to run.
|
||||
// fn(begin, end) // [begin, end)
|
Loading…
Reference in new issue