{ "info": { "author": "Tommaso De Rossi", "author_email": "daer.tommy@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Information Technology", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "

\n \n

\n

mongoke

\n

Instantly serve your MongoDb database via graphql

\n\n[**Docs**](./docs/index.md) \u2022 [**Examples**](https://github.com/remorses/mongoke-examples)\n\n## Features\n\n* **Powerful Queries**: Pagination, filtering, relation, relay-style connections built-in and generated in a bunch of seconds\n* **Works with existing databases**: Point it to an existing MongoDb database to instantly get a ready-to-use GraphQL API\n* **Authorization via Jwt**: Every collection can be protected based on jwt payload and document fields\n* **Horizontally Scalable**: The service is completely stateless and can be replicated on demand\n* **Apollo Federation**: The service can be easily glued with other graphql servers to handle writes and more complicated logic.\n* **Resilient Idempotent Configuration**: One YAML Configuration as the only source of truth, relations, authorization and types in one file\n\n\n## Quickstart:\n\n### Docker compose\n\nThe fastest way to try Mongoke is via docker-compose.\n\n### 1. Write the configuration to describe the database schema and relations\nThe configuration is written in yaml and uses the [`skema`](https://github.com/remorses/skema) language to describe the database shape, read more about skema [here](https://github.com/remorses/skema)\n```yml\n# ./mongoke.yml\nskema: |\n User:\n _id: ObjectId\n username: Str\n email: Str\n BlogPost:\n _id: ObjectId\n author_id: ObjectId\n title: Str\n content: Str\n\ntypes:\n User:\n collection: users\n BlogPost:\n collection: posts\n\nrelations:\n - field: posts\n from: User\n to: BlogPost\n relation_type: to_many\n where:\n author_id: ${{ parent['_id'] }}\n```\n### 2. Run the `mongoke` image with the above configuration\nTo start the container mount copy paste the following content in a `docker-compose.yml` file, then execute `docker-compose up`.\n```yml\n# docker-compose.yml\nversion: '3'\n\nservices:\n mongoke:\n ports:\n - 4000:80\n image: mongoke/mongoke\n environment: \n DB_URL: mongodb://mongo/db\n volumes: \n - ./mongoke.yml:/conf.yml \n mongo:\n image: mongo\n logging: \n driver: none\n```\n### 3. Query the generated service via graphql or go to [http://localhost:4000/graphiql](http://localhost:4000/graphiql) to open graphiql\n```graphql\n{\n user(where: {username: {eq: \"Mike\"}}) {\n _id\n username\n email\n posts {\n nodes {\n title\n }\n }\n }\n\n blogPosts(first: 10, after: \"Post 1\", cursorField: title) {\n nodes {\n title\n content\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n}\n```\n\n------\n\n## Tutorials\nPlease help the project making new tutorials and submit a issue to list it here!\n\n------\n\n## Todo:\n- ~~publish the docker image (after tartiflette devs fix extend type issue)~~\n- ~~resolve issue connection nodes must all have an _id field because it is default cursor field~~\n- integration tests for all the resolver types\n- integration tests for the relations\n- ~~add pipelines feature to all resolvers (adding a custom find and find_one made with aggregate)~~\n- ~~add the $ to the where input fields inside resolvers (in must be $in, ...)~~\n- ~~remove strip_nones after asserting v1 works~~\n\nLow priority\n- ~~`required` config field, add verify the jwt with the secret if provided~~\n- ~~add schema validation to the configuration~~\n- subscriptions\n- ~~add `edges` to make connection type be relay compliant~~\n- better performance of connection_resolver removing the $skip and $count\n- add a dataloader for single connections", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/remorses/mongoke", "keywords": "TODO", "license": "Apache Software License 2.0", "maintainer": "", "maintainer_email": "", "name": "mongoke", "package_url": "https://pypi.org/project/mongoke/", "platform": "", "project_url": "https://pypi.org/project/mongoke/", "project_urls": { "Homepage": "https://github.com/remorses/mongoke" }, "release_url": "https://pypi.org/project/mongoke/0.0.19/", "requires_dist": null, "requires_python": "", "summary": "mongoke", "version": "0.0.19" }, "last_serial": 5999663, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "98b0e44e642fbe6b5d1d7eed52c3a17f", "sha256": "9ae96c2831de6a1a0a3b94cc03da7f6a88c1cda3069c5a9fb129510297baa97c" }, "downloads": -1, "filename": "mongoke-0.0.1.tar.gz", "has_sig": false, "md5_digest": "98b0e44e642fbe6b5d1d7eed52c3a17f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14146, "upload_time": "2019-10-18T12:07:11", "url": "https://files.pythonhosted.org/packages/87/27/a7983fbbbbafd72f0bdc50126954725359f1e10cac443201ee95e7583ddf/mongoke-0.0.1.tar.gz" } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "c0eb9a4a88d9f0c4fbb842adb544fce1", "sha256": "1f3ba50a8dcb4d55c7502c7a54fa7b45f4441dd7e5d75e8df9f376277a0d6f5b" }, "downloads": -1, "filename": "mongoke-0.0.10.tar.gz", "has_sig": false, "md5_digest": "c0eb9a4a88d9f0c4fbb842adb544fce1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14527, "upload_time": "2019-10-18T17:45:43", "url": "https://files.pythonhosted.org/packages/80/9a/2dfd8d36bbad4096d607f67757052423461471bd32b0d7ccdc5a3f51850f/mongoke-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "e6eb6252fd1b84486b335c5cecb8ece5", "sha256": "2786cc8f6766350d49dc75abcdeae7bb12ceb80c793642b35e5c5d635ec228a1" }, "downloads": -1, "filename": "mongoke-0.0.11.tar.gz", "has_sig": false, "md5_digest": "e6eb6252fd1b84486b335c5cecb8ece5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14554, "upload_time": "2019-10-18T18:01:54", "url": "https://files.pythonhosted.org/packages/e5/3d/18a0075c6737ce4355df63ca0fbd79ba77fc058676316ad5b154d349a7c4/mongoke-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "fe01df610933e23b5ed33fe4db29f4aa", "sha256": "179720b3bc1b52030d405e421933282fa6c0fb9cea172a8cff677f9742546817" }, "downloads": -1, "filename": "mongoke-0.0.12.tar.gz", "has_sig": false, "md5_digest": "fe01df610933e23b5ed33fe4db29f4aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14624, "upload_time": "2019-10-18T18:04:20", "url": "https://files.pythonhosted.org/packages/34/6c/fdb5ae447d2d54a9c55ac503e6f3fe0139301f7af609b4e26e8ecafb74b6/mongoke-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "24617afc7d7baf9377abd363da9f4387", "sha256": "ff4f3edda609ef678e994be7759a64920ac058b80f2400a784020e5c96d92d43" }, "downloads": -1, "filename": "mongoke-0.0.13.tar.gz", "has_sig": false, "md5_digest": "24617afc7d7baf9377abd363da9f4387", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14642, "upload_time": "2019-10-18T18:19:24", "url": "https://files.pythonhosted.org/packages/e5/1f/de13b827c58ff930973e1761021b3148149a3b657d7af8cd6ad7e8e91a03/mongoke-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "f3c21ffa2a717a3c5f6cf3447044b76b", "sha256": "708727dc4fda917e06573f1b8594cd37f54dde6b8a8b425f2bc9fd494baf7d03" }, "downloads": -1, "filename": "mongoke-0.0.14.tar.gz", "has_sig": false, "md5_digest": "f3c21ffa2a717a3c5f6cf3447044b76b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14751, "upload_time": "2019-10-18T19:52:38", "url": "https://files.pythonhosted.org/packages/d5/d1/92b6b309017f56e24bdbc1cbe38d07753dc9a7044c07ecdd52add0d74c69/mongoke-0.0.14.tar.gz" } ], "0.0.16": [ { "comment_text": "", "digests": { "md5": "53d72501657445f5d35e232a63d9f5bd", "sha256": "0813be0f413a2849c5171827bd3b466a282a5dabe4a777a808f8e282fd64822d" }, "downloads": -1, "filename": "mongoke-0.0.16.tar.gz", "has_sig": false, "md5_digest": "53d72501657445f5d35e232a63d9f5bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14822, "upload_time": "2019-10-19T11:31:27", "url": "https://files.pythonhosted.org/packages/36/c0/9fb267d4fd267d95a3e181859345b64594874d50073fd163ca0638cb71e1/mongoke-0.0.16.tar.gz" } ], "0.0.17": [ { "comment_text": "", "digests": { "md5": "ca269a30255ee03c3bf48e375d5132f5", "sha256": "feb65488cb78ccf70a9d33d2c70ad117ff1d8ca803351eeb1edf69b34f64951b" }, "downloads": -1, "filename": "mongoke-0.0.17.tar.gz", "has_sig": false, "md5_digest": "ca269a30255ee03c3bf48e375d5132f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14845, "upload_time": "2019-10-19T11:38:52", "url": "https://files.pythonhosted.org/packages/66/bc/08627844c097d34f7262cfb8e353df706ac4b7e9c922e28e271488fe1267/mongoke-0.0.17.tar.gz" } ], "0.0.18": [ { "comment_text": "", "digests": { "md5": "53bac43fb0abbd2309ebdd9e86f20e96", "sha256": "e39dc38511f2cd9de62b3ad8424bf0ca60cf3206167f3ea08eb41424925fa770" }, "downloads": -1, "filename": "mongoke-0.0.18.tar.gz", "has_sig": false, "md5_digest": "53bac43fb0abbd2309ebdd9e86f20e96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14843, "upload_time": "2019-10-19T11:40:54", "url": "https://files.pythonhosted.org/packages/b0/fd/c7a24ea5bd2da7c2199ae4d6becf27be9de8abb5e0463766c5c102875072/mongoke-0.0.18.tar.gz" } ], "0.0.19": [ { "comment_text": "", "digests": { "md5": "59e90b5755dde2fe467001f1b2ee9af4", "sha256": "636ab370862c0bf58825b95dfe390b2f18d8d5b68671bc846667bb168da91120" }, "downloads": -1, "filename": "mongoke-0.0.19.tar.gz", "has_sig": false, "md5_digest": "59e90b5755dde2fe467001f1b2ee9af4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14845, "upload_time": "2019-10-19T11:43:50", "url": "https://files.pythonhosted.org/packages/10/b2/7928dfd546abea7c3d7109d966ed471fb7cb3adb8a5f03b48b58922f7d29/mongoke-0.0.19.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "07df83a9f4f1fc90b1afde0a9c3aac4f", "sha256": "432930c448226ccd4e6e3a9109a13cc82e43f45ef60ac1acb996b2b1a97db70d" }, "downloads": -1, "filename": "mongoke-0.0.2.tar.gz", "has_sig": false, "md5_digest": "07df83a9f4f1fc90b1afde0a9c3aac4f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14147, "upload_time": "2019-10-18T12:14:40", "url": "https://files.pythonhosted.org/packages/01/28/2c82acd0c5e36571083bab446989ee7a6db0d29f85283e129c2d4fbf5c67/mongoke-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "26e7da0c683c655723a166ec9702b568", "sha256": "b014d6c932af26b96569081b5bbeef35433939b5770ca7a9106bb3a5e8e3bcc8" }, "downloads": -1, "filename": "mongoke-0.0.3.tar.gz", "has_sig": false, "md5_digest": "26e7da0c683c655723a166ec9702b568", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14074, "upload_time": "2019-10-18T12:26:05", "url": "https://files.pythonhosted.org/packages/e7/4b/a35c2ad9991f7b92279da2119b37695da0acde29abb9568f56a592b42cae/mongoke-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "6f93203069155b0c234a3489a5d40a4e", "sha256": "5de02857914383dadf9f3e163df6a1c56f51d9aca474bc3ebd3f24d5efddf66e" }, "downloads": -1, "filename": "mongoke-0.0.4.tar.gz", "has_sig": false, "md5_digest": "6f93203069155b0c234a3489a5d40a4e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14079, "upload_time": "2019-10-18T15:43:27", "url": "https://files.pythonhosted.org/packages/9a/44/d83e495b80474a5582153cb924cabc10d4965b9ebb84e745fa0d70b009f9/mongoke-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "1e6cc3291f223561fcbdeb55d6dcec81", "sha256": "8288cdb0868cfea6c23a31ab356362d560192edd07fced05529b0e57aa6dcd1c" }, "downloads": -1, "filename": "mongoke-0.0.5.tar.gz", "has_sig": false, "md5_digest": "1e6cc3291f223561fcbdeb55d6dcec81", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15070, "upload_time": "2019-10-18T16:18:30", "url": "https://files.pythonhosted.org/packages/a9/be/f1f998151f1426057147b8e224f07ebc55f21c95373643ae042eb6079735/mongoke-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "1aa013cff2084202112aa05c08a0d509", "sha256": "6b8df9a09927cc629ba746f0f4b76114f64a6091d53d6da91e30dc1cd97f0a03" }, "downloads": -1, "filename": "mongoke-0.0.6.tar.gz", "has_sig": false, "md5_digest": "1aa013cff2084202112aa05c08a0d509", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15194, "upload_time": "2019-10-18T16:43:24", "url": "https://files.pythonhosted.org/packages/1e/4e/2e828829452df27d671ed7f3087502ebf6df58fbd9e0dd829cd9498fa271/mongoke-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "8bc62c2556bc5f50f2a366da15c3f407", "sha256": "67ef1f4c55ecbce9a24385c47cfbe064bfcfea7b558416a9e48d428d424778ce" }, "downloads": -1, "filename": "mongoke-0.0.7.tar.gz", "has_sig": false, "md5_digest": "8bc62c2556bc5f50f2a366da15c3f407", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14492, "upload_time": "2019-10-18T16:58:28", "url": "https://files.pythonhosted.org/packages/7c/2c/b9287b6d38a3ef30af5580c42d15552702ee22223362e565bda0fb43dc70/mongoke-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "a2067951ce839e797c7f8ee8a7eee17e", "sha256": "7f5eb24f3729a084fbcb064a5ce498018884df088cd8e5f90aac622d750e8da0" }, "downloads": -1, "filename": "mongoke-0.0.8.tar.gz", "has_sig": false, "md5_digest": "a2067951ce839e797c7f8ee8a7eee17e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14499, "upload_time": "2019-10-18T17:00:39", "url": "https://files.pythonhosted.org/packages/5f/8b/0048ddc03e1d7fd1e1e9ee82a3f8a1d7c23f8d4cb57c6d142709779aebaa/mongoke-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "d46cda8ee45aa7eeed3e2deb62ddb413", "sha256": "55ca05000e922f59527bcde5e4f2134ae92802a816f5b5c2c4cefbec52f3ba02" }, "downloads": -1, "filename": "mongoke-0.0.9.tar.gz", "has_sig": false, "md5_digest": "d46cda8ee45aa7eeed3e2deb62ddb413", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14526, "upload_time": "2019-10-18T17:09:04", "url": "https://files.pythonhosted.org/packages/0b/a3/1806d65e171f97a1ed0f6e7a76eea864c9ed597abf64b921199f4b2d3218/mongoke-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "59e90b5755dde2fe467001f1b2ee9af4", "sha256": "636ab370862c0bf58825b95dfe390b2f18d8d5b68671bc846667bb168da91120" }, "downloads": -1, "filename": "mongoke-0.0.19.tar.gz", "has_sig": false, "md5_digest": "59e90b5755dde2fe467001f1b2ee9af4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14845, "upload_time": "2019-10-19T11:43:50", "url": "https://files.pythonhosted.org/packages/10/b2/7928dfd546abea7c3d7109d966ed471fb7cb3adb8a5f03b48b58922f7d29/mongoke-0.0.19.tar.gz" } ] }