moderatior
Diffstat (limited to 'src/db.rs')
-rw-r--r--src/db.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/db.rs b/src/db.rs
new file mode 100644
index 0000000..448ea6a
--- /dev/null
+++ b/src/db.rs
@@ -0,0 +1,41 @@
+// TODO pruning?
+use std::sync::LazyLock;
+
+use kv::*;
+
+fn cfg() -> kv::Config {
+ kv::Config {
+ path: "./db1".into(),
+ temporary: false,
+ use_compression: true,
+ flush_every_ms: None,
+ cache_capacity: None,
+ segment_size: None,
+ }
+}
+static DB: LazyLock<Store> = LazyLock::new(|| Store::new(cfg()).unwrap());
+static BU: LazyLock<Bucket<Integer, Bincode<(String, Vec<String>, u64)>>> =
+ LazyLock::new(|| DB.bucket(None).unwrap());
+
+pub fn set(k: u64, v: (String, Vec<String>, u64)) {
+ BU.set(&k.into(), &Bincode(v)).unwrap();
+}
+pub fn get(k: u64) -> Option<(String, Vec<String>, u64)> {
+ BU.get(&k.into()).unwrap().map(|x| x.0)
+}
+pub fn sz() -> f32 {
+ DB.size_on_disk().unwrap() as f32 / (1 << 20) as f32
+}
+pub fn set_m(m: poise::serenity_prelude::Message) {
+ set(
+ m.id.get(),
+ (
+ m.content,
+ m.attachments
+ .into_iter()
+ .map(|x| x.url)
+ .collect::<Vec<String>>(),
+ m.author.id.into(),
+ ),
+ )
+}