let Sequelize = require('sequelize');
let db = syzoj.db;

let JudgeState = syzoj.model('judge_state');
let CustomTest = syzoj.model('custom_test');

let model = db.define('waiting_judge', {
  id: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true },
  judge_id: { type: Sequelize.INTEGER },

  // Smaller is higher
  priority: { type: Sequelize.INTEGER },

  type: {
    type: Sequelize.ENUM,
    values: ['submission', 'custom-test']
  }
}, {
  timestamps: false,
  tableName: 'waiting_judge',
  indexes: [
    {
      fields: ['judge_id'],
    }
  ]
});

let Model = require('./common');
class WaitingJudge extends Model {
  static async create(val) {
    return WaitingJudge.fromRecord(WaitingJudge.model.build(Object.assign({
      judge_id: 0,
      priority: 0
    }, val)));
  }

  async getCustomTest() {
    return CustomTest.fromID(this.judge_id);
  }

  async getJudgeState() {
    return JudgeState.fromID(this.judge_id);
  }

  getModel() { return model; }
}

WaitingJudge.model = model;

module.exports = WaitingJudge;