use super::ts_to_dt;
use crate::{Publisher, RType, RecordHeader};
pub trait Record: AsRef<[u8]> {
fn header(&self) -> &RecordHeader;
fn record_size(&self) -> usize {
self.header().record_size()
}
fn rtype(&self) -> crate::Result<RType> {
self.header().rtype()
}
fn publisher(&self) -> crate::Result<Publisher> {
self.header().publisher()
}
fn raw_index_ts(&self) -> u64 {
self.header().ts_event
}
fn index_ts(&self) -> Option<time::OffsetDateTime> {
ts_to_dt(self.raw_index_ts())
}
fn index_date(&self) -> Option<time::Date> {
self.index_ts().map(|dt| dt.date())
}
}
pub trait RecordMut {
fn header_mut(&mut self) -> &mut RecordHeader;
}
pub trait HasRType: Record + RecordMut {
fn has_rtype(rtype: u8) -> bool;
}