Skip to content

Commit 2eed647

Browse files
author
Auke Booij
committed
Get rid of checkFieldNamesUnique (use Data.List.Extended.duplicates)
1 parent de012b1 commit 2eed647

File tree

1 file changed

+9
-25
lines changed

1 file changed

+9
-25
lines changed

server/src-lib/Hasura/GraphQL/Schema.hs

+9-25
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import Control.Arrow.Extended
1515
import Control.Lens.Extended
1616
import Control.Monad.Unique
1717
import Data.Has
18+
import Data.List.Extended (duplicates)
1819

1920
import qualified Hasura.GraphQL.Parser as P
2021

@@ -129,23 +130,23 @@ buildGQLContext =
129130
= rscParsed newSchemaContext
130131
-- Check for conflicts between remotes
131132
bindErrorA -<
132-
checkFieldNamesUnique (fmap (P.getName . fDefinition) (queryNew ++ concat queryOld))
133-
(\name -> throw400 Unexpected $ "Duplicate remote field " <> squote name)
133+
for_ (duplicates (fmap (P.getName . fDefinition) (queryNew ++ concat queryOld))) $
134+
\name -> throw400 Unexpected $ "Duplicate remote field " <> squote name
134135
-- Check for conflicts between this remote and the tables
135136
bindErrorA -<
136-
checkFieldNamesUnique (fmap (P.getName . fDefinition) queryNew ++ queryFieldNames)
137-
(\name -> throw400 RemoteSchemaConflicts $ "Field cannot be overwritten by remote field " <> squote name)
137+
for_ (duplicates (fmap (P.getName . fDefinition) queryNew ++ queryFieldNames)) $
138+
\name -> throw400 RemoteSchemaConflicts $ "Field cannot be overwritten by remote field " <> squote name
138139
-- Ditto, but for mutations
139140
case mutationNew of
140141
Nothing -> returnA -< ()
141142
Just ms -> do
142143
bindErrorA -<
143-
checkFieldNamesUnique (fmap (P.getName . fDefinition) (ms ++ concat (catMaybes mutationOld)))
144-
(\name -> throw400 Unexpected $ "Duplicate remote field " <> squote name)
144+
for_ (duplicates (fmap (P.getName . fDefinition) (ms ++ concat (catMaybes mutationOld)))) $
145+
\name -> throw400 Unexpected $ "Duplicate remote field " <> squote name
145146
-- Ditto, but for mutations
146147
bindErrorA -<
147-
checkFieldNamesUnique (fmap (P.getName . fDefinition) ms ++ mutationFieldNames)
148-
(\name -> throw400 Unexpected $ "Field cannot be overwritten by remote field " <> squote name)
148+
for_ (duplicates (fmap (P.getName . fDefinition) ms ++ mutationFieldNames)) $
149+
\name -> throw400 Unexpected $ "Field cannot be overwritten by remote field " <> squote name
149150
-- No need to check subscriptions as these are not supported
150151
returnA -< ())
151152
|) newMetadataObject
@@ -577,20 +578,3 @@ unauthenticatedSubscription
577578
unauthenticatedSubscription =
578579
P.selectionSet $$(G.litName "subscription_root") Nothing []
579580
<&> fmap (P.handleTypename (RFRaw . J.String . G.unName))
580-
581-
checkFieldNamesUnique
582-
:: forall m
583-
. ( Monad m
584-
)
585-
=> [G.Name]
586-
-- ^ list of fields whose names are to be checked for uniqueness
587-
-> (G.Name -> m ())
588-
-- ^ error action
589-
-> m ()
590-
checkFieldNamesUnique fields err = foldM_ go mempty fields
591-
where
592-
go :: Set.HashSet G.Name -> G.Name -> m (Set.HashSet G.Name)
593-
go previous field = do
594-
when (field `Set.member` previous) $
595-
err field
596-
return $ field `Set.insert` previous

0 commit comments

Comments
 (0)