//! ripgrow-core: data model, schema, and progression logic for ripgrow. //! //! One SQLite file per profile. No `profile_id` column anywhere — a profile //! is a file, hand-off is copy-the-file, deletion is `rm`. pub mod db; pub mod diagnostic; pub mod effort; pub mod error; pub mod estimator; pub mod generation; pub mod heuristics; pub mod profiles; pub mod progression; pub mod seed; pub mod templates; pub mod values; pub use db::Db; pub use diagnostic::{DiagnosticSet, DiagnosticStep, next_step as next_diagnostic_step}; pub use effort::distance::{DistanceKind, DistancePayload, DistancePrescription, DistanceSet}; pub use effort::reps::{RepsKind, RepsPayload, RepsPrescription, RepsSet}; pub use effort::timed::{TimedKind, TimedPayload, TimedPrescription, TimedSet}; pub use effort::{ AnyPayload, AnyPrescription, AnySet, EffortKind, Kind, PrescriptionResult as AnyPrescriptionResult, append_any, compute_prescription_any, distance, reps, timed, }; pub use error::Error; pub use estimator::estimate_e1rm; pub use generation::{PickedSlot, Readiness}; pub use heuristics::rir_from_rpe; pub use profiles::{Profile, create_profile_in, list_profiles, profiles_dir, slugify}; pub use progression::{Prescription, PrescriptionResult, SessionOutcome, State}; pub use seed::seed_starter_content; pub use templates::{Exercise, ResistanceType, Tag}; pub use values::{Distance, Duration, Estimate, Increment, Load, LoadUnit, Reps, Rpe};