mod column;
mod eval;
pub mod output;
mod runner;
mod sql_generator;
mod view_definition;
pub use column::{ColumnInfo, ColumnType};
pub use eval::{CompiledView, execute};
pub use runner::{ViewResult, ViewRunner};
pub use sql_generator::{Dialect, GeneratedColumn, GeneratedSql, SqlGenerator, create_table};
pub use view_definition::{Column, Constant, SelectColumn, ViewDefinition, WhereClause};
use thiserror::Error;
#[derive(Debug, Error)]
pub enum Error {
#[error("Invalid ViewDefinition: {0}")]
InvalidViewDefinition(String),
#[error("Invalid path: {0}")]
InvalidPath(String),
#[error("SQL execution error: {0}")]
Sql(#[from] sqlx_core::error::Error),
#[error("FHIRPath error: {0}")]
FhirPath(String),
#[error("Output error: {0}")]
Output(String),
#[error("JSON error: {0}")]
Json(#[from] serde_json::Error),
}
pub type Result<T> = std::result::Result<T, Error>;