From 128cc42557c8d7da46c63a40ea4469ed0eb7f26d Mon Sep 17 00:00:00 2001 From: tempest Date: Sun, 13 Apr 2025 16:40:05 -0600 Subject: Compiles, cannot find data context --- src/data/content.rs | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'src/data/content.rs') diff --git a/src/data/content.rs b/src/data/content.rs index a628be0..4a39967 100644 --- a/src/data/content.rs +++ b/src/data/content.rs @@ -1,24 +1,31 @@ +#[cfg(feature="ssr")] use std::fs::File; use std::collections::HashMap; +#[cfg(feature="ssr")] use std::io::{BufRead, BufReader}; use std::path::{PathBuf, Path}; use std::sync::Arc; +#[cfg(feature="ssr")] use tokio::sync::RwLock; use chrono::{DateTime, Utc}; use leptos::prelude::StorageAccess; use serde::Deserialize; use uuid::Uuid; +#[cfg(feature="ssr")] use fs2::FileExt; +#[cfg(feature="ssr")] use tokio::runtime; +#[cfg(feature="ssr")] use tokio_stream::wrappers::ReadDirStream; +#[cfg(feature="ssr")] use futures::stream::StreamExt; #[derive(Hash, PartialEq, Eq, Clone)] -struct PageUuid(Uuid); +pub struct PageUuid(Uuid); #[derive(Hash, PartialEq, Eq, Clone)] -struct NamespaceUuid(Uuid); +pub struct NamespaceUuid(Uuid); #[derive(Hash, PartialEq, Eq, Clone)] -struct MediaUuid(Uuid); +pub struct MediaUuid(Uuid); pub struct ContentSnapshot { pub pages: HashMap, @@ -58,6 +65,7 @@ struct Media { used_on: Vec, } +#[cfg(feature="ssr")] #[derive(Clone)] pub struct ContentController { snapshot: Arc>>>, @@ -66,7 +74,7 @@ pub struct ContentController { #[cfg(feature = "ssr")] impl ContentController { - pub fn init(data_dir: PathBuf) -> Result { + pub async fn init(data_dir: PathBuf) -> Result { let lock_path = Path::join(&data_dir, ".lock"); let lockfile = std::fs::OpenOptions::new() .read(true).write(true).create(true) @@ -76,12 +84,8 @@ impl ContentController { lockfile.try_lock_exclusive() .map_err(|_| "Could not lock data directory".to_string())?; - let runtime = runtime::Builder::new_multi_thread() - .build() - .map_err(|_| "Could not start async runtime".to_string())?; - // Read the things - let snapshot = runtime.block_on(Self::read_data(&data_dir))?; + let snapshot = Self::read_data(&data_dir).await?; Ok(Self { lock: Arc::new(lockfile), @@ -153,7 +157,7 @@ impl ContentController { }) .unzip(); - let pages_dir = Path::join(&data_dir, "pages/id"); + let pages_dir = Path::join(&data_dir, "pages"); let pages = fs::read_dir(&pages_dir).await .map_err(|_| "Could not open pages data directory".to_string()) .map(|dir_entries| { ReadDirStream::new(dir_entries) })? @@ -205,6 +209,7 @@ impl ContentController { const METADATA_DIVIDER : &'static str = ""; +#[cfg(feature = "ssr")] impl Page { async fn init_from_file(path: &PathBuf, pagedata_cache: &HashMap::) -> Option { let mut reader = BufReader::new(File::open(path).ok()?); -- cgit 1.4.1