Browse Source

Wildcard support in ticker request

master
Denis Tereshkin 5 years ago
parent
commit
0cd922e0d4
  1. 2
      src/ATrade/MDS/Database.hs
  2. 4
      src/ATrade/MDS/HistoryServer.hs

2
src/ATrade/MDS/Database.hs

@ -84,7 +84,7 @@ getData db tickerId interval@(TimeInterval start end) (Timeframe tfSec) = do @@ -84,7 +84,7 @@ getData db tickerId interval@(TimeInterval start end) (Timeframe tfSec) = do
getDataConduit :: (MonadIO m) => MdsHandle -> TickerId -> TimeInterval -> Timeframe -> ConduitT () Bar m ()
getDataConduit db tickerId (TimeInterval start end) (Timeframe tfSec) = do
stmt <- liftIO $ prepare db "SELECT timestamp, timeframe, open, high, low, close, volume FROM bars WHERE ticker == ? AND timeframe == ? AND timestamp >= ? AND timestamp <= ? ORDER BY timestamp ASC;"
stmt <- liftIO $ prepare db "SELECT timestamp, timeframe, open, high, low, close, volume FROM bars WHERE ticker LIKE ? AND timeframe == ? AND timestamp >= ? AND timestamp <= ? ORDER BY timestamp ASC;"
_ <- liftIO $ execute stmt [(toSql. T.unpack) tickerId, toSql tfSec, (toSql . utcTimeToPOSIXSeconds) start, (toSql . utcTimeToPOSIXSeconds) end]
whileJust_ (liftIO $ fetchRow stmt) $ \row -> case barFromResult tickerId row of
Just bar -> yield bar

4
src/ATrade/MDS/HistoryServer.hs

@ -59,7 +59,7 @@ serveQHP db sock = forever $ do @@ -59,7 +59,7 @@ serveQHP db sock = forever $ do
handleCmd peerId cmd = case cmd of
rq -> do
debugM "QHP" $ "Incoming command: " ++ show cmd
let dataC = getDataConduit db (rqTicker rq) (TimeInterval (rqStartTime rq) (rqEndTime rq)) (Timeframe (periodSeconds $ rqPeriod rq))
let dataC = getDataConduit db (replaceWildcards $ rqTicker rq) (TimeInterval (rqStartTime rq) (rqEndTime rq)) (Timeframe (periodSeconds $ rqPeriod rq))
runConduit $ dataC .| (conduitVector chunkSize) .| (sendChunks peerId)
--qdata <- getData db (rqTicker rq) (TimeInterval (rqStartTime rq) (rqEndTime rq)) (Timeframe (periodSeconds $ rqPeriod rq))
--let bytes = serializeBars $ V.concat $ fmap snd qdata
@ -85,6 +85,8 @@ serveQHP db sock = forever $ do @@ -85,6 +85,8 @@ serveQHP db sock = forever $ do
chunkSize = 4096
replaceWildcards = T.map (\x -> if x == '?' then '_' else x)
serveHAP :: (Sender a, Receiver a) => MdsHandle -> Socket a -> IO ()
serveHAP db sock = forever $ do
rq <- receiveMulti sock

Loading…
Cancel
Save