X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=migrate-db.pl;fp=migrate-db.pl;h=c91119e67033b3b57a4d57a4092cb278768119e7;hb=34f2989547b1a667194cb77ec533e1854a558bfa;hp=0000000000000000000000000000000000000000;hpb=bce5fdbe6f8052151646caf4b904e53b877b2db2;p=angular-drzb diff --git a/migrate-db.pl b/migrate-db.pl new file mode 100755 index 0000000..c91119e --- /dev/null +++ b/migrate-db.pl @@ -0,0 +1,79 @@ +#!/usr/bin/perl +use warnings; +use strict; + +use Mojo::UserAgent; +use Data::Dump qw(dump); + +my $ua = Mojo::UserAgent->new; + +my $from = 'http://10.60.0.95:5984/drzb2013'; +my $to = 'http://10.60.0.92:5984/drzb2013'; + +my $docs = $ua->get("$from/_all_docs?include_docs=true")->res->json; + +#warn "## docs = ",dump($docs); + +foreach my $doc ( map { $_->{doc} } @{ $docs->{rows} } ) { + warn "OLD ",dump($doc); + + my $new; + + $new->{$_} = delete( $doc->{$_} ) foreach ( qw( _id _rev ) ); + + $new->{user} = delete $doc->{person}; + $new->{id} = delete $doc->{'$id'}; + + $new->{user}->{registration_type} = delete $doc->{type}; + + $new->{user}->{address} = delete $new->{user}->{address1}; + $new->{user}->{firstname} = delete $new->{user}->{name}; + $new->{user}->{zip_code} = delete $new->{user}->{zip}; + $new->{user}->{organization} = delete $new->{user}->{inst}; + + $new->{user}->{dinner} = delete $doc->{dinner}; + $new->{user}->{hpd_member} = delete $doc->{hpdmember}; + $new->{user}->{student} = delete $doc->{student}; + $new->{user}->{reception} = delete $doc->{reception}; + + if ( $doc->{r1} eq 'yes' ) { + $new->{user}->{r1} = { + required => Mojo::JSON->true, + OIB => delete $doc->{r1oib}, + address => delete $doc->{r1address}, + organization => delete $doc->{r1inst}, + }; + warn "need R1"; + } + + if ( $doc->{work}->{title} ) { + $new->{work}->{$_} = delete $doc->{work}->{$_} foreach (qw( title abstract )); + $new->{work}->{type} = $new->{user}->{registration_type}; + my @persons = @{ delete $doc->{work}->{authors} }; + foreach my $person ( @persons ) { + $person->{firstname} = delete $person->{name}; + $person->{organization} = delete $person->{inst}; + push @{ $new->{work}->{persons} }, $person; + } + } + + $new->{entity} = 'registration'; + + warn "NEW ",dump($new); + + warn "LEFT = ",dump($doc); + + my $id = $new->{_id} || die "no _id in new"; + my $result = $ua->put("$to/$id" => Mojo::JSON->new->encode( $new ))->res->json; + + die "ERROR $id ",dump($result) unless $result->{ok}; + + warn "SAVED $id into $to\n"; + +} + +__END__ + +warn dump( + $ua->get("$to/_all_docs?include_docs=true")->res->json +);