A small server serving MongoDB Atlas Data API for test usage. Please do not use in production, skips everything else except things we might need in the CI. Super unsafe, probably destroys everything.
```console
Usage: local-atlas-data-api [OPTIONS] --mongodb-url
Options:
--hostname
-h, --help Print help
-V, --version Print version
```
To connect to a MongoDB instance, pass the URL as a parameter to the API:
```console
local-atlas-data-api --mongodb-url "mongodb://grafbase:grafbase@localhost:27018" ```
This connects to the MongoDB defined in the provided docker-compose file. When the service is running (the default address is http:/127.0.0.1:3000), you can start sending requests to it.
```console
curl --request POST \ 'http://127.0.0.1:3000/app/data-test/endpoint/data/v1/action/findOne' \ --header 'apiKey: TEST' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --data-raw '{ "dataSource": "grafbase", "database": "test", "collection": "test", "projection": { "id": 1, "foo": 1 }, "filter": { "id": { "$oid": "64d50a0b967f134bfb3fb620" } } }' ```
```console
curl --request POST \ 'http://127.0.0.1:3000/app/data-test/endpoint/data/v1/action/find' \ --header 'apiKey: TEST' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --data-raw '{ "dataSource": "grafbase", "database": "test", "collection": "test", "projection": { "_id": 1, "foo": 1 }, "filter": { "foo": { "$eq": "lol" } } }' ```
```console
curl --request POST \ 'http://127.0.0.1:3000/app/data-test/endpoint/data/v1/action/insertOne' \ --header 'apiKey: TEST' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --data-raw '{ "dataSource": "grafbase", "database": "test", "collection": "test", "document": { "foo": "lol" } }' ```
```console
curl --request POST \ 'http://127.0.0.1:3000/app/data-test/endpoint/data/v1/action/insertMany' \ --header 'apiKey: TEST' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --data-raw '{ "dataSource": "grafbase", "database": "test", "collection": "test", "documents": [{ "foo": "bar" }, { "foo": "lolbar" }] }' ```
```console
curl --request POST \ 'http://127.0.0.1:3000/app/data-test/endpoint/data/v1/action/updateOne' \ --header 'apiKey: TEST' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --data-raw '{ "dataSource": "grafbase", "database": "test", "collection": "test", "filter": { "_id": { "$eq": { "$oid": "64d5dda2154ceb5e6cfdf94e" } } }, "update": { "$set": { "foo": "musti" } } }' ```
```console
curl --request POST \ 'http://127.0.0.1:3000/app/data-test/endpoint/data/v1/action/updateMany' \ --header 'apiKey: TEST' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --data-raw '{ "dataSource": "grafbase", "database": "test", "collection": "test", "filter": { "foo": { "$eq": "lol" } }, "update": { "$set": { "foo": "rofl" } } }' ```
console
curl --request POST \
'http://127.0.0.1:3000/app/data-test/endpoint/data/v1/action/deleteOne' \
--header 'apiKey: TEST' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data-raw '{
"dataSource": "grafbase",
"database": "test",
"collection": "test",
"filter": { "_id": { "$oid": "64d50a0b967f134bfb3fb620" } }
}'
console
curl --request POST \
'http://127.0.0.1:3000/app/data-test/endpoint/data/v1/action/deleteMany' \
--header 'apiKey: TEST' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data-raw '{
"dataSource": "grafbase",
"database": "test",
"collection": "test",
"filter": { "foo": { "$eq": "rofl" } }
}'
We don't really need this (yet). It's implemented in this service, but not tested.