use diesel::prelude::*;
use crate::node_id::store::{diesel::NodeID, NodeIdStoreError};
use super::NodeIdOperations;
pub trait NodeIdGetOperation {
fn get_node_id(&self) -> Result<Option<String>, NodeIdStoreError>;
}
impl<'a, C> NodeIdGetOperation for NodeIdOperations<'a, C>
where
C: diesel::Connection,
String: diesel::deserialize::FromSql<diesel::sql_types::Text, C::Backend>,
{
fn get_node_id(&self) -> Result<Option<String>, NodeIdStoreError> {
use crate::node_id::store::diesel::schema::node_id::dsl::*;
let result = node_id.first::<NodeID>(self.connection);
match result {
Ok(s) => Ok(Some(s.id)),
Err(diesel::result::Error::NotFound) => Ok(None),
Err(err) => Err(err.into()),
}
}
}