diff --git a/Cargo.toml b/Cargo.toml index 83f8f2d..7fe5528 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,3 +12,4 @@ description = "Implementation of FCPv2 freenet protocol" [dependencies] regex = "1.4.3" +rusqlite = "0.24.2" diff --git a/src/types/mod.rs b/src/types/mod.rs index 8bad93a..252dd90 100644 --- a/src/types/mod.rs +++ b/src/types/mod.rs @@ -2,18 +2,39 @@ pub mod traits; use regex::Regex; use traits::*; +use rusqlite::types::ToSqlOutput; +use rusqlite::{Result, ToSql, types::{FromSql, ValueRef, FromSqlResult, FromSqlError}}; + #[derive(Debug, PartialEq)] pub struct SSK { pub sign_key: String, pub decrypt_key: String, pub settings: Option, } + +impl ToSql for SSK { + fn to_sql(&self) -> Result> { + Ok(ToSqlOutput::from(self.convert())) + } +} + +impl FromSql for SSK{ + fn column_result(value: ValueRef<'_>) -> FromSqlResult{ + match SSK::parse(value.as_str()?) { + Some(res) => Ok(res), + None => Err(FromSqlError::InvalidType) + } + } +} + #[derive(Debug, PartialEq)] pub struct USK { pub ssk: SSK, pub index: i32, } + + #[derive(Debug, PartialEq)] pub struct SSKKeypair { pub insert_uri: SSK,