From 66cf414350cf8872bfe7153f73eb4ca84f23bef4 Mon Sep 17 00:00:00 2001 From: Akulij Date: Thu, 3 Apr 2025 23:15:42 +0900 Subject: [PATCH] create get/set literal function --- src/db.rs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/db.rs b/src/db.rs index 3d0ed6b..03b09bc 100644 --- a/src/db.rs +++ b/src/db.rs @@ -135,4 +135,38 @@ impl DB { Ok(()) } + + async fn get_literal(&mut self, literal: &str) -> Result, Box> { + use self::schema::literals::dsl::*; + let conn = &mut self.pool.get().await.unwrap(); + + let literal = literals + .filter(token.eq(literal)) + .first::(conn) + .await + .optional()?; + + Ok(literal) + } + + async fn get_literal_value(&mut self, literal: &str) -> Result, Box> { + let literal = self.get_literal(literal).await?; + + Ok(literal.map(|l| l.value)) + } + + async fn set_literal(&mut self, literal: &str, valuestr: &str) -> Result<(), Box> { + use self::schema::literals::dsl::*; + let conn = &mut self.pool.get().await.unwrap(); + + diesel::insert_into(literals) + .values((token.eq(literal), value.eq(valuestr))) + .on_conflict(token) + .do_update() + .set(value.eq(valuestr)) + .execute(conn) + .await?; + + Ok(()) + } }