pbbson 0.1.1

Utilities for pbjson to BSON conversion
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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())
}