From 31b7378234077c6dc51f18bbcc885d13ea7892dd Mon Sep 17 00:00:00 2001 From: Chris Anderson Date: Sun, 11 Feb 2024 08:31:18 -0600 Subject: [PATCH] Improvements to routing to allow for global routes --- apps/platform/src/api.ts | 22 +++++++++++++++------- apps/platform/src/config/controllers.ts | 5 ++++- docker/Dockerfile.render | 4 ++-- render.yaml | 5 +---- 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/apps/platform/src/api.ts b/apps/platform/src/api.ts index d0048229..59300c83 100644 --- a/apps/platform/src/api.ts +++ b/apps/platform/src/api.ts @@ -2,14 +2,14 @@ import Koa from 'koa' import koaBody from 'koa-body' import cors from '@koa/cors' import serve from 'koa-static' -import controllers, { register } from './config/controllers' +import controllers, { SubRouter, register } from './config/controllers' import { RequestError } from './core/errors' import { logger } from './config/logger' import Router from '@koa/router' export default class Api extends Koa { - router = new Router({ prefix: '/api' }) - controllers?: Record + router = new Router() + controllers?: Record constructor( public app: import('./app').default, @@ -71,9 +71,17 @@ export default class Api extends Koa { this.register(...Object.values(this.controllers)) } - register(...routers: Router[]) { - const root = register(this.router, ...routers) - this.use(root.routes()) - .use(root.allowedMethods()) + register(...routers: SubRouter[]) { + const apiRouter = new Router({ prefix: '/api' }) + for (const router of routers) { + router.global + ? register(this.router, router) + : register(apiRouter, router) + } + register(this.router, apiRouter) + this.use(this.router.routes()) + .use(this.router.allowedMethods()) + + console.log(this.router) } } diff --git a/apps/platform/src/config/controllers.ts b/apps/platform/src/config/controllers.ts index 09201a17..e7895bdd 100644 --- a/apps/platform/src/config/controllers.ts +++ b/apps/platform/src/config/controllers.ts @@ -31,9 +31,11 @@ export const register = (parent: Router, ...routers: Router[]) => { return parent } +export type SubRouter = Router & { global?: boolean } + export default (app: App) => { - const routers: Record = { + const routers: Record = { admin: adminRouter(), client: clientRouter(), public: publicRouter(), @@ -50,6 +52,7 @@ export default (app: App) => { } }) routers.ui = ui + routers.ui.global = true } return routers diff --git a/docker/Dockerfile.render b/docker/Dockerfile.render index 543776cf..58f0ac4a 100644 --- a/docker/Dockerfile.render +++ b/docker/Dockerfile.render @@ -20,8 +20,8 @@ WORKDIR /usr/src/app COPY --from=backend_compile /usr/src/app/apps/platform/package*.json ./ COPY --from=backend_compile /usr/src/app/apps/platform/build ./build COPY --from=backend_compile /usr/src/app/apps/platform/db ./db -COPY --from=backend_compile /usr/src/app/apps/platform/public ./build/public -COPY --from=frontend_compile /usr/src/app/apps/ui/build ./build/public +COPY --from=backend_compile /usr/src/app/apps/platform/public ./public +COPY --from=frontend_compile /usr/src/app/apps/ui/build ./public RUN npm ci --only=production # --------------> The production image diff --git a/render.yaml b/render.yaml index 9a5dbfad..6250b0c9 100644 --- a/render.yaml +++ b/render.yaml @@ -36,10 +36,7 @@ services: name: mysql envVarKey: MYSQL_PASSWORD - key: DB_PORT - fromService: - type: pserv - name: mysql - property: port + value: 3306 - key: DB_DATABASE fromService: type: pserv