use thiserror::Error;
#[derive(Debug, Error)]
pub enum SegmentError {
#[error("corrupt segment file: {detail}")]
CorruptFile {
detail: String,
},
#[error("invalid magic bytes: expected CXSG")]
InvalidMagic,
#[error("checksum mismatch: expected {expected:#010x}, got {actual:#010x}")]
ChecksumMismatch {
expected: u32,
actual: u32,
},
#[error("unsupported segment version: {version}")]
UnsupportedVersion {
version: u16,
},
#[error("I/O error: {0}")]
Io(#[from] std::io::Error),
#[error("encoding error: {0}")]
Encoding(#[from] chronix_encoding::EncodingError),
#[error("segment writer already finalized")]
AlreadyFinalized,
#[error("no data written to segment")]
EmptySegment,
#[error("row group index {index} out of range (max: {max})")]
RowGroupOutOfRange {
index: usize,
max: usize,
},
#[error("column not found: {name}")]
ColumnNotFound {
name: String,
},
}
pub type Result<T> = std::result::Result<T, SegmentError>;