firebase_rs_sdk/firestore/remote/datastore/
mod.rs

1use std::sync::Arc;
2
3use crate::firestore::api::query::QueryDefinition;
4use crate::firestore::api::DocumentSnapshot;
5use crate::firestore::error::FirestoreResult;
6use crate::firestore::model::DocumentKey;
7use crate::firestore::value::MapValue;
8
9pub mod http;
10pub mod in_memory;
11
12pub trait Datastore: Send + Sync + 'static {
13    fn get_document(&self, key: &DocumentKey) -> FirestoreResult<DocumentSnapshot>;
14    fn set_document(&self, key: &DocumentKey, data: MapValue, merge: bool) -> FirestoreResult<()>;
15    fn run_query(&self, query: &QueryDefinition) -> FirestoreResult<Vec<DocumentSnapshot>>;
16}
17
18pub trait TokenProvider: Send + Sync + 'static {
19    fn get_token(&self) -> FirestoreResult<Option<String>>;
20    fn invalidate_token(&self);
21}
22
23#[derive(Default, Clone)]
24pub struct NoopTokenProvider;
25
26impl TokenProvider for NoopTokenProvider {
27    fn get_token(&self) -> FirestoreResult<Option<String>> {
28        Ok(None)
29    }
30
31    fn invalidate_token(&self) {}
32}
33
34pub type TokenProviderArc = Arc<dyn TokenProvider>;
35
36pub use http::{HttpDatastore, RetrySettings};
37pub use in_memory::InMemoryDatastore;