#!/usr/bin/perl -w use v5.14; use Gruntmaster::Data; use Gruntmaster::OldData; use JSON qw/encode_json/; my $db = Gruntmaster::Data->connect('dbi:Pg:'); for (users) { $db->users->create({ id => $_, name => user_name, email => user_email, phone => user_phone, town => user_town, university => user_university, level => user_level, user_lastjob() ? (lastjob => user_lastjob) : () }) } my @jobs; for (problems) { my $meta = problem_meta; $db->problems->create({ id => $_, author => problem_author, generator => problem_generator() // $meta->{generator}, judge => problem_judge() // $meta->{judge}, level => problem_level, name => problem_name, olimit => problem_olimit() // $meta->{olimit}, owner => problem_owner, private => (problem_private() ? 1 : 0), runner => problem_runner() // $meta->{runner}, statement => problem_statement, testcnt => problem_testcnt() // $meta->{testcnt}, timeout => problem_timeout() // $meta->{timeout}, (problem_runner() // $meta->{runner}) eq 'File' ? (tests => encode_json $meta->{tests}) : (), exists $meta->{files} ? (versource => $meta->{files}{ver}{content}, verformat => $meta->{files}{ver}{format}) : () }) } for (contests) { $db->contests->create({ id => $_, name => contest_name, start => contest_start, stop => contest_end, owner => contest_owner, }); local $Gruntmaster::OldData::contest = $_; for (problems) { eval { my $meta = problem_meta; $db->problems->create({ id => $_, author => problem_author, generator => problem_generator() // $meta->{generator}, judge => problem_judge() // $meta->{judge}, level => problem_level, name => problem_name, olimit => problem_olimit() // $meta->{olimit}, owner => problem_owner, private => (problem_private() ? 1 : 0), runner => problem_runner() // $meta->{runner}, statement => problem_statement, testcnt => problem_testcnt() // $meta->{testcnt}, timeout => problem_timeout() // $meta->{timeout}, (problem_runner() // $meta->{runner}) eq 'File' ? (tests => encode_json $meta->{tests}) : (), exists $meta->{files} ? (versource => $meta->{files}{ver}{content}, verformat => $meta->{files}{ver}{format}) : () }) }; $db->contest_problems->create({ contest => $Gruntmaster::OldData::contest, problem => $_, }); } for (1 .. jobcard) { eval { my $meta = job_inmeta; push @jobs, { contest => $Gruntmaster::OldData::contest, daemon => job_daemon, date => job_date, defined job_errors() ? (errors => job_errors) : (), extension => job_extension, format => $meta->{files}{prog}{format}, job_private() ? (private => job_private) : (), problem => job_problem, result => job_result, result_text => job_result_text, results => encode_json job_results, source => $meta->{files}{prog}{content}, owner => job_user, }; } } } for (1 .. jobcard) { eval{ my $meta = job_inmeta; push @jobs, { daemon => job_daemon, date => job_date, defined job_errors() ? (errors => job_errors) : (), extension => job_extension, format => $meta->{files}{prog}{format}, job_private() ? (private => job_private) : (), problem => job_problem, result => job_result, result_text => job_result_text, results => encode_json job_results, source => $meta->{files}{prog}{content}, owner => job_user, }; } } @jobs = map { $_->{owner} = $_->{owner} eq 'S7012MY' ? 'Petru' : $_->{owner}; $_} @jobs; $db->jobs->create($_) for sort {$a->{date} <=> $b->{date}} @jobs;