2010754de34ced1e07c46d30d7bc54a107840cc0
[angular-mojolicious.git] / angular-replicate.pl
1 #!/usr/bin/env perl
2 use warnings;
3 use strict;
4
5 use Mojo::UserAgent;
6 use Data::Dump qw(dump);
7
8 use lib 'common/mojo/lib';
9
10 my ( $from, $to ) = @ARGV;
11
12 die "usage: $0 http://from/data/database/ http://to/data/database/\n"
13 unless $from && $to;
14
15 my $client = Mojo::UserAgent->new;
16
17 my $got = $client->get( $from )->res->json;
18 warn "# from $from ",dump($got);
19
20 my $database = $got->{name};
21 my $entities = $got->{entities};
22
23 sub _url_entity {
24         my ($url,$entity) = @_;
25         $url =~ s{/?$}{/}; # add slash at end
26         $url .= $entity;
27         warn "URL $url\n";
28         return $url;
29 }
30
31 if ( $database && $entities ) {
32         foreach my $entity ( keys %$entities ) {
33                 my $all = $client->get( _url_entity( $from => $entity ) )->res->json;
34                 warn "## all = ",dump($all);
35                 warn "# fetched ", $#$all + 1, " $entity entities from $from";
36                 foreach my $e ( @$all ) {
37                         delete $e->{_id}; # sanitize data from older implementation
38                         my $json = Mojo::JSON->new->encode( $e );
39                         my $response = $client->post( _url_entity( $to => $entity ), $json )->res->body;
40                         warn "# replicated $entity\n$json\n",dump($response);
41                 }
42         }
43 }
44