use strict;
use DBI;
-use Net::Riak;
+use RiakSearch;
use Data::Dump qw/dump/;
-my $limit = "limit 3";
+my $limit = "limit 5";
my $riak_url = 'http://10.60.0.92:8098';
my $dbi = 'DBI:mysql:dbname=koha;host=10.60.0.10;port=3306';
my @tables = qw(
);
my $dbh = DBI->connect($dbi,"","") || die $DBI::errstr;
-my $riak = Net::Riak->new(host => $riak_url );
+my $riak = RiakSearch->new( $riak_url );
-my $xml_bucket = $riak->bucket( 'koha.marcxml' );
-$xml_bucket->set_properties({
- precommit => [ { mod => 'riak_search_kv_hook', fun => 'precommit' } ],
-});
+warn $riak->request( 'GET' => '/koha.marcxml' );
+sub riak_search_kv_hook {
+ $riak->request( 'PUT' => shift, { props => { precommit => [ { mod => 'riak_search_kv_hook', fun => 'precommit' } ] } });
+}
+
+riak_search_kv_hook '/koha.marcxml';
foreach my $table ( @tables ) {
print "import ", $sth->rows, " rows from $table pk:",dump( @pk ),"...\n";
- my $bucket = $riak->bucket( 'koha.' . $table );
- $bucket->set_properties({
- precommit => [ { mod => 'riak_search_kv_hook', fun => 'precommit' } ],
- });
+ riak_search_kv_hook "koha.$table";
while (my $row = $sth->fetchrow_hashref() ) {
my $key = join('_', map { $row->{$_} } @pk);
if ( my $marcxml = delete $row->{marcxml} ) {
- my $request = $riak->client->new_request(
- 'PUT', [ 'riak', "koha.marcxml/$key" ]
- );
- $request->header('Content-Type' => 'text/xml');
- $request->content($marcxml);
- my $response = $riak->client->send_request($request);
-
- warn "$riak_url/riak/koha.marcxml/$key ", length($marcxml), " bytes\n";
-
- unless ($response->is_success) {
- die "Error put marcxml:", dump( $response );
- }
+ $riak->request( 'PUT' => "/koha.marcxml/$key", $marcxml, {
+ 'Content-Type' => 'text/xml',
+ } );
}
warn "# $key ",dump($row);
- $bucket->new_object( $key => $row )->store;
- warn "$riak_url/riak/koha.$table/$key\n";
+
+ my $headers;
+ if ( exists $row->{biblionumber} && $key !~ m/biblionumber/ ) {
+ $headers->{Links} = '/koha.biblio/' . $row->{biblionumber};
+ }
+ $riak->request( 'PUT' => "/koha.$table/$key", $row, $headers );
}
}