Advertisement
bigelephant29

Untitled

Sep 17th, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var fs = require('fs');
  2. var mysql = require('mysql');
  3. var after = require('lodash.after');
  4. var mkdirp = require('mkdirp');
  5.  
  6. if(process.argv.length <= 2) {
  7.     process.exit();
  8. }
  9.  
  10. var challenge_id = process.argv[2];
  11.  
  12. var connection = mysql.createConnection({
  13.     host: '127.0.0.1',
  14.     user: 'cheatTest',
  15.     password: 'che@tTest',
  16.     database: 'judge'
  17. });
  18.  
  19. connection.connect();
  20.  
  21. connection.query(
  22.      'SELECT challenge_prob.problem_id' +
  23.     ' FROM challenge_prob' +
  24.     ' INNER JOIN problem' +
  25.     ' ON problem.problem_id = challenge_prob.problem_id' +
  26.     ' WHERE challenge_prob.challenge_id = ' + challenge_id,
  27.     (err, rows) => {
  28.         if(err) {
  29.             console.log(err);
  30.             return;
  31.         }
  32.         var done = after(rows.length, () => {
  33.             process.exit();
  34.         });
  35.         rows.forEach( row => {
  36.             prob_process(challenge_id, row.problem_id, done);
  37.         });
  38.     }
  39. );
  40.  
  41. function prob_process(chal_id, prob_id, done) {
  42.     connection.query(
  43.          'SELECT s.submission_id, s.challenge_id, s.problem_id, s.submission_date, s.submission_code,' +
  44.         ' u.student_id, u.user_level' +
  45.         ' FROM user as u' +
  46.         ' INNER JOIN (' +
  47.         '   SELECT s1.submission_id, s1.challenge_id, s1.problem_id,' +
  48.         '   s1.user_id, s1.submission_date, s1.submission_code' +
  49.         '   FROM submission as s1' +
  50.         '   INNER JOIN (' +
  51.         '     SELECT MAX(submission_id) as id' +
  52.         '     FROM submission' +
  53.         '     WHERE challenge_id = ' + chal_id +
  54.         '     AND problem_id = ' + prob_id +
  55.         '     GROUP BY user_id' +
  56.         '   ) as s2 ON s1.submission_id = s2.id' +
  57.         ' ) as s ON s.user_id = u.user_id' +
  58.         ' WHERE u.user_level = 1',
  59.         (err, rows) => {
  60.             if(err) {
  61.                 console.log(err);
  62.                 done();
  63.                 return;
  64.             }
  65.             mkdirp('./' + prob_id, (err) => {
  66.                 if(err) {
  67.                     console.log(err);
  68.                     done();
  69.                     return;
  70.                 }
  71.                 rows.forEach( item => {
  72.                     fs.writeFileSync(prob_id + '/' + item.student_id + '.cpp', item.submission_code);
  73.                     console.log(prob_id + '/' + item.student_id + '.cpp ' + item.submission_id + ' done!');
  74.                 });
  75.                 done();
  76.             });
  77.         }
  78.     );
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement