aboutsummaryrefslogtreecommitdiff
path: root/base/src/database.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-10-25 12:21:27 +0200
committermetamuffin <metamuffin@disroot.org>2023-10-25 12:21:27 +0200
commita491792196c034efbd2f8998944af3f7958c0e52 (patch)
treea295342aef8cd38e32b05af273ff305b7f2a5cc5 /base/src/database.rs
parent5aa2a6fa5a6f8daf3ed4d86082658027a44f83c8 (diff)
parent8fc2d47f1f6cde93554ba096b959b3bef3652ac1 (diff)
downloadjellything-a491792196c034efbd2f8998944af3f7958c0e52.tar
jellything-a491792196c034efbd2f8998944af3f7958c0e52.tar.bz2
jellything-a491792196c034efbd2f8998944af3f7958c0e52.tar.zst
Merge branch 'master' of codeberg.org:metamuffin/jellything
Diffstat (limited to 'base/src/database.rs')
-rw-r--r--base/src/database.rs37
1 files changed, 37 insertions, 0 deletions
diff --git a/base/src/database.rs b/base/src/database.rs
new file mode 100644
index 0000000..739d292
--- /dev/null
+++ b/base/src/database.rs
@@ -0,0 +1,37 @@
+/*
+ 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 <metamuffin.org>
+*/
+use anyhow::Context;
+use jellycommon::{user::User, Node};
+use log::info;
+use std::path::Path;
+use typed_sled::Tree;
+
+pub use sled;
+pub use typed_sled;
+
+pub struct Database {
+ pub db: sled::Db,
+
+ pub user: Tree<String, User>,
+ pub invite: Tree<String, ()>,
+ pub node: Tree<String, Node>,
+}
+
+impl Database {
+ pub fn open(path: &Path) -> Result<Self, anyhow::Error> {
+ 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
+ }
+}