use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, Deserialize, Serialize)]
#[serde(rename_all = "kebab-case")]
pub enum Cipher {
#[serde(rename = "aes256cbc", alias = "aes256-cbc")]
Aes256Cbc,
}
#[cfg(feature = "encryption")]
impl From<Cipher> for libsql::Cipher {
fn from(cipher: Cipher) -> Self {
match cipher {
Cipher::Aes256Cbc => libsql::Cipher::Aes256Cbc,
}
}
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct EncryptionConfig {
pub cipher: Cipher,
pub key: Vec<u8>,
}
#[cfg(feature = "encryption")]
impl From<EncryptionConfig> for libsql::EncryptionConfig {
fn from(config: EncryptionConfig) -> Self {
libsql::EncryptionConfig::new(config.cipher.into(), bytes::Bytes::from(config.key))
}
}
#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct LoadOptions {
pub path: String,
pub encryption: Option<EncryptionConfig>,
pub sync_url: Option<String>,
pub auth_token: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct QueryResult {
pub rows_affected: u64,
pub last_insert_id: i64,
}
#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct PingRequest {
pub value: Option<String>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct PingResponse {
pub value: Option<String>,
}