49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
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, <Strain>ctx.request.body, { lean: true, returnDocument: 'after' });
|
|
if (!data) {
|
|
ctx.throw(StatusCodes.NOT_FOUND);
|
|
}
|
|
ctx.body = { success: true, data };
|
|
}); |