From 2fc5931a6ce9bbb75757c4a20022b19778bd91c5 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 24 Oct 2023 19:22:01 +0200 Subject: move db to jellybase --- base/src/database.rs | 36 ++++++++++++++++++++++++++++++++++++ base/src/lib.rs | 1 + 2 files changed, 37 insertions(+) create mode 100644 base/src/database.rs (limited to 'base/src') diff --git a/base/src/database.rs b/base/src/database.rs new file mode 100644 index 0000000..b8ba28e --- /dev/null +++ b/base/src/database.rs @@ -0,0 +1,36 @@ +/* + This file is part of jellything (https://codeberg.org/metamuffin/jellything) + which is licensed under the GNU Affero General Public License (version 3); see /COPYING. + Copyright (C) 2023 metamuffin +*/ +use anyhow::Context; +use jellycommon::{user::User, Node}; +use log::info; +use std::path::Path; +use typed_sled::Tree; + +pub use sled; + +pub struct Database { + pub db: sled::Db, + + pub user: Tree, + pub invite: Tree, + pub node: Tree, +} + +impl Database { + pub fn open(path: &Path) -> Result { + info!("opening database… (might take up to O(n) time)"); + let db = sled::open(path).context("opening database")?; + info!("creating trees"); + let r = Ok(Self { + user: Tree::open(&db, "user"), + invite: Tree::open(&db, "invite"), + node: Tree::open(&db, "node"), + db, + }); + info!("ready"); + r + } +} diff --git a/base/src/lib.rs b/base/src/lib.rs index 132fd45..5d96b1a 100644 --- a/base/src/lib.rs +++ b/base/src/lib.rs @@ -7,6 +7,7 @@ pub mod cache; pub mod permission; pub mod temp; +pub mod database; use jellycommon::{config::GlobalConfig, AssetLocation}; use std::{fs::File, path::PathBuf, sync::LazyLock}; -- cgit v1.2.3-70-g09d2