Add get subcommand to gruntmaster-problem
[gruntmaster-data.git] / redis-to-postgres
CommitLineData
4ed3f8e7
MG
1#!/usr/bin/perl -w
2use v5.14;
3use Gruntmaster::Data;
4use Gruntmaster::OldData;
5
6use JSON qw/encode_json/;
7
8my $db = Gruntmaster::Data->connect('dbi:Pg:');
9
10for (users) {
11 $db->users->create({
12 id => $_,
13 name => user_name,
14 email => user_email,
9a987597 15 phone => user_phone,
4ed3f8e7
MG
16 town => user_town,
17 university => user_university,
18 level => user_level,
19 user_lastjob() ? (lastjob => user_lastjob) : ()
20 })
21}
22
23my @jobs;
24
25for (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},
9364b433 41 (problem_runner() // $meta->{runner}) eq 'File' ? (tests => encode_json $meta->{tests}) : (),
4ed3f8e7
MG
42 exists $meta->{files} ? (versource => $meta->{files}{ver}{content}, verformat => $meta->{files}{ver}{format}) : ()
43 })
44}
45
46for (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) {
20fa6cfc
MG
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 };
4ed3f8e7
MG
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
103for (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;
This page took 0.016646 seconds and 4 git commands to generate.