1use omry_archiving::{Record, RecordMeta, RecordParams};
3use omry_common::RecordId;
4use omry_search::SearchResponse;
5use serde::{Deserialize, Serialize};
6use std::sync::Arc;
7
8use crate::search_wrappers::SearchParametersWrapper;
9
10#[allow(missing_docs)]
12#[derive(Debug, Serialize, Deserialize)]
13pub enum ResponseStatus {
14 Ok,
15 Error,
16}
17
18pub type FloraError = String;
20
21pub type OmryResult<T> = Result<T, FloraError>;
23
24pub type RecordIds = Vec<RecordId>;
26
27pub const PONG: &str = "pong 🌱";
29
30pub const VERSION: &str = env!("CARGO_PKG_VERSION");
32
33#[allow(missing_docs)]
35#[tarpc::service]
36pub trait FloraService {
37 async fn ping() -> String;
41
42 async fn add_record(record_params: RecordParams) -> OmryResult<RecordId>;
44
45 async fn add_many_records(records: Vec<RecordParams>) -> OmryResult<RecordIds>;
47
48 async fn count() -> OmryResult<i64>;
50
51 async fn get_records(record_ids: RecordIds) -> OmryResult<Arc<Vec<Record>>>;
53
54 async fn get_all_records() -> OmryResult<Arc<Vec<Record>>>;
56
57 async fn get_all_records_meta() -> OmryResult<Vec<RecordMeta>>;
60
61 async fn delete_record(record_id: RecordId) -> OmryResult<usize>;
63
64 async fn search(search_params: SearchParametersWrapper) -> OmryResult<SearchResponse>;
66
67 async fn version() -> OmryResult<String>;
69}