Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var fs = require('fs');
- var mysql = require('mysql');
- var after = require('lodash.after');
- var mkdirp = require('mkdirp');
- if(process.argv.length <= 2) {
- process.exit();
- }
- var challenge_id = process.argv[2];
- var connection = mysql.createConnection({
- host: '127.0.0.1',
- user: 'cheatTest',
- password: 'che@tTest',
- database: 'judge'
- });
- connection.connect();
- connection.query(
- 'SELECT challenge_prob.problem_id' +
- ' FROM challenge_prob' +
- ' INNER JOIN problem' +
- ' ON problem.problem_id = challenge_prob.problem_id' +
- ' WHERE challenge_prob.challenge_id = ' + challenge_id,
- (err, rows) => {
- if(err) {
- console.log(err);
- return;
- }
- var done = after(rows.length, () => {
- process.exit();
- });
- rows.forEach( row => {
- prob_process(challenge_id, row.problem_id, done);
- });
- }
- );
- function prob_process(chal_id, prob_id, done) {
- connection.query(
- 'SELECT s.submission_id, s.challenge_id, s.problem_id, s.submission_date, s.submission_code,' +
- ' u.student_id, u.user_level' +
- ' FROM user as u' +
- ' INNER JOIN (' +
- ' SELECT s1.submission_id, s1.challenge_id, s1.problem_id,' +
- ' s1.user_id, s1.submission_date, s1.submission_code' +
- ' FROM submission as s1' +
- ' INNER JOIN (' +
- ' SELECT MAX(submission_id) as id' +
- ' FROM submission' +
- ' WHERE challenge_id = ' + chal_id +
- ' AND problem_id = ' + prob_id +
- ' GROUP BY user_id' +
- ' ) as s2 ON s1.submission_id = s2.id' +
- ' ) as s ON s.user_id = u.user_id' +
- ' WHERE u.user_level = 1',
- (err, rows) => {
- if(err) {
- console.log(err);
- done();
- return;
- }
- mkdirp('./' + prob_id, (err) => {
- if(err) {
- console.log(err);
- done();
- return;
- }
- rows.forEach( item => {
- fs.writeFileSync(prob_id + '/' + item.student_id + '.cpp', item.submission_code);
- console.log(prob_id + '/' + item.student_id + '.cpp ' + item.submission_id + ' done!');
- });
- done();
- });
- }
- );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement