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
Built Distribution
File details
Details for the file eve-arango-0.3.3.tar.gz
.
File metadata
- Download URL: eve-arango-0.3.3.tar.gz
- Upload date:
- Size: 6.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
ed9e1c596cfd846aa7d9053a84ed8e87a073cf463ca4a8dfd303dcdf59df78e1
|
|
MD5 |
ed5cf8df2856083ae39c2d4b90c0d26e
|
|
BLAKE2b-256 |
54747425e6bb4c5e6a889093e82fd770efef2cef5faef2d86db91ac09964ac8d
|
File details
Details for the file eve_arango-0.3.3-py3-none-any.whl
.
File metadata
- Download URL: eve_arango-0.3.3-py3-none-any.whl
- Upload date:
- Size: 6.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
b495f3b6334b029bc8fcb75f9515ffa9ecfccfcd3c4b62cf23148d94ca9af457
|
|
MD5 |
76166a9477644e53bd01a3c95c43b2f7
|
|
BLAKE2b-256 |
dcb7010b88ac790dabac312e438771eff5cc4055784b19fbd905203631a9b66a
|