@@ -44,6 +44,7 @@ import qualified Data.ByteString.Char8 as BS
4444import Lucid hiding (type_ )
4545import Network.Wai
4646import Network.Wai.Handler.Warp
47+ import Network.Wai.Middleware.Cors
4748import qualified Data.Aeson.Parser
4849import Language.Haskell.TH
4950
@@ -102,7 +103,7 @@ $(deriveJSON defaultOptions ''Version)
102103instance ToSchema Version
103104
104105version1 :: Version
105- version1 = Version " 0.29.5 "
106+ version1 = Version " 0.29.17 "
106107
107108
108109
@@ -343,9 +344,10 @@ wrapRunAsset (RunAssetReq d assets (Just (AP.PoolLevel assumps)) mRates (Just pm
343344type ScenarioName = String
344345
345346data RunDealReq = SingleRunReq DealType (Maybe AP. ApplyAssumptionType ) AP. NonPerfAssumption
346- | MultiScenarioRunReq DealType (Map. Map ScenarioName AP. ApplyAssumptionType ) AP. NonPerfAssumption
347- | MultiDealRunReq (Map. Map ScenarioName DealType ) (Maybe AP. ApplyAssumptionType ) AP. NonPerfAssumption
348- | MultiRunAssumpReq DealType (Maybe AP. ApplyAssumptionType ) (Map. Map ScenarioName AP. NonPerfAssumption )
347+ | MultiScenarioRunReq DealType (Map. Map ScenarioName AP. ApplyAssumptionType ) AP. NonPerfAssumption --- multi pool perf
348+ | MultiDealRunReq (Map. Map ScenarioName DealType ) (Maybe AP. ApplyAssumptionType ) AP. NonPerfAssumption -- multi deal struct
349+ | MultiRunAssumpReq DealType (Maybe AP. ApplyAssumptionType ) (Map. Map ScenarioName AP. NonPerfAssumption ) -- multi run assump
350+ | MultiComboReq (Map. Map ScenarioName DealType ) (Map. Map ScenarioName (Maybe AP. ApplyAssumptionType )) (Map. Map ScenarioName AP. NonPerfAssumption )
349351 deriving (Show , Generic )
350352
351353data RunSimDealReq = OASReq DealType (Map. Map ScenarioName AP. ApplyAssumptionType ) AP. NonPerfAssumption
@@ -382,10 +384,9 @@ type EngineAPI = "version" :> Get '[JSON] Version
382384 :<|> " runDealByScenarios" :> ReqBody '[JSON ] RunDealReq :> Post '[JSON ] (Map. Map ScenarioName RunResp )
383385 :<|> " runMultiDeals" :> ReqBody '[JSON ] RunDealReq :> Post '[JSON ] (Map. Map ScenarioName RunResp )
384386 :<|> " runDealByRunScenarios" :> ReqBody '[JSON ] RunDealReq :> Post '[JSON ] (Map. Map ScenarioName RunResp )
387+ :<|> " runByCombo" :> ReqBody '[JSON ] RunDealReq :> Post '[JSON ] (Map. Map String RunResp )
385388 :<|> " runDate" :> ReqBody '[JSON ] RunDateReq :> Post '[JSON ] [Date ]
386389
387- -- instance NFData [Date]
388-
389390
390391engineAPI :: Proxy EngineAPI
391392engineAPI = Proxy
@@ -433,7 +434,19 @@ runDate (RunDateReq sd dp md) = return $
433434
434435runDealByRunScenarios :: RunDealReq -> Handler (Map. Map ScenarioName RunResp )
435436runDealByRunScenarios (MultiRunAssumpReq dt mAssump nonPerfAssumpMap)
436- = return $ Map. map (\ singleAssump -> wrapRun dt mAssump singleAssump) nonPerfAssumpMap
437+ = return $ Map. map (wrapRun dt mAssump) nonPerfAssumpMap
438+
439+
440+ runDealByCombo :: RunDealReq -> Handler (Map. Map String RunResp )
441+ runDealByCombo (MultiComboReq dMap assumpMap nonPerfAssumpMap)
442+ = let
443+ dList = Map. toList dMap
444+ aList = Map. toList assumpMap
445+ nList = Map. toList nonPerfAssumpMap
446+ r = [ (intercalate " ^" [dk,ak,nk], wrapRun d a n) | (dk,d) <- dList, (ak,a) <- aList, (nk,n) <- nList ]
447+ rMap = Map. fromList r
448+ in
449+ return rMap -- `debug` ("RunDealByCombo->"++ show rMap)
437450
438451
439452myServer :: ServerT API Handler
@@ -446,6 +459,7 @@ myServer = return engineSwagger
446459 :<|> runDealScenarios
447460 :<|> runMultiDeals
448461 :<|> runDealByRunScenarios
462+ :<|> runDealByCombo
449463 :<|> runDate
450464-- :<|> error "not implemented"
451465
@@ -459,7 +473,9 @@ data Config = Config { port :: Int}
459473instance FromJSON Config
460474
461475app :: Application
462- app = serve (Proxy :: Proxy API ) myServer
476+ -- app = serve (Proxy :: Proxy API) myServer
477+ app = simpleCors $ serve (Proxy :: Proxy API ) myServer
478+
463479
464480
465481main :: IO ()
0 commit comments