From d7031544feae5bb618aa9415c58f862356c0be4a Mon Sep 17 00:00:00 2001 From: Horhik Date: Sat, 13 Mar 2021 11:23:40 +0300 Subject: [PATCH] impl some sqlite types for SSK type --- Cargo.toml | 1 + src/types/mod.rs | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) 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,