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 <[email protected]> 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()}.
