app

Local-first trade for farms and co-ops
git clone https://radroots.dev/git/app.git
Log | Files | Refs | README | LICENSE

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 }