error.rs (3265B)
1 use std::{io, path::PathBuf}; 2 3 use radroots_local_events::LocalEventsError; 4 use radroots_sql_core::SqlError; 5 use thiserror::Error; 6 7 #[derive(Debug, Error)] 8 pub enum AppSqliteError { 9 #[error("failed to create sqlite parent directory `{path}`")] 10 CreateParentDirectory { 11 path: PathBuf, 12 #[source] 13 source: io::Error, 14 }, 15 #[error("failed to open sqlite database at `{path}`")] 16 OpenPath { 17 path: PathBuf, 18 #[source] 19 source: rusqlite::Error, 20 }, 21 #[error("failed to open in-memory sqlite database")] 22 OpenInMemory { 23 #[source] 24 source: rusqlite::Error, 25 }, 26 #[error("failed to configure sqlite busy timeout")] 27 ConfigureBusyTimeout { 28 #[source] 29 source: rusqlite::Error, 30 }, 31 #[error("failed to apply sqlite pragma `{pragma}`")] 32 ApplyPragma { 33 pragma: &'static str, 34 #[source] 35 source: rusqlite::Error, 36 }, 37 #[error("failed to read sqlite schema version")] 38 ReadSchemaVersion { 39 #[source] 40 source: rusqlite::Error, 41 }, 42 #[error( 43 "sqlite schema version {current} is newer than supported version {latest}; manual migration is required" 44 )] 45 UnsupportedSchemaVersion { current: u32, latest: u32 }, 46 #[error("failed to begin sqlite migration transaction for version {version}")] 47 BeginMigration { 48 version: u32, 49 #[source] 50 source: rusqlite::Error, 51 }, 52 #[error("failed to execute sqlite migration {version}")] 53 ExecuteMigration { 54 version: u32, 55 #[source] 56 source: rusqlite::Error, 57 }, 58 #[error("failed to record sqlite schema version {version}")] 59 RecordSchemaVersion { 60 version: u32, 61 #[source] 62 source: rusqlite::Error, 63 }, 64 #[error("failed to commit sqlite migration {version}")] 65 CommitMigration { 66 version: u32, 67 #[source] 68 source: rusqlite::Error, 69 }, 70 #[error("failed to execute sqlite query for {operation}")] 71 Query { 72 operation: &'static str, 73 #[source] 74 source: rusqlite::Error, 75 }, 76 #[error("failed to encode sqlite JSON column `{field}`")] 77 EncodeJson { 78 field: &'static str, 79 #[source] 80 source: serde_json::Error, 81 }, 82 #[error("failed to decode sqlite JSON column `{field}`")] 83 DecodeJson { 84 field: &'static str, 85 #[source] 86 source: serde_json::Error, 87 }, 88 #[error("invalid sqlite id in `{field}`: `{value}`")] 89 DecodeId { field: &'static str, value: String }, 90 #[error("missing required sqlite column `{field}`")] 91 MissingColumn { field: &'static str }, 92 #[error("invalid sqlite enum value in `{field}`: `{value}`")] 93 DecodeEnum { field: &'static str, value: String }, 94 #[error("invalid farm-rules projection: {reason}")] 95 InvalidProjection { reason: &'static str }, 96 #[error("failed to access shared local events store during {operation}")] 97 LocalEventsSql { 98 operation: &'static str, 99 #[source] 100 source: SqlError, 101 }, 102 #[error("failed to import shared local event records during {operation}")] 103 LocalEvents { 104 operation: &'static str, 105 #[source] 106 source: LocalEventsError, 107 }, 108 }