1pub mod conditions;
5pub mod context;
7pub mod data;
9pub mod database;
11pub mod models;
13
14use thiserror::Error;
15
16use crate::models::ValueType as LocalValueType;
17use gluex_core::RunNumber as LocalRunNumber;
18
19pub type RCDBResult<T> = Result<T, RCDBError>;
21
22#[derive(Error, Debug)]
24pub enum RCDBError {
25 #[error(transparent)]
27 SqliteError(#[from] rusqlite::Error),
28 #[error("condition type not found: {0}")]
30 ConditionTypeNotFound(String),
31 #[error("schema_versions table does not contain version 2")]
33 MissingSchemaVersion,
34 #[error("fetch requires at least one condition name")]
36 EmptyConditionList,
37 #[error(transparent)]
39 PathResolutionError(#[from] std::io::Error),
40 #[error(transparent)]
42 GlueXCoreError(#[from] gluex_core::GlueXCoreError),
43 #[error("unknown RCDB value type identifier: {0}")]
45 UnknownValueType(String),
46 #[error("condition {condition_name} type mismatch: expected {expected:?}, actual {actual:?}")]
48 ConditionTypeMismatch {
49 condition_name: String,
51 expected: LocalValueType,
53 actual: LocalValueType,
55 },
56 #[error("missing time_value for condition {condition_name} at run {run_number}")]
58 MissingTimeValue {
59 condition_name: String,
61 run_number: LocalRunNumber,
63 },
64 #[error("missing {0} environment variable for RCDB connection")]
66 MissingConnectionEnv(String),
67}
68
69pub use crate::conditions::{BoolField, Expr, FloatField, IntField, StringField, TimeField};
70pub use crate::context::{RCDBContext, RunSelection};
71pub use crate::data::Value;
72pub use crate::database::RCDB;
73pub use crate::models::ValueType;
74pub use gluex_core::run_periods::RunPeriod;
75pub use gluex_core::RunNumber;