Source: controllers/collection/create.js

const models = require('@models');
const CRUD = require('@CRUD');
const routeModels = models.routes.collection.Create;
const Endpoint = require('@src/models/settings/Endpoint');
const Response = routeModels.response;

/**
 * Represents a controller endpoint for creating a document in a collection.
 * @name CollectionCreate
 * @type {Endpoint}
 */
module.exports = new Endpoint({
    method: 'PUT',
    routePath: '/collection/create',
    bodySchema: {
        collectionName: { type: String, required: true },
        data: { type: Object, required: true },
        options: { type: Object, default: {} }
    },
    controller: async (req, res) => {
        try {
            const body = req.body;
    
            // Creating document
            const doc = await CRUD.create(body.collectionName, body.data, body.options);
    
            if (!doc.errors) {
                return res.status(200).json(new Response(doc));
            } else {
                const error = new Error.Log(doc).append('apiResponse.collection.create_doc_errors', body.collectionName);
                return res.status(500).json(error.response());
            }
        } catch(err) {
            const error = new Error.Log(err).append('apiResponse.collection.create', req.body.collectionName);
            return res.status(500).json(error.response());
        }
    }
});