Eve ArangoDB data layer
Project description
Provides a data layer for ArangoDB to be used with Eve REST API framework.
Features
- CRUD operations for using ArangoDB as a document store
- Supports the same operations on edge documents for managing relations
- Filtering based on AQL syntax
- Pagination and sorting
Not supported (yet):
- Proper graph queries
- Versioning
- Projection
- Aggregation
- Etc.
Installation
$ pip install eve-arango
Usage
from eve import Eve from eve_arango import ArangoDB app = Eve(data=ArangoDB) app.run()
The following settings are processed:
# These are necessary for item lookups to work, # the regex is for the characters allowed in ArangoDB keys. ID_FIELD = '_key' ITEM_LOOKUP_FIELD = ID_FIELD ITEM_URL = 'regex("[\w\d\-:.@()+,=;$!*\'%]+")' # If a database named ARANGO_DB's value doesn't exist, # it will be created when the data layer is initialized. ARANGO_DB = 'database_name' ARANGO_HOST = 'localhost' ARANGO_PORT = 8529 # If the keys in DOMAIN do not exist as collection names, # they will be created when the data layer is initialized. # There's no need to add '_id', '_key' or '_rev' fields, # they are added to the schema automatically. # If you specifiy 'edge_collection': True as below, # an edge collection will be created if it does not exist. DOMAIN = { 'people': { 'schema': { 'name': { 'type': 'string' } } }, 'friends_with': { 'edge_collection': True }, # ... }
Filtering and sorting
eve-arango uses AQL syntax for filtering via the Eve where parameter. Mongo-style queries are not valid. Here are some examples of valid (url decoded) queries and their resulting AQL:
?where=foo == "bar" # Spaces are optional. # FILTER doc.foo == "bar" ?where=numIN[1,2,3],present!=null # Use , as simple separator between FILTER expressions. # FILTER doc.num IN [1,2,3] # FILTER doc.present != null ?where=a=="a"ANDb=="b"ORc=="c" # AND, OR, NOT can be used to combine expressions. # FILTER doc.a == "a" AND doc.b == "b" OR doc.c == "c"
Sorting uses the regular Eve syntax. An example is given below:
?sort=name,-age # SORT doc.name, doc.age DESC
Contributing
Contributions are welcome. Open an issue and send a pull request.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
eve-arango-0.3.3.tar.gz
(6.6 kB
view hashes)
Built Distribution
Close
Hashes for eve_arango-0.3.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b495f3b6334b029bc8fcb75f9515ffa9ecfccfcd3c4b62cf23148d94ca9af457 |
|
MD5 | 76166a9477644e53bd01a3c95c43b2f7 |
|
BLAKE2-256 | dcb7010b88ac790dabac312e438771eff5cc4055784b19fbd905203631a9b66a |