From 817c997d4a9da6df929c43813eee250703a6a669 Mon Sep 17 00:00:00 2001 From: realaravinth Date: Tue, 2 Nov 2021 15:47:55 +0530 Subject: [PATCH] read cache path from config file --- config/default.toml | 1 + src/data.rs | 7 ++++++- src/settings.rs | 10 +++++++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/config/default.toml b/config/default.toml index cc5aff7..3fa3f0d 100644 --- a/config/default.toml +++ b/config/default.toml @@ -1,5 +1,6 @@ debug = true source_code = "https://github.com/realaravinth/libmedium" +cache = "/var/lib/libmedium" [server] # The port at which you want authentication to listen to diff --git a/src/data.rs b/src/data.rs index 83dcc27..251caa6 100644 --- a/src/data.rs +++ b/src/data.rs @@ -14,11 +14,15 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ +use std::path::Path; + use actix_web::web; use graphql_client::{reqwest::post_graphql, GraphQLQuery}; use reqwest::Client; use sled::{Db, Tree}; +use crate::SETTINGS; + #[derive(Clone)] pub struct Data { pub client: Client, @@ -40,7 +44,8 @@ pub type AppData = web::Data; impl Data { pub fn new() -> AppData { - let cache = sled::open("posts_cache").unwrap(); + let path = Path::new(&SETTINGS.cache).join("posts_cache"); + let cache = sled::open(path).unwrap(); let posts = cache.open_tree("posts").unwrap(); AppData::new(Self { client: Client::new(), diff --git a/src/settings.rs b/src/settings.rs index 1334d92..6de0e11 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -15,6 +15,7 @@ * along with this program. If not, see . */ use std::env; +use std::fs; use std::path::Path; use config::{Config, ConfigError, Environment, File}; @@ -41,7 +42,7 @@ impl Server { #[derive(Debug, Clone, Deserialize)] pub struct Settings { pub debug: bool, - // pub database: Database, + pub cache: String, pub server: Server, pub source_code: String, } @@ -83,6 +84,13 @@ impl Settings { let settings: Settings = s.try_into()?; + let cache_path = Path::new(&settings.cache); + if !cache_path.exists() { + fs::create_dir(&cache_path).unwrap(); + } + if !cache_path.is_dir() { + panic!("Cache path {} must be a directory", &settings.cache); + } Ok(settings) } }