Skip to main content

auric_runtime/data/
adapter.rs

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