From 1fded17390b1c893120e9d648ce55f0eb46c874d Mon Sep 17 00:00:00 2001 From: afterlifepro Date: Fri, 14 Nov 2025 15:26:41 +0000 Subject: [PATCH] resolve did to pds --- Cargo.lock | 1 + Cargo.toml | 1 + src/db.rs | 1 - src/main.rs | 13 +++++++++---- src/resolver.rs | 21 +++++++++++++++++++++ 5 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 src/resolver.rs diff --git a/Cargo.lock b/Cargo.lock index 4572ce0..bede356 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1541,6 +1541,7 @@ version = "0.1.0" dependencies = [ "jacquard", "sqlx", + "thiserror 2.0.17", "tokio", ] diff --git a/Cargo.toml b/Cargo.toml index 14b6c81..5f85e80 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,4 +6,5 @@ edition = "2024" [dependencies] jacquard = "0.9.0" sqlx = { version = "0.8.6", features = ["runtime-tokio", "postgres"] } +thiserror = "2.0.17" tokio = "1.48.0" diff --git a/src/db.rs b/src/db.rs index f47ad47..f580736 100644 --- a/src/db.rs +++ b/src/db.rs @@ -10,7 +10,6 @@ pub async fn init() -> Pool { panic!() } }; - println!("Connected to db with pool: {:?}", conn); // initialise db tables if let Err(err) = query!( diff --git a/src/main.rs b/src/main.rs index 593577a..20a5e80 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,12 +1,17 @@ mod config; mod db; +mod resolver; #[tokio::main] async fn main() { - println!("Indexing {}", *config::USER); + println!("User: {}", *config::USER); let conn = db::init().await; - println!("Database established"); + println!("Database connected and initialized"); - // to stop docker whinging - loop {} + let pds = match resolver::resolve(&config::USER).await { + Ok(val) => val, + Err(err) => panic!("{}", err), + }; + + println!("PDS: {}", pds); } diff --git a/src/resolver.rs b/src/resolver.rs new file mode 100644 index 0000000..d68adeb --- /dev/null +++ b/src/resolver.rs @@ -0,0 +1,21 @@ +use jacquard::prelude::IdentityResolver; +use jacquard::types::did::Did; +use thiserror::Error; + +#[derive(Debug, Error)] +pub enum ResolveError { + #[error("Identity error: {}", .0)] + IdentityError(#[from] jacquard::identity::resolver::IdentityError), + #[error("Missing domain")] + MissingDomain, +} + +pub async fn resolve(did: &Did<'_>) -> Result { + // resolve did to pds + let resolver = jacquard::identity::PublicResolver::default(); + let pds = resolver.pds_for_did(did).await?; + let Some(pds) = pds.domain() else { + return Err(ResolveError::MissingDomain); + }; + Ok(String::from(pds)) +} -- 2.51.2