@solumjs/graphql
v0.3.5
Published
GraphQL support for SolumJS framework
Maintainers
Readme
@solumjs/graphql
GraphQL support for SolumJS framework.
Features
- Schema builder with type definitions
@Query,@Mutation,@Subscriptiondecorators@GraphQLTypeand@GraphQLFielddecorators- Built-in GraphiQL playground
- Query execution engine
Installation
npm install @solumjs/graphqlUsage
Schema Builder
import { createSchema, mountGraphQL } from "@solumjs/graphql";
const schema = createSchema()
.type("User", `{ id: ID!, name: String!, email: String! }`)
.type("Post", `{ id: ID!, title: String!, author: User! }`)
.input("CreateUserInput", `{ name: String!, email: String! }`)
.query(`
users: [User!]!
user(id: ID!): User
`)
.mutation(`
createUser(input: CreateUserInput!): User!
deleteUser(id: ID!): Boolean!
`)
.resolver("Query", "users", () => {
return [{ id: "1", name: "John", email: "[email protected]" }];
})
.resolver("Query", "user", (_, { id }) => {
return { id, name: "John", email: "[email protected]" };
})
.resolver("Mutation", "createUser", (_, { input }) => {
return { id: "1", ...input };
});
// Mount in your application
mountGraphQL(adapter, schema);Decorators
import { GrpcService, GrpcMethod, Query, Mutation } from "@solumjs/graphql";
@GrpcService("UserService")
class UserService {
@Query("users")
async getUsers() {
return [{ id: "1", name: "John" }];
}
@Mutation("createUser")
async createUser(@Args() input: CreateUserInput) {
return { id: "1", ...input };
}
}HTTP Handler
import { mountGraphQL } from "@solumjs/graphql";
mountGraphQL(adapter, schema, {
path: "/graphql",
graphiql: true, // Enable GraphiQL playground
});API Reference
SchemaBuilder
type(name, definition)- Define a GraphQL typeinput(name, definition)- Define a GraphQL input typeenum(name, values)- Define a GraphQL enumquery(definition)- Define query fieldsmutation(definition)- Define mutation fieldssubscription(definition)- Define subscription fieldsresolver(typeName, fieldName, handler)- Register a field resolverbuild()- Build the schema
Decorators
@Query(fieldName)- Mark a method as a query resolver@Mutation(fieldName)- Mark a method as a mutation resolver@Subscription(fieldName)- Mark a method as a subscription resolver@GraphQLType(typeName)- Mark a class as a GraphQL type@GraphQLField(fieldName, type)- Mark a method as a GraphQL field
License
MIT
