Revision b04dc242 htools/Ganeti/Query/Query.hs

b/htools/Ganeti/Query/Query.hs
191 191
queryInner _ _ (Query qkind _ _) _ =
192 192
  return . Bad $ "Query '" ++ show qkind ++ "' not supported"
193 193

  
194
-- | Helper for 'queryFields'.
195
fieldsExtractor :: FieldMap a b -> [FilterField] -> QueryFieldsResult
196
fieldsExtractor fieldsMap fields =
197
  let selected = if null fields
198
                   then map snd $ Map.toAscList fieldsMap
199
                   else getSelectedFields fieldsMap fields
200
  in QueryFieldsResult (map fst selected)
201

  
194 202
-- | Query fields call.
195
-- FIXME: Looks generic enough to use a typeclass
196 203
queryFields :: QueryFields -> Result QueryFieldsResult
197 204
queryFields (QueryFields QRNode fields) =
198
  let selected = if null fields
199
                   then map snd $ Map.toAscList nodeFieldsMap
200
                   else getSelectedFields nodeFieldsMap fields
201
  in Ok $ QueryFieldsResult (map fst selected)
205
  Ok $ fieldsExtractor nodeFieldsMap fields
202 206

  
203 207
queryFields (QueryFields QRGroup fields) =
204
  let selected = if null fields
205
                   then map snd $ Map.toAscList groupFieldsMap
206
                   else getSelectedFields groupFieldsMap fields
207
  in Ok $ QueryFieldsResult (map fst selected)
208

  
208
  Ok $ fieldsExtractor groupFieldsMap fields
209 209

  
210 210
queryFields (QueryFields qkind _) =
211 211
  Bad $ "QueryFields '" ++ show qkind ++ "' not supported"

Also available in: Unified diff