From b231e12664a1f95c9ad05cf9ca731b180b9bc4f9 Mon Sep 17 00:00:00 2001 From: xy Date: Thu, 26 Sep 2024 16:52:54 +0900 Subject: [PATCH] remove unnecessary func --- .../src/persistence/project_repository.rs | 67 ++----------------- websocket/crates/services/src/lib.rs | 6 +- .../src/manage_project_edit_session.rs | 3 +- websocket/crates/services/src/snapshot.rs | 28 +++++++- 4 files changed, 36 insertions(+), 68 deletions(-) diff --git a/websocket/crates/infra/src/persistence/project_repository.rs b/websocket/crates/infra/src/persistence/project_repository.rs index e03f793ec..d2134dd80 100644 --- a/websocket/crates/infra/src/persistence/project_repository.rs +++ b/websocket/crates/infra/src/persistence/project_repository.rs @@ -122,40 +122,12 @@ impl ProjectSnapshotRepository for ProjectGcsRepository &self, snapshot: ProjectSnapshot, ) -> Result<(), ProjectRepositoryError> { - let snapshot_metadata = serde_json::to_vec(&snapshot.metadata)?; - - // Upload the serialized data to GCS, overwriting the existing file - let path = format!("snapshot/{}", snapshot.metadata.project_id); - self.client.upload(path.clone(), &snapshot_metadata).await?; - - // Update the latest snapshot reference - let latest_path = format!("snapshot/{}:latest_snapshot", snapshot.metadata.project_id); - self.client.upload(latest_path, &snapshot).await?; - - //Get the latest snapshot state - let latest_snapshot_state_path = format!( - "snapshot/{}:latest_snapshot_state", - snapshot.metadata.project_id - ); - - let latest_snapshot_state: Vec = self - .client - .download(latest_snapshot_state_path.clone()) - .await?; - - // Update the latest snapshot state - let mut latest_snapshot_state: SnapshotInfo = - serde_json::from_slice(&latest_snapshot_state)?; - latest_snapshot_state.updated_at = Some(Utc::now()); - latest_snapshot_state - .changes_by - .push(snapshot.info.created_by.unwrap_or_default()); - - self.client - .upload(latest_snapshot_state_path, &latest_snapshot_state) - .await?; - - Ok(()) + // Implementation details would depend on your storage solution + // For example, with GCS, you might: + // 1. Serialize the snapshot + // 2. Upload the serialized data to GCS, overwriting the existing file + // 3. Update any metadata as necessary + unimplemented!("update_snapshot needs to be implemented") } } @@ -282,33 +254,6 @@ mod tests { Ok((temp_dir, repo)) } - #[test] - async fn test_get_project_non_existent() -> Result<(), Box> { - let (_temp_dir, repo) = setup().await?; - let project_id = "non_existent_project"; - assert!(repo.get_project(project_id).await?.is_none()); - Ok(()) - } - - #[test] - async fn test_get_project_existing() -> Result<(), Box> { - let (_temp_dir, repo) = setup().await?; - let project_id = "test_project"; - let project = Project { - id: project_id.to_string(), - workspace_id: "test_workspace".to_string(), - }; - - repo.client - .upload(format!("projects/{}", project_id), &project, true) - .await?; - - let retrieved_project = repo.get_project(project_id).await?.unwrap(); - assert_eq!(retrieved_project.id, project.id); - assert_eq!(retrieved_project.workspace_id, project.workspace_id); - Ok(()) - } - fn create_test_snapshot(project_id: &str) -> ProjectSnapshot { let now = Utc::now(); diff --git a/websocket/crates/services/src/lib.rs b/websocket/crates/services/src/lib.rs index 0ee724c24..6e549a86a 100644 --- a/websocket/crates/services/src/lib.rs +++ b/websocket/crates/services/src/lib.rs @@ -1,3 +1,3 @@ -// pub mod project; -// pub mod snapshot; -// pub mod manage_project_edit_session; +pub mod manage_project_edit_session; +pub mod project; +pub mod snapshot; diff --git a/websocket/crates/services/src/manage_project_edit_session.rs b/websocket/crates/services/src/manage_project_edit_session.rs index fddbeb276..5c1c75410 100644 --- a/websocket/crates/services/src/manage_project_edit_session.rs +++ b/websocket/crates/services/src/manage_project_edit_session.rs @@ -3,6 +3,7 @@ use flow_websocket_domain::project::ProjectEditingSession; use flow_websocket_domain::repository::{ ProjectEditingSessionRepository, ProjectSnapshotRepository, }; +use flow_websocket_domain::snapshot::Metadata; use std::error::Error; use std::sync::Arc; use tokio::time::sleep; @@ -94,7 +95,7 @@ impl ManageEditSessionService { if snapshot_time_delta > MAX_SNAPSHOT_DELTA { let (state, _) = session.get_state_update().await?; - let metadata = ProjectMetadata::new( + let metadata = Metadata::new( generate_id(14, "snap"), session.project_id.clone(), Some(session.session_id.clone()), diff --git a/websocket/crates/services/src/snapshot.rs b/websocket/crates/services/src/snapshot.rs index 4aa26f142..bc5dad8cb 100644 --- a/websocket/crates/services/src/snapshot.rs +++ b/websocket/crates/services/src/snapshot.rs @@ -2,7 +2,7 @@ use async_trait::async_trait; use chrono::Utc; use flow_websocket_domain::repository::ProjectSnapshotRepository; use flow_websocket_domain::snapshot::{ - ObjectDelete, ObjectTenant, ProjectMetadata, ProjectSnapshot, + Metadata, ObjectDelete, ObjectTenant, ProjectSnapshot, SnapshotInfo, }; use std::error::Error; use std::sync::Arc; @@ -26,7 +26,7 @@ impl SnapshotService { let snapshot_id = Uuid::new_v4().to_string(); let now = Utc::now(); - let metadata = ProjectMetadata::new( + let metadata = Metadata::new( snapshot_id.clone(), data.project_id.clone(), data.session_id, @@ -34,7 +34,7 @@ impl SnapshotService { String::new(), ); - let state = SnapshotState::new( + let state = SnapshotInfo::new( data.created_by, data.changes_by, data.tenant, @@ -109,3 +109,25 @@ pub struct CreateSnapshotData { pub tenant: ObjectTenant, pub state: Vec, } + +impl CreateSnapshotData { + pub fn new( + project_id: String, + session_id: Option, + name: Option, + created_by: Option, + changes_by: Vec, + tenant: ObjectTenant, + state: Vec, + ) -> Self { + Self { + project_id, + session_id, + name, + created_by, + changes_by, + tenant, + state, + } + } +}