use bson::{Document};
use tonic::Status;
use prost::Message;
use serde::Serialize;
pub fn pb_to_bson<T: Message + Serialize>(message: T) -> Result<Document, Status> {
let bson_value = bson::to_bson(&message).map_err(|e| Status::invalid_argument(e.to_string()))?;
let doc = match bson_value.as_document() {
Some(doc) => doc,
None => {
return Err(Status::invalid_argument("Protobuf message must be able to parse into a BSON Document"));
}
};
Ok(doc.clone())
}