1use crate::contract::{AccessMode, AtomicResult, Operation, WriteResult};
4use crate::error::{AdapterErrorKind, DactylError};
5use crate::rows::{Parameter, Rows};
6use crate::schema::StoreSchema;
7
8pub 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;