]>
Commit | Line | Data |
---|---|---|
4ed3f8e7 MG |
1 | #!/usr/bin/perl -w |
2 | use v5.14; | |
3 | use Gruntmaster::Data; | |
4 | use Gruntmaster::OldData; | |
5 | ||
6 | use JSON qw/encode_json/; | |
7 | ||
8 | my $db = Gruntmaster::Data->connect('dbi:Pg:'); | |
9 | ||
10 | for (users) { | |
11 | $db->users->create({ | |
12 | id => $_, | |
13 | name => user_name, | |
14 | email => user_email, | |
15 | town => user_town, | |
16 | university => user_university, | |
17 | level => user_level, | |
18 | user_lastjob() ? (lastjob => user_lastjob) : () | |
19 | }) | |
20 | } | |
21 | ||
22 | my @jobs; | |
23 | ||
24 | for (problems) { | |
25 | my $meta = problem_meta; | |
26 | $db->problems->create({ | |
27 | id => $_, | |
28 | author => problem_author, | |
29 | generator => problem_generator() // $meta->{generator}, | |
30 | judge => problem_judge() // $meta->{judge}, | |
31 | level => problem_level, | |
32 | name => problem_name, | |
33 | olimit => problem_olimit() // $meta->{olimit}, | |
34 | owner => problem_owner, | |
35 | private => (problem_private() ? 1 : 0), | |
36 | runner => problem_runner() // $meta->{runner}, | |
37 | statement => problem_statement, | |
38 | testcnt => problem_testcnt() // $meta->{testcnt}, | |
39 | timeout => problem_timeout() // $meta->{timeout}, | |
40 | exists $meta->{files} ? (versource => $meta->{files}{ver}{content}, verformat => $meta->{files}{ver}{format}) : () | |
41 | }) | |
42 | } | |
43 | ||
44 | for (contests) { | |
45 | $db->contests->create({ | |
46 | id => $_, | |
47 | name => contest_name, | |
48 | start => contest_start, | |
49 | stop => contest_end, | |
50 | owner => contest_owner, | |
51 | }); | |
52 | local $Gruntmaster::OldData::contest = $_; | |
53 | for (problems) { | |
54 | $db->contest_problems->create({ | |
55 | contest => $Gruntmaster::OldData::contest, | |
56 | problem => $_, | |
57 | }); | |
58 | } | |
59 | for (1 .. jobcard) { | |
60 | eval { | |
61 | my $meta = job_inmeta; | |
62 | push @jobs, { | |
63 | contest => $Gruntmaster::OldData::contest, | |
64 | daemon => job_daemon, | |
65 | date => job_date, | |
66 | defined job_errors() ? (errors => job_errors) : (), | |
67 | extension => job_extension, | |
68 | format => $meta->{files}{prog}{format}, | |
69 | job_private() ? (private => job_private) : (), | |
70 | problem => job_problem, | |
71 | result => job_result, | |
72 | result_text => job_result_text, | |
73 | results => encode_json job_results, | |
74 | source => $meta->{files}{prog}{content}, | |
75 | owner => job_user, | |
76 | }; | |
77 | } | |
78 | } | |
79 | } | |
80 | ||
81 | for (1 .. jobcard) { | |
82 | eval{ | |
83 | my $meta = job_inmeta; | |
84 | push @jobs, { | |
85 | daemon => job_daemon, | |
86 | date => job_date, | |
87 | defined job_errors() ? (errors => job_errors) : (), | |
88 | extension => job_extension, | |
89 | format => $meta->{files}{prog}{format}, | |
90 | job_private() ? (private => job_private) : (), | |
91 | problem => job_problem, | |
92 | result => job_result, | |
93 | result_text => job_result_text, | |
94 | results => encode_json job_results, | |
95 | source => $meta->{files}{prog}{content}, | |
96 | owner => job_user, | |
97 | }; | |
98 | } | |
99 | } | |
100 | ||
101 | @jobs = map { $_->{owner} = $_->{owner} eq 'S7012MY' ? 'Petru' : $_->{owner}; $_} @jobs; | |
102 | $db->jobs->create($_) for sort {$a->{date} <=> $b->{date}} @jobs; |