added user.org_member
[angular-drzb] / migrate-db.pl
1 #!/usr/bin/perl
2 use warnings;
3 use strict;
4
5 use Mojo::UserAgent;
6 use Data::Dump qw(dump);
7
8 my $ua = Mojo::UserAgent->new;
9
10 my $from = 'http://10.60.0.95:5984/drzb2013';
11 my $to   = 'http://10.60.0.95:5984/drzb2013v2';
12
13 my $docs = $ua->get("$from/_all_docs?include_docs=true")->res->json;
14
15 #warn "## docs = ",dump($docs);
16
17 foreach my $doc ( map { $_->{doc} } @{ $docs->{rows} } ) {
18         warn "OLD ",dump($doc);
19
20         my $new;
21
22         $new->{$_} = lc( delete( $doc->{$_} ) ) foreach ( qw( _id _rev ) );
23
24         $new->{user} = delete $doc->{person};
25         $new->{id}   = delete $doc->{'$id'};
26
27         $new->{user}->{registration_type} = delete $doc->{type} || die;
28
29         $new->{user}->{address}   = delete $new->{user}->{address1};
30         $new->{user}->{firstname} = delete $new->{user}->{name};
31         $new->{user}->{zip_code}  = delete $new->{user}->{zip};
32         $new->{user}->{organization}  = delete $new->{user}->{inst};
33
34         $new->{user}->{dinner}     = delete $doc->{dinner};
35         $new->{user}->{hpd_member} = delete $doc->{hpdmember};
36         $new->{user}->{student}    = delete $doc->{student};
37         $new->{user}->{reception}  = delete $doc->{reception};
38
39         if ( $doc->{r1} eq 'yes' ) {
40                 $new->{user}->{r1} = {
41                         required => Mojo::JSON->true,
42                         OIB     => delete $doc->{r1oib},
43                         address => delete $doc->{r1address},
44                         organization => delete $doc->{r1inst},
45                 };
46                 warn "need R1";
47         }
48
49         if ( $doc->{work}->{title} ) {
50                 $new->{work}->{$_} = delete $doc->{work}->{$_} foreach (qw( title abstract ));
51                 $new->{work}->{type} = $new->{user}->{registration_type};
52                 my @persons = @{ delete $doc->{work}->{authors} };
53                 foreach my $person ( @persons ) {
54                         $person->{firstname} = delete $person->{name};
55                         $person->{organization} = delete $person->{inst};
56                         push @{ $new->{work}->{persons} }, $person;
57                 }
58         }
59
60         $new->{entity} = 'registration';
61
62         warn "NEW ",dump($new);
63
64         warn "LEFT = ",dump($doc);
65
66         my $id = $new->{_id} || die "no _id in new";
67         my $result = $ua->put("$to/$id" => Mojo::JSON->new->encode( $new ))->res->json;
68
69         die "ERROR $to/$id ",dump($result) unless $result->{ok};
70
71         warn "SAVED $id into $to\n";
72
73 }
74
75 __END__
76
77 warn dump(
78         $ua->get("$to/_all_docs?include_docs=true")->res->json
79 );