From a74b67de2b15a311d6a6b3e6265828f8cafa4922 Mon Sep 17 00:00:00 2001
From: Denis Smirnov <sd@picodata.io>
Date: Fri, 20 Jan 2023 11:18:01 +0700
Subject: [PATCH] refactoring: connection type methods

---
 sbroad-cartridge/src/cartridge/router.rs | 16 ++++------------
 sbroad-core/src/executor/ir.rs           | 10 ++++++++++
 2 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/sbroad-cartridge/src/cartridge/router.rs b/sbroad-cartridge/src/cartridge/router.rs
index 283efc8b0a..5e1ac8988f 100644
--- a/sbroad-cartridge/src/cartridge/router.rs
+++ b/sbroad-cartridge/src/cartridge/router.rs
@@ -467,13 +467,9 @@ impl RouterRuntime {
         query_type: QueryType,
         conn_type: ConnectionType,
     ) -> Result<Box<dyn Any>, SbroadError> {
-        let is_readonly = match &conn_type {
-            ConnectionType::Read => true,
-            ConnectionType::Write => false,
-        };
         match &query_type {
-            QueryType::DQL => self.dql_on_some(rs_ir, is_readonly),
-            QueryType::DML => self.dml_on_some(rs_ir, is_readonly),
+            QueryType::DQL => self.dql_on_some(rs_ir, conn_type.is_readonly()),
+            QueryType::DML => self.dml_on_some(rs_ir, conn_type.is_readonly()),
         }
     }
 
@@ -547,13 +543,9 @@ impl RouterRuntime {
         query_type: QueryType,
         conn_type: ConnectionType,
     ) -> Result<Box<dyn Any>, SbroadError> {
-        let is_readonly = match &conn_type {
-            ConnectionType::Read => true,
-            ConnectionType::Write => false,
-        };
         match &query_type {
-            QueryType::DQL => self.dql_on_all(required, optional, is_readonly),
-            QueryType::DML => self.dml_on_all(required, optional, is_readonly),
+            QueryType::DQL => self.dql_on_all(required, optional, conn_type.is_readonly()),
+            QueryType::DML => self.dml_on_all(required, optional, conn_type.is_readonly()),
         }
     }
 }
diff --git a/sbroad-core/src/executor/ir.rs b/sbroad-core/src/executor/ir.rs
index 40e28973fb..e03cdf5871 100644
--- a/sbroad-core/src/executor/ir.rs
+++ b/sbroad-core/src/executor/ir.rs
@@ -29,6 +29,16 @@ pub enum ConnectionType {
     Write,
 }
 
+impl ConnectionType {
+    #[must_use]
+    pub fn is_readonly(&self) -> bool {
+        match self {
+            ConnectionType::Read => true,
+            ConnectionType::Write => false,
+        }
+    }
+}
+
 #[derive(Debug, Default, Clone, Deserialize, Serialize, PartialEq, Eq)]
 pub struct ExecutionPlan {
     plan: Plan,
-- 
GitLab