@@ -2,6 +2,7 @@ module OpenAPI.Checker.Report where
3import Data.Map.Strict as M
3import Data.Map.Strict as M
4import Data.Monoid.Generic
4import Data.Monoid.Generic
5+import Data.OpenApi.Internal
5import Data.Semigroup.Generic
6import Data.Semigroup.Generic
6import Data.Text (Text)
7import Data.Text (Text)
7import GHC.Generics (Generic)
8import GHC.Generics (Generic)
@@ -44,14 +45,9 @@ data OperationName
44 = Get | Put | Post | Delete | Options | Head | Patch | Trace
45 = Get | Put | Post | Delete | Options | Head | Patch | Trace
45 deriving (Eq, Ord, Show, Generic)
46 deriving (Eq, Ord, Show, Generic)
47−data OperationTree = OperationTree
48+newtype OperationTree = OperationTree
49+ { parameters :: Map ParamKey (Errorable ParamTree)
48− deriving (Eq, Ord, Show, Generic)
50+ } deriving (Eq, Ord, Show, Generic, Semigroup, Monoid)
50−instance Semigroup OperationTree where
51− _ <> _ = OperationTree
53−instance Monoid OperationTree where
54− mempty = OperationTree
56instance Nested OperationTree where
52instance Nested OperationTree where
57 type Parent OperationTree = PathItemTree
53 type Parent OperationTree = PathItemTree
@@ -60,3 +56,30 @@ instance Nested OperationTree where
61data ServerTree = ServerTree
57data ServerTree = ServerTree
62 deriving (Eq, Ord, Show, Generic)
58 deriving (Eq, Ord, Show, Generic)
60+data ParamTree = ParamTree
61+ deriving (Eq, Ord, Show, Generic)
63+instance Semigroup ParamTree where
64+ (<>) = error "Not implemented"
65+instance Monoid ParamTree where
67+ mempty = error "Not implemented"
69+instance Nested ParamTree where
70+ type Key ParamTree = ParamKey
71+ type Parent ParamTree = OperationTree
72+ nest key p = OperationTree $ M.singleton key p
74+deriving instance Ord ParamLocation
76+data ParamKey = ParamKey
78+ , paramIn :: ParamLocation
79+ } deriving (Eq, Ord, Show, Generic)
81+getParamKey :: Param -> ParamKey
82+getParamKey p = ParamKey
83+ { name = _paramName p
84+ , paramIn = _paramIn p