UNPKG

koa-mongo-router

Version:
86 lines (85 loc) 5.58 kB
Object.defineProperty(exports, "__esModule", { value: true }); exports.getDatabaseRouter = exports.getDatabasesRouter = void 0; const BodyParser = require("koa-bodyparser"); const Router = require("koa-router"); const database_routes_1 = require("./database-routes"); const bodyParser = BodyParser(); function getDatabasesRouter(options) { if (options == undefined) { options = {}; } const router = new Router(); async function permissionCheck(ctx, next) { if (options.permissionCheck != undefined) { await options.permissionCheck(ctx, next, ctx.state.database, ctx.state.collection); } else { await next(); } } return router .param('database', async (database, ctx, next) => { ctx.state = Object.assign(Object.assign({}, ctx.state), ctx.params); await next(); }) .get('/', permissionCheck, database_routes_1.getDatabasesRoute(options)) .get('/:database', permissionCheck, database_routes_1.getDatabaseCollectionsRoute(options)) .delete('/:database', permissionCheck, database_routes_1.deleteDatabaseRoute(options)) .get('/:database/:collection', permissionCheck, database_routes_1.getCollectionItemsRoute(options)) .put('/:database/:collection', permissionCheck, database_routes_1.putCollectionItemsRoute(options)) .post('/:database/:collection', permissionCheck, bodyParser, database_routes_1.postCollectionItemsRoute(options)) .patch('/:database/:collection', permissionCheck, bodyParser, database_routes_1.patchCollectionItemsRoute(options)) .delete('/:database/:collection', permissionCheck, database_routes_1.deleteCollectionItemsRoute(options)) .get('/:database/:collection/schema', permissionCheck, database_routes_1.getCollectionSchemaRoute(options)) .put('/:database/:collection/schema', permissionCheck, bodyParser, database_routes_1.putCollectionSchemaRoute(options)) .delete('/:database/:collection/schema', permissionCheck, database_routes_1.deleteCollectionSchemaRoute(options)) .get('/:database/:collection/indices', permissionCheck, database_routes_1.getCollectionIndicesRoute(options)) .post('/:database/:collection/indices', permissionCheck, bodyParser, database_routes_1.postCollectionIndicesRoute(options)) .delete('/:database/:collection/indices/:id', permissionCheck, database_routes_1.deleteCollectionIndexRoute(options)) .get('/:database/:collection/:id', permissionCheck, database_routes_1.getCollectionItemRoute(options)) .put('/:database/:collection/:id', permissionCheck, bodyParser, database_routes_1.putCollectionItemRoute(options)) .patch('/:database/:collection/:id', permissionCheck, bodyParser, database_routes_1.patchCollectionItemRoute(options)) .delete('/:database/:collection/:id', permissionCheck, database_routes_1.deleteCollectionItemRoute(options)); } exports.getDatabasesRouter = getDatabasesRouter; function getDatabaseRouter(databaseName, options) { if (options == undefined) { options = {}; } const router = new Router(); async function permissionCheck(ctx, next) { if (options.permissionCheck != undefined) { await options.permissionCheck(ctx, next, ctx.state.database, ctx.state.collection); } else { await next(); } } return router .use(async (ctx, next) => { ctx.state.database = databaseName; await next(); }) .get('/', permissionCheck, database_routes_1.getDatabaseCollectionsRoute(options)) .delete('/', permissionCheck, database_routes_1.deleteDatabaseRoute(options)) .param('collection', async (collection, ctx, next) => { ctx.state = Object.assign(Object.assign({}, ctx.state), ctx.params); await next(); }) .get('/:collection', permissionCheck, database_routes_1.getCollectionItemsRoute(options)) .put('/:collection', permissionCheck, database_routes_1.putCollectionItemsRoute(options)) .post('/:collection', permissionCheck, bodyParser, database_routes_1.postCollectionItemsRoute(options)) .patch('/:collection', permissionCheck, bodyParser, database_routes_1.patchCollectionItemsRoute(options)) .delete('/:collection', permissionCheck, database_routes_1.deleteCollectionItemsRoute(options)) .get('/:collection/schema', permissionCheck, database_routes_1.getCollectionSchemaRoute(options)) .put('/:collection/schema', permissionCheck, bodyParser, database_routes_1.putCollectionSchemaRoute(options)) .delete('/:collection/schema', permissionCheck, database_routes_1.deleteCollectionSchemaRoute(options)) .get('/:collection/indices', permissionCheck, database_routes_1.getCollectionIndicesRoute(options)) .post('/:collection/indices', permissionCheck, bodyParser, database_routes_1.postCollectionIndicesRoute(options)) .delete('/:collection/indices/:id', permissionCheck, database_routes_1.deleteCollectionIndexRoute(options)) .get('/:collection/:id', permissionCheck, database_routes_1.getCollectionItemRoute(options)) .put('/:collection/:id', permissionCheck, bodyParser, database_routes_1.putCollectionItemRoute(options)) .patch('/:collection/:id', permissionCheck, bodyParser, database_routes_1.patchCollectionItemRoute(options)) .delete('/:collection/:id', permissionCheck, database_routes_1.deleteCollectionItemRoute(options)); } exports.getDatabaseRouter = getDatabaseRouter;