morpheus-graphql v0.9.2 Release Notes

  • ๐Ÿ’ฅ Breaking Changes

    • all constructors of Resolver: QueryResolver,MutResolver,SubResolver are unexposed. use lift , publish or subscribe. 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)
    

    Minor

    • MonadIO instance for resolvers. Thanks @dandoh
    • Example using STM, authentication, monad transformers. Thanks @dandoh
    • โž• added dependency mtl