330d5a6e0cee6c140d62fc8b30443089eadc5de9
[gruntmaster-data.git] / redis-to-postgres
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 (problem_runner() // $meta->{runner}) eq 'File' ? (tests => encode_json $meta->{tests}) : (),
41 exists $meta->{files} ? (versource => $meta->{files}{ver}{content}, verformat => $meta->{files}{ver}{format}) : ()
42 })
43 }
44
45 for (contests) {
46 $db->contests->create({
47 id => $_,
48 name => contest_name,
49 start => contest_start,
50 stop => contest_end,
51 owner => contest_owner,
52 });
53 local $Gruntmaster::OldData::contest = $_;
54 for (problems) {
55 $db->contest_problems->create({
56 contest => $Gruntmaster::OldData::contest,
57 problem => $_,
58 });
59 }
60 for (1 .. jobcard) {
61 eval {
62 my $meta = job_inmeta;
63 push @jobs, {
64 contest => $Gruntmaster::OldData::contest,
65 daemon => job_daemon,
66 date => job_date,
67 defined job_errors() ? (errors => job_errors) : (),
68 extension => job_extension,
69 format => $meta->{files}{prog}{format},
70 job_private() ? (private => job_private) : (),
71 problem => job_problem,
72 result => job_result,
73 result_text => job_result_text,
74 results => encode_json job_results,
75 source => $meta->{files}{prog}{content},
76 owner => job_user,
77 };
78 }
79 }
80 }
81
82 for (1 .. jobcard) {
83 eval{
84 my $meta = job_inmeta;
85 push @jobs, {
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 @jobs = map { $_->{owner} = $_->{owner} eq 'S7012MY' ? 'Petru' : $_->{owner}; $_} @jobs;
103 $db->jobs->create($_) for sort {$a->{date} <=> $b->{date}} @jobs;
This page took 0.027529 seconds and 3 git commands to generate.