diff options
Diffstat (limited to 'src/mango/src/mango_json_bookmark.erl')
-rw-r--r-- | src/mango/src/mango_json_bookmark.erl | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/src/mango/src/mango_json_bookmark.erl b/src/mango/src/mango_json_bookmark.erl index 83fd00f29..8446e0c8a 100644 --- a/src/mango/src/mango_json_bookmark.erl +++ b/src/mango/src/mango_json_bookmark.erl @@ -10,7 +10,6 @@ % License for the specific language governing permissions and limitations under % the License. - -module(mango_json_bookmark). -export([ @@ -18,15 +17,14 @@ create/1 ]). - -include_lib("couch_mrview/include/couch_mrview.hrl"). -include("mango_cursor.hrl"). -include("mango.hrl"). -update_args(EncodedBookmark, #mrargs{skip = Skip} = Args) -> +update_args(EncodedBookmark, #mrargs{skip = Skip} = Args) -> Bookmark = unpack(EncodedBookmark), case is_list(Bookmark) of - true -> + true -> {startkey, Startkey} = lists:keyfind(startkey, 1, Bookmark), {startkey_docid, StartkeyDocId} = lists:keyfind(startkey_docid, 1, Bookmark), Args#mrargs{ @@ -37,35 +35,36 @@ update_args(EncodedBookmark, #mrargs{skip = Skip} = Args) -> false -> Args end. - -create(#cursor{bookmark_docid = BookmarkDocId, bookmark_key = BookmarkKey}) when BookmarkKey =/= undefined -> +create(#cursor{bookmark_docid = BookmarkDocId, bookmark_key = BookmarkKey}) when + BookmarkKey =/= undefined +-> QueryArgs = [ {startkey_docid, BookmarkDocId}, {startkey, BookmarkKey} ], - Bin = term_to_binary(QueryArgs, [compressed, {minor_version,1}]), + Bin = term_to_binary(QueryArgs, [compressed, {minor_version, 1}]), couch_util:encodeBase64Url(Bin); create(#cursor{bookmark = Bookmark}) -> Bookmark. - unpack(nil) -> nil; unpack(Packed) -> try Bookmark = binary_to_term(couch_util:decodeBase64Url(Packed), [safe]), verify(Bookmark) - catch _:_ -> - ?MANGO_ERROR({invalid_bookmark, Packed}) + catch + _:_ -> + ?MANGO_ERROR({invalid_bookmark, Packed}) end. verify(Bookmark) when is_list(Bookmark) -> - case lists:keymember(startkey, 1, Bookmark) andalso lists:keymember(startkey_docid, 1, Bookmark) of + case + lists:keymember(startkey, 1, Bookmark) andalso lists:keymember(startkey_docid, 1, Bookmark) + of true -> Bookmark; _ -> throw(invalid_bookmark) end; verify(_Bookmark) -> throw(invalid_bookmark). - -
\ No newline at end of file |