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)
}
}