From 12567a6b9745ebd28ab21e281949b68aa64a5e1e Mon Sep 17 00:00:00 2001 From: Akulij Date: Sun, 4 May 2025 17:56:06 +0300 Subject: [PATCH] create LiteralAlternative with get/set in db --- src/db/mod.rs | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/src/db/mod.rs b/src/db/mod.rs index 076b7be..8fb2d38 100644 --- a/src/db/mod.rs +++ b/src/db/mod.rs @@ -112,6 +112,14 @@ pub struct Literal { pub value: String, } +#[derive(Serialize, Deserialize)] +pub struct LiteralAlternative { + pub _id: bson::oid::ObjectId, + pub token: String, + pub variant: String, + pub value: String, +} + #[derive(Serialize, Deserialize)] pub struct Event { pub _id: bson::oid::ObjectId, @@ -321,6 +329,51 @@ pub trait CallDB { Ok(()) } + async fn get_literal_alternative( + &mut self, + literal: &str, + variant: &str, + ) -> DbResult> { + let db = self.get_database().await; + let messages = db.collection::("literal_alternatives"); + + let literal = messages + .find_one(doc! { "token": literal, "variant": variant }) + .await?; + + Ok(literal) + } + + async fn get_literal_alternative_value( + &mut self, + literal: &str, + variant: &str, + ) -> DbResult> { + let literal = self.get_literal_alternative(literal, variant).await?; + + Ok(literal.map(|l| l.value)) + } + + async fn set_literal_alternative( + &mut self, + literal: &str, + variant: &str, + valuestr: &str, + ) -> DbResult<()> { + let db = self.get_database().await; + let literals = db.collection::("literal_alternatives"); + + literals + .update_one( + doc! { "token": literal, "variant": variant }, + doc! { "$set": { "value": valuestr } }, + ) + .upsert(true) + .await?; + + Ok(()) + } + async fn get_all_events(&mut self) -> DbResult> { let db = self.get_database().await; let events = db.collection::("events");