generator-kube-microservice-node
Version:
A k8s micro-service generator with deployment, service, Dockerfile. Built with express/mongo/redis
71 lines (61 loc) • 2.72 kB
text/typescript
import { <%= interfaceName %> } from '../models/<%= interfaceName %>';
import { OK, NO_CONTENT, CREATED } from 'http-status-codes';
import { Response, Request } from 'express';
import { ValidationChain } from 'express-validator';
import { inject } from 'inversify';
import {
controller,
httpGet,
httpPost,
httpPut,
httpDelete,
response,
request,
requestParam,
requestBody,
} from 'inversify-express-utils';
import <%= serviceName %> from '../services/<%= serviceName %>';
import REFERENCES from '../config/inversify.references';
import EntityNotFoundException from '../shared/exceptions/EntityNotFoundException';
import withException from '../shared/decorators/withException';
import { validateRequest } from '../shared/utils';
const _createEdit<%= entityName %>Validator: ValidationChain[] = [];
('/v1/<%= entityNameLowerCase %>')
export default class <%= controllerName %> {
(REFERENCES.<%= serviceName %>) private <%= serviceInstanceName %>: <%= serviceName %>;
('/')
async get<%= entityName %>s(res: Response) {
() const result = await this.<%= serviceInstanceName %>.find({});
res.status(OK).send(result);
}
('/:id')
async get<%= entityName %>( () res: Response, ('id') id: string) {
const result = await this.<%= serviceInstanceName %>.findById({ id });
if (!result) {
throw new EntityNotFoundException({ id });
}
res.status(OK).send(result);
}
('/:id')
async delete<%= entityName %>( () res: Response, ('id') id: string) {
await this.<%= serviceInstanceName %>.delete({ id, throwErrors: true });
res.status(NO_CONTENT).send();
}
('/', ..._createEdit<%= entityName %>Validator)
async post<%= entityName %>( () req: Request, () res: Response, () <%= entityNameLowerCase %>: <%= interfaceName %>) {
validateRequest(req);
const new<%= entityName %> = await this.<%= serviceInstanceName %>.insert({ entity: <%= entityNameLowerCase %>, throwErrors: true });
res.status(CREATED).send(new<%= entityName %>);
}
('/', ..._createEdit<%= entityName %>Validator)
async put<%= entityName %>( () req: Request, () res: Response, () <%= entityNameLowerCase %>: <%= interfaceName %>) {
validateRequest(req);
const updated<%= entityName %> = await this.<%= serviceInstanceName %>.update({ entity: <%= entityNameLowerCase %>, conditions: { _id: <%= entityNameLowerCase %>._id }, throwErrors: true });
res.status(CREATED).send(updated<%= entityName %>);
}
}