diff options
author | 2025-04-03 09:46:24 +0100 | |
---|---|---|
committer | 2025-04-03 09:46:24 +0100 | |
commit | 362a716150e40c4fb7a11a7487fb618a2cd25a4e (patch) | |
tree | f15ad2f6751180a96e8416fdaedea279be13ab68 /filamento/src/db.rs | |
parent | 9b18e40d8ba5f891e077daa039632f81d5fd2f86 (diff) | |
download | luz-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.rs | 26 |
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(()) + } } |