From 6e815a94a070ae572ab68297f13fefd2178e2104 Mon Sep 17 00:00:00 2001 From: Greg Shuflin Date: Tue, 4 Feb 2025 01:01:02 -0800 Subject: [PATCH] Genericize Feed::write_to_db --- src/feeds.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/feeds.rs b/src/feeds.rs index 012509d..4dda05f 100644 --- a/src/feeds.rs +++ b/src/feeds.rs @@ -4,6 +4,7 @@ use rocket_db_pools::Connection; use sqlx::types::JsonValue; use url::Url; use uuid::Uuid; +use sqlx::Executor; use crate::feed_utils::fetch_feed; use crate::user::AuthenticatedUser; @@ -35,7 +36,10 @@ impl Feed { } } - pub async fn write_to_database(&self, mut db: Connection) -> Result<(), sqlx::Error> { + pub async fn write_to_database<'a, E>(&self, executor: E) -> sqlx::Result<()> + where + E: Executor<'a, Database = sqlx::Sqlite> + { // Convert categorization to JSON value let categorization_json = serde::json::to_value(&self.categorization).map_err(|e| { eprintln!("Failed to serialize categorization: {}", e); @@ -53,7 +57,7 @@ impl Feed { .bind(self.added_time.to_rfc3339()) .bind(self.last_checked_time.to_rfc3339()) .bind(categorization_json.to_string()) - .execute(&mut **db) + .execute(executor) .await?; Ok(()) @@ -70,7 +74,7 @@ pub struct NewFeed { #[post("/feeds", data = "")] pub async fn create_feed( - db: Connection, + mut db: Connection, new_feed: Json, user: AuthenticatedUser, ) -> Result, Status> { @@ -97,7 +101,7 @@ pub async fn create_feed( let mut feed = Feed::new(name, new_feed.url, user.user_id); feed.categorization = new_feed.categorization; - match feed.write_to_database(db).await { + match feed.write_to_database(&mut **db).await { Ok(_) => Ok(Json(feed)), Err(e) => { eprintln!("Database error: {}", e);