0.0.0-rc.1 • Published 5 years ago
grif v0.0.0-rc.1
Usage
Make a new directory with the following files:
/now.json
/grif.config.json
/schema.graphql
now.json
{
"name": "my-project",
"builds": [
{ "src": "grif.config.js", "use": "grif" }
],
"routes": [
{ "src": "/api", "dest": "grif.config.js" }
]
}
grif.config.json
{ "target": "serverless" }
schema.graphql
type User {
id: ID
username: String
posts: [Post]
}
type Post {
id: ID
title: String
text: String
author: User
}
type Query {
getUserById(id: ID!): User
getAllUsers(): [User]
getAllPosts(): [Post]
}
type Mutation {
signUp(username: String!, password: String!): User
createPost(title: String, text: String): Post
}
Result
This schema would expect the following directory structure (which would also be the API structure, minus the extension "ext")
Each file exports a serverless function that would resolve the above schema definition.
*This file/api structure is supposed to mimic the resolver map
*ext could be js|ts|rs|py|go
*λ represents a separate serverless function
λ /Query/getUserById.ext
λ /Query/getAllUsers.ext
λ /Query/getAllPosts.ext
λ /Mutation/signUp.ext
λ /Mutation/createPost.ext
λ /User/username.ext
λ /User/posts.ext
λ /User/index.ext // this would handle the rest of the unspecified fields on type User
or λ /User.ext // if you want everything handled all in one serverless function
λ /Post/author.ext
λ /Post/index.ext // this would handle the rest of the unspecified fields on type Post
or λ /Post.ext if you want everything handled all in one serverless function
development
now dev
the graphql endpoint (gateway): http://localhost:3000/api
the graphiql ui: http://localhost:3000/api/graphiql
FAQ:
grif
is named after "Young Griff" from the books. It also almost sounds like graphql. ¯\(ツ)/¯