Skip to main content

dactyl_db/adapter/
mod.rs

1//! Private backend adapters.
2
3use crate::contract::{AccessMode, AtomicResult, Operation, WriteResult};
4use crate::error::{AdapterErrorKind, DactylError};
5use crate::rows::{Parameter, Rows};
6use crate::schema::StoreSchema;
7
8/// The small operation seam Dactyl needs from each backend.
9pub trait Adapter {
10    fn read(&self, sql: &str, params: &[Parameter]) -> Result<Rows, DactylError>;
11    fn write(&self, sql: &str, params: &[Parameter]) -> Result<WriteResult, DactylError>;
12    fn atomic(&self, operations: &[Operation]) -> Result<AtomicResult, DactylError>;
13    fn access_mode(&self) -> AccessMode;
14    fn inspect_schema(&self) -> Result<StoreSchema, DactylError> {
15        Err(DactylError::adapter_with_code(
16            AdapterErrorKind::Capability,
17            "unsupported_schema_inspection",
18            "schema inspection is a local-store operation",
19        ))
20    }
21}
22
23#[cfg(feature = "sqlite")]
24pub mod sqlite;
25
26#[cfg(feature = "neon")]
27pub mod neon;