From 8a91e9a3d02bab8d23d4fc6e76b308cc2eecb396 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Thu, 8 Aug 2024 19:45:28 +0200 Subject: [PATCH] core/database_operations: replace single field struct with sqlx unwrap --- src/core/database_operations.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/core/database_operations.rs b/src/core/database_operations.rs index cae9dae..9cbc3c6 100644 --- a/src/core/database_operations.rs +++ b/src/core/database_operations.rs @@ -2,7 +2,6 @@ use anyhow::Context; use indoc::formatdoc; use itertools::Itertools; use nix::unistd::User; -use serde::{Deserialize, Serialize}; use sqlx::{prelude::*, MySqlConnection}; use crate::core::{ @@ -51,15 +50,10 @@ pub async fn drop_database(name: &str, connection: &mut MySqlConnection) -> anyh Ok(()) } -#[derive(Debug, Clone, FromRow, Serialize, Deserialize)] -struct DatabaseName { - database: String, -} - pub async fn get_database_list(connection: &mut MySqlConnection) -> anyhow::Result> { let unix_user = get_current_unix_user()?; - let databases = sqlx::query_as::<_, DatabaseName>( + let databases: Vec = sqlx::query( r#" SELECT `SCHEMA_NAME` AS `database` FROM `information_schema`.`SCHEMATA` @@ -70,12 +64,17 @@ pub async fn get_database_list(connection: &mut MySqlConnection) -> anyhow::Resu .bind(create_user_group_matching_regex(&unix_user)) .fetch_all(connection) .await + .and_then(|row| { + row.into_iter() + .map(|row| row.try_get::("database")) + .collect::>() + }) .context(format!( "Failed to get databases for user '{}'", unix_user.name ))?; - Ok(databases.into_iter().map(|d| d.database).collect()) + Ok(databases) } pub async fn get_databases_where_user_has_privileges(