Update schema
[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,
15 town => user_town,
16 university => user_university,
17 level => user_level,
18 user_lastjob() ? (lastjob => user_lastjob) : ()
19 })
20}
21
22my @jobs;
23
24for (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
44for (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
81for (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;
This page took 0.015387 seconds and 4 git commands to generate.