From e3a0a996feb0ed92333f24f4f5f321240688a16a Mon Sep 17 00:00:00 2001 From: Roberto Tonino Date: Sat, 3 Apr 2021 19:38:10 +0200 Subject: [PATCH] feat: added auto registering of api routes --- server/src/routes/api/delete/index.ts | 3 +++ server/src/routes/api/patch/index.ts | 3 +++ server/src/routes/api/post/index.ts | 3 +++ server/src/routes/api/register.ts | 35 +++++++++++++++++++++++++-- 4 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 server/src/routes/api/delete/index.ts create mode 100644 server/src/routes/api/patch/index.ts create mode 100644 server/src/routes/api/post/index.ts diff --git a/server/src/routes/api/delete/index.ts b/server/src/routes/api/delete/index.ts new file mode 100644 index 0000000..a24ea15 --- /dev/null +++ b/server/src/routes/api/delete/index.ts @@ -0,0 +1,3 @@ +import { ApiHandler } from '../../../types' + +export default [] as ApiHandler[] diff --git a/server/src/routes/api/patch/index.ts b/server/src/routes/api/patch/index.ts new file mode 100644 index 0000000..a24ea15 --- /dev/null +++ b/server/src/routes/api/patch/index.ts @@ -0,0 +1,3 @@ +import { ApiHandler } from '../../../types' + +export default [] as ApiHandler[] diff --git a/server/src/routes/api/post/index.ts b/server/src/routes/api/post/index.ts new file mode 100644 index 0000000..a24ea15 --- /dev/null +++ b/server/src/routes/api/post/index.ts @@ -0,0 +1,3 @@ +import { ApiHandler } from '../../../types' + +export default [] as ApiHandler[] diff --git a/server/src/routes/api/register.ts b/server/src/routes/api/register.ts index 47ed807..ee2cafd 100644 --- a/server/src/routes/api/register.ts +++ b/server/src/routes/api/register.ts @@ -1,10 +1,41 @@ import { Application } from 'express' +import { ApiHandler } from '../../types' import getEndpoints from './get' +import deleteEndpoints from './delete' +import postEndpoints from './post' +import patchEndpoints from './patch' const prependApiPath = (path:string) => `/api${path}` +interface Method { + method: string + endpoints: ApiHandler[] +} + +const methods: Method[] = [ + { + method: 'get', + endpoints: getEndpoints + }, + { + method: 'delete', + endpoints: deleteEndpoints + }, + { + method: 'post', + endpoints: postEndpoints + }, + { + method: 'patch', + endpoints: patchEndpoints + } +] + export function registerApis (app: Application) { - getEndpoints.forEach((getApi) => { - app.get(prependApiPath(getApi.path), getApi.handler) + methods.forEach(({ method, endpoints }) => { + endpoints.forEach((endpoint) => { + // @ts-ignore + app[method](prependApiPath(endpoint.path), endpoint.handler) + }) }) }