]>
Commit | Line | Data |
---|---|---|
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 | phone => user_phone, | |
16 | town => user_town, | |
17 | university => user_university, | |
18 | level => user_level, | |
19 | user_lastjob() ? (lastjob => user_lastjob) : () | |
20 | }) | |
21 | } | |
22 | ||
23 | my @jobs; | |
24 | ||
25 | for (problems) { | |
26 | my $meta = problem_meta; | |
27 | $db->problems->create({ | |
28 | id => $_, | |
29 | author => problem_author, | |
30 | generator => problem_generator() // $meta->{generator}, | |
31 | judge => problem_judge() // $meta->{judge}, | |
32 | level => problem_level, | |
33 | name => problem_name, | |
34 | olimit => problem_olimit() // $meta->{olimit}, | |
35 | owner => problem_owner, | |
36 | private => (problem_private() ? 1 : 0), | |
37 | runner => problem_runner() // $meta->{runner}, | |
38 | statement => problem_statement, | |
39 | testcnt => problem_testcnt() // $meta->{testcnt}, | |
40 | timeout => problem_timeout() // $meta->{timeout}, | |
41 | (problem_runner() // $meta->{runner}) eq 'File' ? (tests => encode_json $meta->{tests}) : (), | |
42 | exists $meta->{files} ? (versource => $meta->{files}{ver}{content}, verformat => $meta->{files}{ver}{format}) : () | |
43 | }) | |
44 | } | |
45 | ||
46 | for (contests) { | |
47 | $db->contests->create({ | |
48 | id => $_, | |
49 | name => contest_name, | |
50 | start => contest_start, | |
51 | stop => contest_end, | |
52 | owner => contest_owner, | |
53 | }); | |
54 | local $Gruntmaster::OldData::contest = $_; | |
55 | for (problems) { | |
56 | eval { | |
57 | my $meta = problem_meta; | |
58 | $db->problems->create({ | |
59 | id => $_, | |
60 | author => problem_author, | |
61 | generator => problem_generator() // $meta->{generator}, | |
62 | judge => problem_judge() // $meta->{judge}, | |
63 | level => problem_level, | |
64 | name => problem_name, | |
65 | olimit => problem_olimit() // $meta->{olimit}, | |
66 | owner => problem_owner, | |
67 | private => (problem_private() ? 1 : 0), | |
68 | runner => problem_runner() // $meta->{runner}, | |
69 | statement => problem_statement, | |
70 | testcnt => problem_testcnt() // $meta->{testcnt}, | |
71 | timeout => problem_timeout() // $meta->{timeout}, | |
72 | (problem_runner() // $meta->{runner}) eq 'File' ? (tests => encode_json $meta->{tests}) : (), | |
73 | exists $meta->{files} ? (versource => $meta->{files}{ver}{content}, verformat => $meta->{files}{ver}{format}) : () | |
74 | }) | |
75 | }; | |
76 | $db->contest_problems->create({ | |
77 | contest => $Gruntmaster::OldData::contest, | |
78 | problem => $_, | |
79 | }); | |
80 | } | |
81 | for (1 .. jobcard) { | |
82 | eval { | |
83 | my $meta = job_inmeta; | |
84 | push @jobs, { | |
85 | contest => $Gruntmaster::OldData::contest, | |
86 | daemon => job_daemon, | |
87 | date => job_date, | |
88 | defined job_errors() ? (errors => job_errors) : (), | |
89 | extension => job_extension, | |
90 | format => $meta->{files}{prog}{format}, | |
91 | job_private() ? (private => job_private) : (), | |
92 | problem => job_problem, | |
93 | result => job_result, | |
94 | result_text => job_result_text, | |
95 | results => encode_json job_results, | |
96 | source => $meta->{files}{prog}{content}, | |
97 | owner => job_user, | |
98 | }; | |
99 | } | |
100 | } | |
101 | } | |
102 | ||
103 | for (1 .. jobcard) { | |
104 | eval{ | |
105 | my $meta = job_inmeta; | |
106 | push @jobs, { | |
107 | daemon => job_daemon, | |
108 | date => job_date, | |
109 | defined job_errors() ? (errors => job_errors) : (), | |
110 | extension => job_extension, | |
111 | format => $meta->{files}{prog}{format}, | |
112 | job_private() ? (private => job_private) : (), | |
113 | problem => job_problem, | |
114 | result => job_result, | |
115 | result_text => job_result_text, | |
116 | results => encode_json job_results, | |
117 | source => $meta->{files}{prog}{content}, | |
118 | owner => job_user, | |
119 | }; | |
120 | } | |
121 | } | |
122 | ||
123 | @jobs = map { $_->{owner} = $_->{owner} eq 'S7012MY' ? 'Petru' : $_->{owner}; $_} @jobs; | |
124 | $db->jobs->create($_) for sort {$a->{date} <=> $b->{date}} @jobs; |