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