You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ii...@apache.org on 2025/07/10 08:37:03 UTC
(couchdb) 02/09: Replace csrt_util:map_to_rctx/1 with csrt_entry:from_map/1
This is an automated email from the ASF dual-hosted git repository.
iilyak pushed a commit to branch couch-stats-resource-tracker-v3-rebase-http-4
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit 660c9afdf0370b2171fd92a98d0d5413a09199a4
Author: ILYA Khlopotov <ii...@apache.org>
AuthorDate: Wed Jun 25 07:49:54 2025 -0700
Replace csrt_util:map_to_rctx/1 with csrt_entry:from_map/1
---
src/couch_stats/src/csrt_entry.erl | 51 +++++++++++++++++++++++-
src/couch_stats/src/csrt_util.erl | 50 -----------------------
src/couch_stats/test/eunit/csrt_logger_tests.erl | 2 +-
3 files changed, 51 insertions(+), 52 deletions(-)
diff --git a/src/couch_stats/src/csrt_entry.erl b/src/couch_stats/src/csrt_entry.erl
index 61949c65f..263572341 100644
--- a/src/couch_stats/src/csrt_entry.erl
+++ b/src/couch_stats/src/csrt_entry.erl
@@ -17,7 +17,8 @@
-export([
value/2,
- key/1
+ key/1,
+ from_map/1
]).
-spec value(#rctx{}, rctx_field()) -> any().
@@ -92,3 +93,51 @@ key_from_binary(Other) -> key_error(Other).
key_error(Key) ->
{error, {invalid_key, Key}}.
+-spec from_map(Map :: map()) -> rctx().
+
+from_map(Map) ->
+ maps:fold(fun set_field/3, #rctx{}, Map).
+
+-spec set_field(Field :: rctx_field(), Val :: any(), Rctx :: rctx()) -> rctx().
+set_field(updated_at, Val, Rctx) ->
+ Rctx#rctx{updated_at = Val};
+set_field(started_at, Val, Rctx) ->
+ Rctx#rctx{started_at = Val};
+set_field(pid_ref, Val, Rctx) ->
+ Rctx#rctx{pid_ref = Val};
+set_field(nonce, Val, Rctx) ->
+ Rctx#rctx{nonce = Val};
+set_field(dbname, Val, Rctx) ->
+ Rctx#rctx{dbname = Val};
+set_field(username, Val, Rctx) ->
+ Rctx#rctx{username = Val};
+set_field(db_open, Val, Rctx) ->
+ Rctx#rctx{db_open = Val};
+set_field(docs_read, Val, Rctx) ->
+ Rctx#rctx{docs_read = Val};
+set_field(docs_written, Val, Rctx) ->
+ Rctx#rctx{docs_written = Val};
+set_field(js_filter, Val, Rctx) ->
+ Rctx#rctx{js_filter = Val};
+set_field(js_filtered_docs, Val, Rctx) ->
+ Rctx#rctx{js_filtered_docs = Val};
+set_field(rows_read, Val, Rctx) ->
+ Rctx#rctx{rows_read = Val};
+set_field(type, Val, Rctx) ->
+ Rctx#rctx{type = Val};
+set_field(get_kp_node, Val, Rctx) ->
+ Rctx#rctx{get_kp_node = Val};
+set_field(get_kv_node, Val, Rctx) ->
+ Rctx#rctx{get_kv_node = Val};
+%% "Example to extend CSRT"
+%% set_field(write_kp_node, Val, Rctx) ->
+%% Rctx#rctx{write_kp_node = Val};
+%% set_field(write_kv_node, Val, Rctx) ->
+%% Rctx#rctx{write_kv_node = Val};
+set_field(changes_returned, Val, Rctx) ->
+ Rctx#rctx{changes_returned = Val};
+set_field(ioq_calls, Val, Rctx) ->
+ Rctx#rctx{ioq_calls = Val};
+set_field(_, _, Rctx) ->
+ %% Unknown key, could throw but just move on
+ Rctx.
diff --git a/src/couch_stats/src/csrt_util.erl b/src/couch_stats/src/csrt_util.erl
index 4da5dc610..21bfd8e7d 100644
--- a/src/couch_stats/src/csrt_util.erl
+++ b/src/couch_stats/src/csrt_util.erl
@@ -57,7 +57,6 @@
-export([
set_fabric_init_p/2,
set_fabric_init_p/3,
- map_to_rctx/1,
rctx_record_info/0
]).
@@ -226,55 +225,6 @@ to_json(#rctx{} = Rctx) ->
ioq_calls => Rctx#rctx.ioq_calls
}.
-%% NOTE: this does not do the inverse of to_json, should it convert types?
--spec map_to_rctx(Map :: map()) -> rctx().
-map_to_rctx(Map) ->
- maps:fold(fun map_to_rctx_field/3, #rctx{}, Map).
-
--spec map_to_rctx_field(Field :: rctx_field(), Val :: any(), Rctx :: rctx()) -> rctx().
-map_to_rctx_field(updated_at, Val, Rctx) ->
- Rctx#rctx{updated_at = Val};
-map_to_rctx_field(started_at, Val, Rctx) ->
- Rctx#rctx{started_at = Val};
-map_to_rctx_field(pid_ref, Val, Rctx) ->
- Rctx#rctx{pid_ref = Val};
-map_to_rctx_field(nonce, Val, Rctx) ->
- Rctx#rctx{nonce = Val};
-map_to_rctx_field(dbname, Val, Rctx) ->
- Rctx#rctx{dbname = Val};
-map_to_rctx_field(username, Val, Rctx) ->
- Rctx#rctx{username = Val};
-map_to_rctx_field(db_open, Val, Rctx) ->
- Rctx#rctx{db_open = Val};
-map_to_rctx_field(docs_read, Val, Rctx) ->
- Rctx#rctx{docs_read = Val};
-map_to_rctx_field(docs_written, Val, Rctx) ->
- Rctx#rctx{docs_written = Val};
-map_to_rctx_field(js_filter, Val, Rctx) ->
- Rctx#rctx{js_filter = Val};
-map_to_rctx_field(js_filtered_docs, Val, Rctx) ->
- Rctx#rctx{js_filtered_docs = Val};
-map_to_rctx_field(rows_read, Val, Rctx) ->
- Rctx#rctx{rows_read = Val};
-map_to_rctx_field(type, Val, Rctx) ->
- Rctx#rctx{type = Val};
-map_to_rctx_field(get_kp_node, Val, Rctx) ->
- Rctx#rctx{get_kp_node = Val};
-map_to_rctx_field(get_kv_node, Val, Rctx) ->
- Rctx#rctx{get_kv_node = Val};
-%% "Example to extend CSRT"
-%% map_to_rctx_field(write_kp_node, Val, Rctx) ->
-%% Rctx#rctx{write_kp_node = Val};
-%% map_to_rctx_field(write_kv_node, Val, Rctx) ->
-%% Rctx#rctx{write_kv_node = Val};
-map_to_rctx_field(changes_returned, Val, Rctx) ->
- Rctx#rctx{changes_returned = Val};
-map_to_rctx_field(ioq_calls, Val, Rctx) ->
- Rctx#rctx{ioq_calls = Val};
-map_to_rctx_field(_, _, Rctx) ->
- %% Unknown key, could throw but just move on
- Rctx.
-
-spec add_delta(T :: term(), Delta :: maybe_delta()) -> term_delta().
add_delta(T, undefined) ->
T;
diff --git a/src/couch_stats/test/eunit/csrt_logger_tests.erl b/src/couch_stats/test/eunit/csrt_logger_tests.erl
index 74c88590b..484817313 100644
--- a/src/couch_stats/test/eunit/csrt_logger_tests.erl
+++ b/src/couch_stats/test/eunit/csrt_logger_tests.erl
@@ -170,7 +170,7 @@ rctx_gen(Opts0) ->
'_do_changes' => true
},
Opts = maps:merge(Base, Opts0),
- csrt_util:map_to_rctx(
+ csrt_entry:from_map(
maps:fold(
fun
%% Hack for changes because we need to modify both