import { Context } from 'koa'; import Router from 'koa-router'; import { } from 'koa-bodyparser'; import { StatusCodes } from 'http-status-codes'; import Strains from 'grow-db/lib/models/strains'; import { Strain } from 'grow-db/lib/schemas/strain'; const routerOpts: Router.IRouterOptions = { prefix: '/strains', }; const router: Router = new Router(routerOpts); router.get('/', async (ctx: Context) => { const data = await Strains.find({}).exec(); ctx.body = { data }; }); router.get('/:strain_id', async (ctx) => { const data = await Strains.findById(ctx.params.strain_id).populate('person').exec(); if (!data) { ctx.throw(StatusCodes.NOT_FOUND); } ctx.body = { data }; }); router.delete('/:strain_id', async (ctx: Context) => { const data = await Strains.findByIdAndDelete(ctx.params.strain_id).exec(); if (!data) { ctx.throw(StatusCodes.NOT_FOUND); } ctx.body = { success: true, data }; }); router.post('/', async (ctx: Context) => { const data = await Strains.create(ctx.request.body); data.save(); ctx.body = { success: true, data }; }); router.patch('/:strain_id', async (ctx) => { const data = await Strains.findByIdAndUpdate(ctx.params.strain_id, ctx.request.body, { lean: true, returnDocument: 'after' }); if (!data) { ctx.throw(StatusCodes.NOT_FOUND); } ctx.body = { success: true, data }; });