Files
Automata/packages/cli/src/decorators/Route.ts
कारतोफ्फेलस्क्रिप्ट™ 845f0f9d20 refactor(core): Switch over all user-management routes to use decorators (#5115)
2023-01-27 11:19:47 +01:00

20 lines
738 B
TypeScript

import { CONTROLLER_ROUTES } from './constants';
import type { Method, RouteMetadata } from './types';
/* eslint-disable @typescript-eslint/naming-convention */
const RouteFactory =
(method: Method) =>
(path: `/${string}`): MethodDecorator =>
(target, handlerName) => {
const controllerClass = target.constructor;
const routes = (Reflect.getMetadata(CONTROLLER_ROUTES, controllerClass) ??
[]) as RouteMetadata[];
routes.push({ method, path, handlerName: String(handlerName) });
Reflect.defineMetadata(CONTROLLER_ROUTES, routes, controllerClass);
};
export const Get = RouteFactory('get');
export const Post = RouteFactory('post');
export const Patch = RouteFactory('patch');
export const Delete = RouteFactory('delete');