Skip to main content

auric_runtime/data/
adapter.rs

1use super::QueryRecordOptions;
2use crate::Config;
3use anyhow::Result;
4use async_trait::async_trait;
5use jsonapi_core::Resource;
6
7#[async_trait(?Send)]
8pub trait Adapter {
9    // Initialize the adapter
10    fn init(&mut self, config: &Config) -> Result<()>;
11
12    // Create a new record
13    async fn create_record(&self, resource: Resource) -> Result<Resource>;
14
15    // Delete a record
16    async fn delete_record(&self, resource: &Resource) -> Result<()>;
17
18    // Find a record
19    async fn find_record(&self, resource_type: &str, id: &str) -> Result<Resource>;
20
21    // Query for multiple records
22    async fn query(&self, resource_type: &str, query: serde_json::Value) -> Result<Vec<Resource>>;
23
24    // Query for a record
25    async fn query_record(
26        &self,
27        resource_type: &str,
28        query: serde_json::Value,
29        options: QueryRecordOptions,
30    ) -> Result<Option<Resource>>;
31
32    // Update a record
33    async fn update_record(&self, resource: Resource) -> Result<Resource>;
34}
35
36#[cfg(test)]
37mod tests {
38    #[test]
39    fn can_todo() {
40        // ...
41    }
42}