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