morpheus-graphql v0.10.0 Release Notes
Release Date: 2020-01-07 // over 4 years ago-
๐ฅ Breaking Changes
- all constructors of
Resolver
:QueryResolver
,MutResolver
,SubResolver
are unexposed. uselift
,publish
orsubscribe
. e.g
-- Query Resolver resolveUser :: ResolveQ EVENT IO User resolveUser = lift getDBUser -- Mutation Resolver resolveCreateUser :: ResolveM EVENT IO User resolveCreateUser = do publish [userUpdate] -- publishes event inside mutation lift setDBUser -- Subscription Resolver resolveNewUser :: ResolveS EVENT IO User resolveNewUser = subscribe [USER] $ do pure $ \(Event _ content) -> lift (getDBUserByContent content)
๐ New features
- ๐ฆ exposed
publish
for mutation resolvers, now you can write
resolveCreateUser :: ResolveM EVENT IO User resolveCreateUser = do requireAuthorized publish [userUpdate] liftEither setDBUser
- ๐ฆ exposed
subscribe
for subscription resolvers, now you can write
resolveNewUser :: ResolveS EVENT IO User resolveNewUser = subscribe [USER] $ do requireAuthorized pure userByEvent where userByEvent (Event _ content) = liftEither (getDBUser content)
type SubField
will convert your subscription monad to query monad.SubField (Resolver Subscription Event IO) User
will generate same asResolver Subscription Event IO (User ((Resolver QUERY Event IO)))
now if you want define subscription as follows
data Subscription m = Subscription { newUser :: SubField m User }
unsafeInternalContext
to get resolver context, use only if it really necessary. the code depending on it may break even on minor version changes.
resolveUser :: ResolveQ EVENT IO User resolveUser = do Context { currentSelection, schema, operation } <- unsafeInternalContext lift (getDBUser currentSelection)
Minor
- MonadIO instance for resolvers. Thanks @dandoh
- Example using STM, authentication, monad transformers. Thanks @dandoh
- โ added dependency
mtl
- all constructors of