Compare commits

..

No commits in common. "04797427fc3dad1af1ff081ffdf441f3ba37a2cf" and "8bd67b2096b4abf52b94a35f4ff87450344eaa72" have entirely different histories.

4 changed files with 13 additions and 33 deletions

View File

@ -10,21 +10,16 @@ import Control.Monad.Logger (runStderrLoggingT)
import Control.Monad.Trans.Resource (runResourceT)
import Data.ByteString.Lazy as BS
import Data.List as List
import Data.Text (Text, unpack)
-- https://github.com/yesodweb/yesod-cookbook/blob/master/cookbook/Static-file-subsite-Hello-World.md
import Data.Time.Clock.POSIX (posixSecondsToUTCTime)
import Database.Persist.Postgresql (ConnectionPool, ConnectionString, SqlBackend, runMigration, runSqlPool, withPostgresqlPool)
import Debug.Trace (traceShow)
import Store (fetch, migrateAll, save)
import Text.Read (readMaybe)
import Track (parseBS)
import Yesod.Core
import Yesod.Form.Fields
import Yesod.Form.Functions
import Yesod.Form.Input
import Yesod.Form.Types
import Yesod.Persist
-- https://github.com/yesodweb/yesod-cookbook/blob/master/cookbook/Static-file-subsite-Hello-World.md
import Yesod.Static
staticFiles "frontend" -- this param appears to be a pathname
@ -93,26 +88,17 @@ var app = Elm.Main.init({
<p>Copyright &copy; 2024 Daniel Barlow
|]
type Form x = Html -> MForm (HandlerFor Souplesse) (FormResult x, Widget)
data Timerange = Timerange {start :: Int, duration :: Int} deriving (Show)
getPointsR :: Handler Value
getPointsR = do
tr <-
runInputGet $
Timerange
<$> ireq intField "start"
<*> ireq intField "duration"
let start' = posixSecondsToUTCTime $ fromInteger $ toInteger $ start tr
duration' = fromInteger $ toInteger $ duration tr
points <- runDB $ Store.fetch start' duration'
returnJson (traceShow tr points)
points <- runDB Store.fetch
returnJson points
data FileForm = FileForm
{ fileInfo :: FileInfo
}
type Form x = Html -> MForm (HandlerFor Souplesse) (FormResult x, Widget)
uploadForm :: Form FileForm
uploadForm =
renderDivs $

View File

@ -17,7 +17,7 @@ module Store (save, fetch, migrateAll) where
import Control.Monad.IO.Class (MonadIO, liftIO)
import Control.Monad.Trans.Reader (ReaderT)
import Data.Time.Clock (DiffTime, NominalDiffTime, UTCTime, addUTCTime)
import Data.Time.Clock (UTCTime)
import Database.Persist
import Database.Persist.Class
import Database.Persist.Postgresql
@ -30,7 +30,6 @@ import Database.Persist.Postgresql
runSqlPool,
)
import Database.Persist.TH
import Text.Read (readMaybe)
import Track (Point (..), Pos (..))
import Track as T
@ -62,14 +61,13 @@ toPoint entity =
in Point
pos
(trkptTime tkp)
(trkptCadence tkp)
(trkptPower tkp)
(trkptHeartRate tkp)
Nothing
Nothing
Nothing
save p = do insert $ fromPoint p
fetch :: (MonadIO m) => UTCTime -> NominalDiffTime -> ReaderT SqlBackend m [Point]
fetch start duration = do
let finish = addUTCTime duration start
trkpts <- selectList [TrkptTime >. start, TrkptTime <. finish] []
fetch :: (MonadIO m) => ReaderT SqlBackend m [Point]
fetch = do
trkpts <- selectList [TrkptLat <=. 360] [] -- Asc TrkptTime]
return $ map toPoint trkpts

View File

@ -58,10 +58,7 @@ instance ToJSON Point where
toJSON Point {..} =
object
[ "pos" .= pos,
"time" .= time,
"cadence" .= cadence,
"power" .= power,
"heartRate" .= heartRate
"time" .= time
]
-- TODO do we even need this type?

View File

@ -78,7 +78,6 @@ executable souplesse
, persistent-postgresql
, resourcet
, monad-logger
, time
, yesod-core == 1.6.25.1
, yesod-static
, yesod-form