@@ -15,6 +15,7 @@ import Control.Arrow.Extended
15
15
import Control.Lens.Extended
16
16
import Control.Monad.Unique
17
17
import Data.Has
18
+ import Data.List.Extended (duplicates )
18
19
19
20
import qualified Hasura.GraphQL.Parser as P
20
21
@@ -129,23 +130,23 @@ buildGQLContext =
129
130
= rscParsed newSchemaContext
130
131
-- Check for conflicts between remotes
131
132
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
134
135
-- Check for conflicts between this remote and the tables
135
136
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
138
139
-- Ditto, but for mutations
139
140
case mutationNew of
140
141
Nothing -> returnA -< ()
141
142
Just ms -> do
142
143
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
145
146
-- Ditto, but for mutations
146
147
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
149
150
-- No need to check subscriptions as these are not supported
150
151
returnA -< () )
151
152
| ) newMetadataObject
@@ -577,20 +578,3 @@ unauthenticatedSubscription
577
578
unauthenticatedSubscription =
578
579
P. selectionSet $$ (G. litName " subscription_root" ) Nothing []
579
580
<&> 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