firebase_rs_sdk/firestore/api/
converter.rs1use std::collections::BTreeMap;
2
3use crate::firestore::error::FirestoreResult;
4use crate::firestore::value::{FirestoreValue, MapValue};
5
6pub trait FirestoreDataConverter: Send + Sync + Clone + 'static {
12 type Model: Clone;
14
15 fn to_map(&self, value: &Self::Model) -> FirestoreResult<BTreeMap<String, FirestoreValue>>;
17
18 fn from_map(&self, value: &MapValue) -> FirestoreResult<Self::Model>;
20}
21
22#[derive(Clone, Default)]
24pub struct PassthroughConverter;
25
26impl FirestoreDataConverter for PassthroughConverter {
27 type Model = BTreeMap<String, FirestoreValue>;
28
29 fn to_map(&self, value: &Self::Model) -> FirestoreResult<BTreeMap<String, FirestoreValue>> {
30 Ok(value.clone())
31 }
32
33 fn from_map(&self, value: &MapValue) -> FirestoreResult<Self::Model> {
34 Ok(value.fields().clone())
35 }
36}