You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by va...@apache.org on 2020/07/20 22:34:38 UTC
[couchdb] 05/10: [wip] add couch_jobs:fold/4
This is an automated email from the ASF dual-hosted git repository.
vatamane pushed a commit to branch prototype/fdb-replicator
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit f481258fa14bfe9609b71498b0e2e10d4098bb65
Author: Nick Vatamaniuc <va...@apache.org>
AuthorDate: Mon Jul 20 18:30:05 2020 -0400
[wip] add couch_jobs:fold/4
---
src/couch_jobs/src/couch_jobs.erl | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/src/couch_jobs/src/couch_jobs.erl b/src/couch_jobs/src/couch_jobs.erl
index 88b4bf4..a20db8f 100644
--- a/src/couch_jobs/src/couch_jobs.erl
+++ b/src/couch_jobs/src/couch_jobs.erl
@@ -19,6 +19,7 @@
remove/3,
get_job_data/3,
get_job_state/3,
+ fold_jobs/4
% Job processing
accept/1,
@@ -104,6 +105,16 @@ get_job_state(Tx, Type, JobId) when is_binary(JobId) ->
end).
+-spec fold_jobs(jtx(), job_type(), fun(), any()) -> any().
+fold_jobs(Tx, Type, Fun, UserAcc) when is_function(Fun, 4) ->
+ couch_jobs_fdb:tx(couch_jobs_fdb:get_jtx(Tx), fun(JTX) ->
+ lists:foldl(fun(#{JobId => {_Seq, JobState, DataEnc}}, Acc) ->
+ Data = couch_jobs_fdb:decode(DataEnc),
+ Fun({JTx, JobId, JobState, Data}, Acc)
+ end, UserAcc, couch_jobs_fdb:get_jobs(JTx, Type))
+ end).
+
+
%% Job processor API
-spec accept(job_type()) -> {ok, job(), job_data()} | {error, any()}.