projects
/
ILL-Zotero-RT
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
f0427d8
)
extract x_sync handling and introduce persistant x_meta
author
Dobrica Pavlinusic
<dpavlin@rot13.org>
Thu, 2 Aug 2012 14:06:33 +0000
(16:06 +0200)
committer
Dobrica Pavlinusic
<dpavlin@rot13.org>
Thu, 2 Aug 2012 14:06:33 +0000
(16:06 +0200)
CouchDB.pm
patch
|
blob
|
history
diff --git
a/CouchDB.pm
b/CouchDB.pm
index
c2c9cda
..
016a7d8
100644
(file)
--- a/
CouchDB.pm
+++ b/
CouchDB.pm
@@
-86,6
+86,18
@@
sub post {
$self->request(POST => $url, $json);
}
$self->request(POST => $url, $json);
}
+sub x_sync {
+ my ($json,$old) = @_;
+ $json->{$_} = $old->{$_} foreach keys %{ $old->{x_meta} }; # special persistent x_meta fields
+ my $json_md5 = md5_hex encode_json $json;
+ $json->{x_sync}->{json_md5} = $json_md5;
+ my $o = $old->{x_sync}->{json_md5};
+ my $n = $json->{x_sync}->{json_md5};
+ warn "## x_sync $o ", $o eq $n ? '==' : '!=', " $n\n";
+ return $json;
+}
+
+
sub modify {
my ($self, $url, $json) = @_;
sub modify {
my ($self, $url, $json) = @_;
@@
-104,11
+116,9
@@
sub modify {
$json->{_rev} = $old->{_rev};
}
$json->{_rev} = $old->{_rev};
}
- my $json_md5 = md5_hex encode_json $json;
- $json->{x_sync}->{json_md5} = $json_md5;
+ $json = x_sync($json, $old);
- warn "# json_md5 $json_md5 == $old->{x_sync}->{json_md5}\n";
- if ( $json_md5 ne $old->{x_sync}->{json_md5} ) {
+ if ( $json->{x_sync}->{json_md5} ne $old->{x_sync}->{json_md5} ) {
warn "# modify $url";
$ret = $self->put( $url => $json );
} else {
warn "# modify $url";
$ret = $self->put( $url => $json );
} else {
@@
-118,6
+128,9
@@
sub modify {
}
} else {
$json = $json->({}) if ref $json eq 'CODE';
}
} else {
$json = $json->({}) if ref $json eq 'CODE';
+
+ $json = x_sync($json);
+
warn "# insert $url ", dump($json);
$ret = $self->put( $url => $json );
}
warn "# insert $url ", dump($json);
$ret = $self->put( $url => $json );
}