From cc2fed3297b05a235422a73a00dd943ac011ec9a Mon Sep 17 00:00:00 2001 From: PThorpe92 Date: Thu, 14 Aug 2025 13:18:17 -0400 Subject: [PATCH] Remove copy_to API from file IO trait --- bindings/javascript/src/lib.rs | 8 ------- core/io/mod.rs | 38 ---------------------------------- core/storage/database.rs | 6 ------ 3 files changed, 52 deletions(-) diff --git a/bindings/javascript/src/lib.rs b/bindings/javascript/src/lib.rs index d55da2e61..7e7aa1ef8 100644 --- a/bindings/javascript/src/lib.rs +++ b/bindings/javascript/src/lib.rs @@ -530,12 +530,4 @@ impl turso_core::DatabaseStorage for DatabaseFile { let c = self.file.truncate(len, c)?; Ok(c) } - fn copy_to( - &self, - src_io: &dyn turso_core::IO, - dest_io: &dyn turso_core::IO, - path: &str, - ) -> turso_core::Result<()> { - self.file.copy_to(src_io, dest_io, path) - } } diff --git a/core/io/mod.rs b/core/io/mod.rs index 19933b48f..ef75a1b6e 100644 --- a/core/io/mod.rs +++ b/core/io/mod.rs @@ -58,44 +58,6 @@ pub trait File: Send + Sync { } fn size(&self) -> Result; fn truncate(&self, len: usize, c: Completion) -> Result; - fn copy_to(&self, src_io: &dyn IO, dest_io: &dyn IO, path: &str) -> Result<()> { - // Open or create the destination file - let dest_file = dest_io.open_file(path, OpenFlags::Create, false)?; - // Get the size of the source file - let file_size = self.size()? as usize; - if file_size == 0 { - return Ok(()); - } - - // use 1MB chunk size - const BUFFER_SIZE: usize = 1024 * 1024; - let mut pos = 0; - - while pos < file_size { - let chunk_size = (file_size - pos).min(BUFFER_SIZE); - // Read from source - let read_buffer = Arc::new(Buffer::new_temporary(chunk_size)); - let read_completion = self.pread( - pos, - Completion::new_read(read_buffer.clone(), move |_, _| {}), - )?; - - // Wait for read to complete - src_io.wait_for_completion(read_completion)?; - - // Write to destination - let write_completion = - dest_file.pwrite(pos, read_buffer, Completion::new_write(|_| {}))?; - dest_io.wait_for_completion(write_completion)?; - - pos += chunk_size; - } - let sync_completion = dest_file.sync(Completion::new_sync(|_| {}))?; - - dest_io.wait_for_completion(sync_completion)?; - - Ok(()) - } } #[derive(Debug, Copy, Clone, PartialEq)] diff --git a/core/storage/database.rs b/core/storage/database.rs index 97098c4aa..d7f4cf552 100644 --- a/core/storage/database.rs +++ b/core/storage/database.rs @@ -23,7 +23,6 @@ pub trait DatabaseStorage: Send + Sync { fn sync(&self, c: Completion) -> Result; fn size(&self) -> Result; fn truncate(&self, len: usize, c: Completion) -> Result; - fn copy_to(&self, src_io: &dyn crate::IO, dest_io: &dyn crate::IO, path: &str) -> Result<()>; } #[cfg(feature = "fs")] @@ -101,11 +100,6 @@ impl DatabaseStorage for DatabaseFile { let c = self.file.truncate(len, c)?; Ok(c) } - - #[instrument(skip_all, level = Level::INFO)] - fn copy_to(&self, src_io: &dyn crate::IO, dest_io: &dyn crate::IO, path: &str) -> Result<()> { - self.file.copy_to(src_io, dest_io, path) - } } #[cfg(feature = "fs")]