This repository has been archived on 2023-05-17. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
auth/src/controllers/strains.ts
2023-04-18 19:35:21 -04:00

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 };
});