my $db = CouchDB->new('10.60.0.92', 5984);
eval { $db->put("zotero_$UserID") }; # create user database
+eval {
+ local $/ = undef;
+ my $view = <DATA>;
+ warn "# create $view";
+ $db->put("zotero_$UserID/_design/zotero" => decode_json $view)
+};
my @urls = map { "https://api.zotero.org/users/$UserID/$_?format=atom&content=json&order=dateModified&sort=desc" } qw( collections items );
# we don't need to fetch tags since we can generate using CouchDB views
}
}
+
+__DATA__
+{"_id":"_design/zotero","language":"javascript","views":{"itemType":{"map":"function(doc) {\n emit(doc.zapi.itemType,1);\n}","reduce":"_count"},"updated":{"map":"function(doc) {\n emit(doc.updated,1);\n}","reduce":"_count"},"tags":{"map":"function(doc) {\n \n doc.content.tags.forEach( function(v) {\n emit(v, doc._id);\n });\n}","reduce":"_count"},"link_up":{"map":"function(doc) {\n if ( doc.link[1].rel == 'up' )\n emit( doc.link[1].key, doc._id );\n}","reduce":"_count"},"year,publisher":{"map":"function(doc) {\n if ( doc.zapi.year )\n emit([doc.zapi.year, doc.content.publisher], 1);\n}","reduce":"_count"}}}