slbotbm commented on code in PR #3733:
URL: https://github.com/apache/iggy/pull/3733#discussion_r3707316218


##########
foreign/cpp/src/client.rs:
##########
@@ -1085,6 +1135,90 @@ impl Client {
         })
     }
 
+    pub fn get_user(&self, user_id: ffi::Identifier) -> 
Result<ffi::UserInfoDetails, String> {
+        let rust_user_id = RustIdentifier::try_from(user_id)
+            .map_err(|error| format!("Could not get user: invalid user 
identifier: {error}"))?;
+
+        RUNTIME.block_on(async {
+            let user = self
+                .inner
+                .get_user(&rust_user_id)
+                .await
+                .map_err(|error| format!("Could not get user '{rust_user_id}': 
{error}"))?;
+            ffi::UserInfoDetails::try_from(user)
+                .map_err(|error| format!("Could not get user '{rust_user_id}': 
{error}"))
+        })
+    }
+
+    pub fn get_users(&self) -> Result<Vec<ffi::UserInfo>, String> {
+        RUNTIME.block_on(async {
+            let users = self
+                .inner
+                .get_users()
+                .await
+                .map_err(|error| format!("Could not get users: {error}"))?;
+            Ok(users.into_iter().map(ffi::UserInfo::from).collect())
+        })
+    }
+
+    pub fn create_user(
+        &self,
+        username: String,
+        password: String,
+        status: u8,
+        has_permissions: bool,
+        permissions: ffi::Permissions,
+    ) -> Result<ffi::UserInfoDetails, String> {
+        let rust_status = RustUserStatus::from_code(status)
+            .map_err(|error| format!("Could not create user '{username}': 
{error}"))?;
+        let rust_permissions = has_permissions
+            .then(|| RustPermissions::try_from(permissions))
+            .transpose()
+            .map_err(|error| format!("Could not create user '{username}': 
{error}"))?;
+
+        RUNTIME.block_on(async {
+            let user = self
+                .inner
+                .create_user(&username, &password, rust_status, 
rust_permissions)
+                .await
+                .map_err(|error| format!("Could not create user '{username}': 
{error}"))?;
+            Ok(ffi::UserInfoDetails::from(user))
+        })
+    }
+
+    pub fn delete_user(&self, user_id: ffi::Identifier) -> Result<(), String> {
+        let rust_user_id = RustIdentifier::try_from(user_id)
+            .map_err(|error| format!("Could not delete user: invalid user 
identifier: {error}"))?;
+
+        RUNTIME.block_on(async {
+            self.inner
+                .delete_user(&rust_user_id)
+                .await
+                .map_err(|error| format!("Could not delete user 
'{rust_user_id}': {error}"))?;
+            Ok(())
+        })
+    }
+
+    pub fn update_user(

Review Comment:
   Done



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to