aboutsummaryrefslogtreecommitdiffstats
path: root/filamento/src/db.rs
diff options
context:
space:
mode:
authorLibravatar cel 🌸 <cel@bunny.garden>2025-04-03 09:46:24 +0100
committerLibravatar cel 🌸 <cel@bunny.garden>2025-04-03 09:46:24 +0100
commit362a716150e40c4fb7a11a7487fb618a2cd25a4e (patch)
treef15ad2f6751180a96e8416fdaedea279be13ab68 /filamento/src/db.rs
parent9b18e40d8ba5f891e077daa039632f81d5fd2f86 (diff)
downloadluz-362a716150e40c4fb7a11a7487fb618a2cd25a4e.tar.gz
luz-362a716150e40c4fb7a11a7487fb618a2cd25a4e.tar.bz2
luz-362a716150e40c4fb7a11a7487fb618a2cd25a4e.zip
feat(filamento): caps 2.0 helper functions
Diffstat (limited to 'filamento/src/db.rs')
-rw-r--r--filamento/src/db.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/filamento/src/db.rs b/filamento/src/db.rs
index f92bfb2..c19f16c 100644
--- a/filamento/src/db.rs
+++ b/filamento/src/db.rs
@@ -1,5 +1,6 @@
use std::{collections::HashSet, path::Path};
+use chrono::Utc;
use jid::JID;
use sqlx::{SqlitePool, migrate};
use uuid::Uuid;
@@ -560,4 +561,29 @@ impl Db {
.await?;
Ok(())
}
+
+ pub(crate) async fn read_capabilities(&self, node: &str) -> Result<String, Error> {
+ #[derive(sqlx::FromRow)]
+ struct Row {
+ capabilities: String,
+ }
+ let row: Row =
+ sqlx::query_as("select capabilities from capability_hash_nodes where node = ?")
+ .bind(node)
+ .fetch_one(&self.db)
+ .await?;
+ Ok(row.capabilities)
+ }
+
+ pub(crate) async fn upsert_capabilities(
+ &self,
+ node: &str,
+ capabilities: &str,
+ ) -> Result<(), Error> {
+ let now = Utc::now();
+ sqlx::query!(
+ "insert into capability_hash_nodes (node, timestamp, capabilities) values (?, ?, ?) on conflict do update set timestamp = ?, capabilities = ?", node, now, capabilities, now, capabilities
+ ).execute(&self.db).await?;
+ Ok(())
+ }
}