diff --git a/src/ATrade/MDS/Database.hs b/src/ATrade/MDS/Database.hs index d7a31b4..8bd06b6 100644 --- a/src/ATrade/MDS/Database.hs +++ b/src/ATrade/MDS/Database.hs @@ -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 diff --git a/src/ATrade/MDS/HistoryServer.hs b/src/ATrade/MDS/HistoryServer.hs index f60fbfc..9cc859d 100644 --- a/src/ATrade/MDS/HistoryServer.hs +++ b/src/ATrade/MDS/HistoryServer.hs @@ -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 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