morpheus-graphql-client-0.18.0: src/Data/Morpheus/Client/Internal/Utils.hs
{-# LANGUAGE NoImplicitPrelude #-}
module Data.Morpheus.Client.Internal.Utils
( removeDuplicates,
isEnum,
)
where
import Data.Morpheus.Client.Internal.Types
( ClientConstructorDefinition (cFields),
)
import Relude
removeDuplicates :: Eq a => [a] -> [a]
removeDuplicates = fst . splitDuplicates
splitDuplicates :: Eq a => [a] -> ([a], [a])
splitDuplicates = collectElems ([], [])
where
collectElems :: Eq a => ([a], [a]) -> [a] -> ([a], [a])
collectElems collected [] = collected
collectElems (collected, errors) (x : xs)
| x `elem` collected = collectElems (collected, errors <> [x]) xs
| otherwise = collectElems (collected <> [x], errors) xs
isEnum :: [ClientConstructorDefinition] -> Bool
isEnum = all (null . cFields)