mongoke
Instantly serve your MongoDb database via graphql
Features
- Powerful Queries: Pagination, filtering, relation, relay-style connections built-in and generated in a bunch of seconds
- Works with existing databases: Point it to an existing MongoDb database to instantly get a ready-to-use GraphQL API
- Authorization via Jwt: Every collection can be protected based on jwt payload and document fields
- Horizontally Scalable: The service is completely stateless and can be replicated on demand
- Apollo Federation: The service can be easily glued with other graphql servers to handle writes and more complicated logic.
- Resilient Idempotent Configuration: One YAML Configuration as the only source of truth, relations, authorization and types in one file
Quickstart:
Using Docker compose
The fastest way to try Mongoke is via docker-compose.
1. Write the configuration to describe the database schema and relations
The ObjectId scalar is already defined by default, it is converted to string when sent as json
# ./mongoke.yml
schema: |
type User {
_id: ObjectId
username: String
email: String
}
type BlogPost {
_id: ObjectId
author_id: ObjectId
title: String
content: String
}
types:
User:
collection: users
BlogPost:
collection: posts
relations:
- field: posts
from: User
to: BlogPost
relation_type: to_many
where:
author_id: ${{ parent['_id'] }}
2. Run the mongoke image with the above configuration
To start the container mount copy paste the following content in a docker-compose.yml file, then execute docker-compose up.
# docker-compose.yml
version: '3'
services:
mongoke:
ports:
- 4000:80
image: mongoke/mongoke
environment:
DB_URL: mongodb://mongo/db
volumes:
- ./mongoke.yml:/conf.yml
mongo:
image: mongo
3. Query the generated service via graphql or go to http://localhost:4000/graphiql to open graphiql
{
User(where: { username: { eq: "Mike" } }) {
_id
username
email
posts {
nodes {
title
}
}
}
BlogPostNodes(first: 10, after: "Post 1", cursorField: title) {
nodes {
title
content
}
pageInfo {
endCursor
hasNextPage
}
}
}
Tutorials
Check out the /examples directory in this repo
Please help the project making new tutorials and submit a issue to list it here!
Metadata
Release files for mongoke 1.4.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| mongoke-1.4.3.tar.gz | 16.9 kB | Without provenance | Details |
Release files / mongoke-1.4.3.tar.gz
| Download URL | mongoke-1.4.3.tar.gz |
|---|---|
| Size | 16.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2a0917c05846aea049f61d261690c374978b4bb81f6d12319c6d70cad33988f1
|
|
BLAKE2b-256 checksum How to use checksums |
4d388912543dab4bcc5e41f29e7e68b0ac4b32579e038f9a30223e2a2eadafb9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8
|
Security for mongoke 1.4.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.