mod convert;
use crate::rpc::format::ResTrait;
use crate::rpc::RpcError;
pub use convert::Pack;
use crate::rpc::request::Request;
use crate::sql::Value;
pub fn req(val: Vec<u8>) -> Result<Request, RpcError> {
rmpv::decode::read_value(&mut val.as_slice())
.map_err(|_| RpcError::ParseError)
.map(Pack)?
.try_into()
}
pub fn res(res: impl ResTrait) -> Result<Vec<u8>, RpcError> {
let val: Value = res.into();
let val: Pack = val.try_into()?;
let mut res = Vec::new();
rmpv::encode::write_value(&mut res, &val.0).unwrap();
Ok(res)
}