progscrape-application 0.0.3

progscrape.com application logic
mod persist;
mod story;

pub use persist::{
    BackerUpper, BackupResult, IntoStoryQuery, MemIndex, PersistError, PersistLocation,
    ScrapePersistResult, ScrapePersistResultSummarizer, ScrapePersistResultSummary, SearchSummary,
    Shard, ShardOrder, Storage, StorageFetch, StorageSummary, StorageWriter, StoryIndex,
    StoryQuery, StoryScrapePayload,
};
pub use story::{
    Story, StoryEvaluator, StoryIdentifier, StoryRender, StoryScore, StoryScoreConfig, TagSet,
    TaggerConfig,
};

macro_rules! timer_start {
    () => {
        if ::tracing::event_enabled!(tracing::Level::DEBUG) {
            Some(std::time::Instant::now())
        } else {
            None
        }
    };
}
pub(crate) use timer_start;

macro_rules! timer_end {
    ($timer:ident, $message:literal $(, $e:expr )*) => {
        if let Some(start) = $timer {
            let elapsed = start.elapsed();
            if elapsed.as_secs() >= 2 {
                tracing::info!(concat!($message, " [{:.3}s]") $(,$e)*, elapsed.as_secs_f32());
            } else {
                tracing::info!(concat!($message, " [{}ms]") $(,$e)*, elapsed.as_millis());
            }
        }
    };
}
pub(crate) use timer_end;

#[cfg(test)]
mod test {
    use rstest::*;
    use tracing_subscriber::EnvFilter;

    #[fixture]
    #[once]
    pub fn enable_tracing() -> bool {
        tracing_subscriber::fmt()
            .with_env_filter(EnvFilter::from_default_env())
            .init();
        true
    }

    #[fixture]
    #[once]
    pub fn enable_slow_tests() -> bool {
        std::env::var("ENABLE_SLOW_TESTS").is_ok()
    }
}