diff --git a/models/judge_state.js b/models/judge_state.js index af62a28..2a78998 100644 --- a/models/judge_state.js +++ b/models/judge_state.js @@ -40,6 +40,9 @@ let model = db.define('judge_state', { pending: { type: Sequelize.BOOLEAN }, max_memory: { type: Sequelize.INTEGER }, + // For NOI contest + compilation: { type: Sequelize.TEXT('medium'), json: true }, + result: { type: Sequelize.TEXT('medium'), json: true }, user_id: { type: Sequelize.INTEGER }, @@ -55,23 +58,23 @@ let model = db.define('judge_state', { type: { type: Sequelize.INTEGER }, type_info: { type: Sequelize.INTEGER } }, { - timestamps: false, - tableName: 'judge_state', - indexes: [ - { - fields: ['status'], - }, - { - fields: ['score'], - }, - { - fields: ['user_id'], - }, - { - fields: ['problem_id'], - } - ] -}); + timestamps: false, + tableName: 'judge_state', + indexes: [ + { + fields: ['status'], + }, + { + fields: ['score'], + }, + { + fields: ['user_id'], + }, + { + fields: ['problem_id'], + } + ] + }); let Model = require('./common'); class JudgeState extends Model { @@ -200,7 +203,7 @@ class JudgeState extends Model { this.max_memory = 0; } this.pending = true; - this.result = { }; + this.result = {}; await this.save(); /* diff --git a/modules/api_v2.js b/modules/api_v2.js index e1f2e98..2c2cb01 100644 --- a/modules/api_v2.js +++ b/modules/api_v2.js @@ -155,11 +155,28 @@ app.apiRouter.post('/api/v2/judge/peek', async (req, res) => { } }); -app.apiRouter.post('/api/v2/judge/update2', async (req, res) => { +app.apiRouter.post('/api/v2/judge/compiled', async (req, res) => { try { if (req.get('Token') !== syzoj.config.judge_token) return res.status(403).send({ err: 'Incorrect token' }); const data = req.body; + let JudgeState = syzoj.model('judge_state'); + let judge_state = await JudgeState.fromID(req.body.taskId); + judge_state.compilation = req.body.result; + await judge_state.save(); + + res.send({ return: 0 }); + } catch (e) { + syzoj.log(e); + res.status(500).send(e); + } +}); + +app.apiRouter.post('/api/v2/judge/finished', async (req, res) => { + try { + if (req.get('Token') !== syzoj.config.judge_token) return res.status(403).send({ err: 'Incorrect token' }); + let data = req.body; + let JudgeState = syzoj.model('judge_state'); let judge_state = await JudgeState.fromID(req.body.taskId); // await judge_state.updateResult(JSON.parse(req.body));