#[derive(Debug, thiserror::Error)]
#[non_exhaustive]
pub enum TursoError {
#[error("invalid turso config: {0}")]
Config(String),
#[error("cannot open turso database at `{path}`: {source}")]
Open {
path: String,
#[source]
source: Box<dyn std::error::Error + Send + Sync>,
},
#[error("turso: {0}")]
Database(#[from] turso::Error),
#[error("turso migration `{id}` failed: {message}")]
Migration {
id: String,
message: String,
},
#[error("a turso migration id is empty")]
InvalidMigration,
#[error(
"turso migration `{id}` changed after it was applied \
(applied checksum {applied}, current checksum {current}); add a new migration instead"
)]
MigrationChecksum {
id: String,
applied: String,
current: String,
},
#[error("turso migration id `{0}` is used more than once")]
DuplicateMigration(String),
#[error("turso database is read-only and these migrations are pending: {}", .0.join(", "))]
ReadOnlyPending(Vec<String>),
#[error("turso plugin is already started")]
AlreadyStarted,
#[error("turso database is closed")]
Closed,
#[error("turso plugin is not installed or is disabled")]
NotInstalled,
#[error("`[turso.sync]` is set, but the `sync` feature of autumn-plugin-turso is off")]
SyncFeatureDisabled,
#[error("turso sync is not configured for this database")]
SyncNotConfigured,
#[error("turso sync failed: {0}")]
Sync(String),
}
pub type Result<T, E = TursoError> = std::result::Result<T, E>;