From 362a716150e40c4fb7a11a7487fb618a2cd25a4e Mon Sep 17 00:00:00 2001 From: cel 🌸 Date: Thu, 3 Apr 2025 09:46:24 +0100 Subject: feat(filamento): caps 2.0 helper functions --- filamento/src/db.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'filamento/src/db.rs') 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 { + #[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(()) + } } -- cgit