use libsqlite3_sys::{
SQLITE_CHECKPOINT_FULL, SQLITE_CHECKPOINT_NOOP, SQLITE_CHECKPOINT_PASSIVE,
SQLITE_CHECKPOINT_RESTART, SQLITE_CHECKPOINT_TRUNCATE, SQLITE_DBSTATUS_CACHE_HIT,
SQLITE_DBSTATUS_CACHE_MISS, SQLITE_DBSTATUS_CACHE_SPILL, SQLITE_DBSTATUS_CACHE_USED,
SQLITE_DBSTATUS_CACHE_USED_SHARED, SQLITE_DBSTATUS_CACHE_WRITE, SQLITE_DBSTATUS_DEFERRED_FKS,
SQLITE_DBSTATUS_LOOKASIDE_HIT, SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL,
SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE, SQLITE_DBSTATUS_LOOKASIDE_USED,
SQLITE_DBSTATUS_SCHEMA_USED, SQLITE_DBSTATUS_STMT_USED, SQLITE_DBSTATUS_TEMPBUF_SPILL,
};
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct SqliteRuntimeInfo {
pub version: String,
pub version_number: i32,
pub source_id: String,
pub compile_options: Vec<String>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct DbStatus {
pub current: i64,
pub highwater: i64,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[non_exhaustive]
pub enum DbStatusKind {
LookasideUsed,
CacheUsed,
SchemaUsed,
StatementUsed,
LookasideHit,
LookasideMissSize,
LookasideMissFull,
CacheHit,
CacheMiss,
CacheWrite,
DeferredForeignKeys,
CacheUsedShared,
CacheSpill,
TempBufferSpill,
}
impl DbStatusKind {
pub(crate) fn as_sqlite_code(self) -> i32 {
match self {
Self::LookasideUsed => SQLITE_DBSTATUS_LOOKASIDE_USED,
Self::CacheUsed => SQLITE_DBSTATUS_CACHE_USED,
Self::SchemaUsed => SQLITE_DBSTATUS_SCHEMA_USED,
Self::StatementUsed => SQLITE_DBSTATUS_STMT_USED,
Self::LookasideHit => SQLITE_DBSTATUS_LOOKASIDE_HIT,
Self::LookasideMissSize => SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE,
Self::LookasideMissFull => SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL,
Self::CacheHit => SQLITE_DBSTATUS_CACHE_HIT,
Self::CacheMiss => SQLITE_DBSTATUS_CACHE_MISS,
Self::CacheWrite => SQLITE_DBSTATUS_CACHE_WRITE,
Self::DeferredForeignKeys => SQLITE_DBSTATUS_DEFERRED_FKS,
Self::CacheUsedShared => SQLITE_DBSTATUS_CACHE_USED_SHARED,
Self::CacheSpill => SQLITE_DBSTATUS_CACHE_SPILL,
Self::TempBufferSpill => SQLITE_DBSTATUS_TEMPBUF_SPILL,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[non_exhaustive]
pub enum WalCheckpointMode {
Noop,
Passive,
Full,
Restart,
Truncate,
}
impl WalCheckpointMode {
pub(crate) fn as_sqlite_code(self) -> i32 {
match self {
Self::Noop => SQLITE_CHECKPOINT_NOOP,
Self::Passive => SQLITE_CHECKPOINT_PASSIVE,
Self::Full => SQLITE_CHECKPOINT_FULL,
Self::Restart => SQLITE_CHECKPOINT_RESTART,
Self::Truncate => SQLITE_CHECKPOINT_TRUNCATE,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct WalCheckpoint {
pub log_frames: Option<i32>,
pub checkpointed_frames: Option<i32>,
}