From c3163b60ab27606c04f808792cb3dbb55ab91a67 Mon Sep 17 00:00:00 2001 From: Mica White Date: Sun, 28 Sep 2025 16:33:44 -0400 Subject: Add the objects module --- src/object.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/object.rs (limited to 'src/object.rs') diff --git a/src/object.rs b/src/object.rs new file mode 100644 index 0000000..e303900 --- /dev/null +++ b/src/object.rs @@ -0,0 +1,29 @@ +use std::io::{Read, Write}; +use std::path::{Path, PathBuf}; + +use serde::de::DeserializeOwned; +use serde::Serialize; + +use crate::{FileInfo, Id, Patch}; + +fn object_path(pj_dir: impl AsRef, object: &impl Id, file_type: &str) -> PathBuf { + let id = object.id(); + Path::join(pj_dir.as_ref(), format!("objects/{id}.{file_type}")) +} + +pub fn file_info_object_path(pj_dir: impl AsRef, file: &FileInfo) -> PathBuf { + object_path(pj_dir, file, "file") +} + +pub fn patch_object_path(pj_dir: impl AsRef, patch: &Patch) -> PathBuf { + object_path(pj_dir, patch, "patch") +} + +pub fn write_object(writer: impl Write, object: &impl Serialize) -> std::io::Result<()> { + serde_json::to_writer_pretty(writer, &object)?; + Ok(()) +} + +pub fn read_object(reader: impl Read) -> serde_json::Result { + serde_json::from_reader(reader) +} -- cgit v1.2.3