Example project how to work with MongoDB using oatpp-mongo mondule. Project is a web-service with basic CRUD and Swagger-UI. Dockerfile and docker-compose.yaml files included.
More About Oat++:
- oatpp
- oatpp-swagger
- oatpp-mongo
- mongocxx - Temporary dependency. Until the oatpp-mongo driver will be ready-to-use*
|- CMakeLists.txt // projects CMakeLists.txt
|- src/
| |
| |- controller/ // Folder containing Controller where all endpoints are declared
| |- db/ // Database class is here
| |- dto/ // DTOs are declared here
| |- App.cpp // main() is here
| |- AppComponent.hpp // Service configuration is loaded here
| |- SwaggerComponent.hpp // Configuration for swagger-ui
|
|- utility/install-oatpp-modules.sh // utility script to install required oatpp-modules.
|- Dockerfile // Dockerfile
|- docker-compose.yaml // Docker-compose with this service and postgresql
Requires
-
mongocxx installed. To install mongocxx:
- On Mac
$ brew install mongo-cxx-driver
- On Linux - See Installing mongocxx on Linux section.
- On Mac
-
oatpp
,oatpp-swagger
,oatpp-mongo
modules installed. You may runutility/install-oatpp-modules.sh
script to install required oatpp modules.
$ mkdir build && cd build
$ cmake ..
$ make
$ ./example-mongodb # - run application.
To run the web-service only:
$ docker build -t example-mongodb .
$ docker run -p 8000:8000 -e DEMO_MONGO_CONN_STR='mongodb://localhost/UserDB' -t example-mongodb
To run both web-service and mongodb:
$ docker-compose up
Go to http://localhost:8000/swagger/ui to try endpoints.
Installing mongocxx on Linux is an unclear and painful process. See ubuntu-cmake-mongocxx/Dockerfile for instructions that worked for us.