40 lines
775 B
Haskell
40 lines
775 B
Haskell
module Qualify.Data.Event
|
|
( Event(..)
|
|
) where
|
|
|
|
import qualified Data.List.NonEmpty as NE
|
|
import qualified Data.NonEmptyText as NET
|
|
import qualified Data.Time as Time
|
|
|
|
data Event =
|
|
Event
|
|
{ time :: Time.UTCTime
|
|
, details :: EventDetails
|
|
}
|
|
|
|
data EventDetails
|
|
= MoodEvent Mood Intensity
|
|
| ActivityEvent ActivityType
|
|
| ConsumptionEvent Substance Dose
|
|
|
|
data Mood
|
|
= Angry
|
|
| Sad
|
|
| Happy
|
|
| Neutral
|
|
|
|
data ActivityType
|
|
= Cycling Distance
|
|
| Running Distance
|
|
| Meditation DurationX
|
|
| Pushups (NE.NonEmpty WorkoutSet)
|
|
|
|
newtype Intensity = Intensity Int
|
|
newtype Duration = Minutes Int
|
|
newtype Distance = Miles Int
|
|
newtype Reps = Reps Int
|
|
newtype WorkoutSet = WorkoutSet Reps
|
|
|
|
newtype Substance = Substance NET.NonEmptyText
|
|
newtype Dose = Dose NET.NonEmptyText
|