doog
v0.1.0
Published
Lightweight API builder
Downloads
37
Readme
Doog
What is Doog?
- A simple REST API builder built on top of Express.
- Allows customized models
- Currently supports MongoDB and memory databases
Usage
Database Config
In your project root, or a folder named config include a file named database.js or database.json. It should export an object with the format:
host: DATABASE_HOST,
database: DATABASE_NAME,
adapter: 'mongoose'Adding Models
Models list
In your project root, or a folder named config include a file named models.js or models.json. It should export an array with the format:
[{
modelName: YOUR_MODEL_NAME,
public: true/false
}]Public models will be exposed to the REST API.
Model definitions
In your project root, include a folder named models. For each model included in models.json, include a YOUR_MODEL_NAME.json with the format:
{
modelName: YOUR_MODEL_NAME,
properties: {
"PROPERTY_NAME" : {
"type": String/Number/Boolean/Date/Array/Object,
"default": DEFAULT_VALUE, (optional)
"required": true/false, (optional)
"hidden": true/false (optional)
}
}
}Model logic
If you wish to include custom model logic, include a YOUR_MODEL_NAME.js in the models folder. Export a function with the following format:
module.exports = function(YOUR_MODEL) {
}Model objects have the following methods:
hook(hookName, context)- Runs hooks before/after certain database operations. Supported hook names are 'before save', 'after save', 'before find', 'after find', 'before delete', 'after delete'.registerEndpoint(fn, options)- Adds a custom method and endpoint to the YOUR_MODEL class.addInstanceMethod(name, fn)- Adds a method to instances of YOUR_MODEL
Starting the app
In your main file, include doog as usual
const app = (require('doog'))();
Then start your app like any Express app.
app.listen(PORT);
