feat: add backend

This commit is contained in:
2025-08-28 23:25:59 +08:00
parent 2edf8753a7
commit 47f36cd625
29 changed files with 1489 additions and 253 deletions

View File

@@ -0,0 +1,10 @@
import { Router } from './router.ts';
import { ResponseTime } from './responseTime.ts';
import type Koa from 'koa';
export function registerMiddlewares(app: Koa) {
const router = new Router();
const responseTime = new ResponseTime();
responseTime.apply(app);
router.apply(app);
}

View File

@@ -0,0 +1,13 @@
import type { Middleware } from './types.ts';
import type Koa from 'koa';
export class ResponseTime implements Middleware {
apply(app: Koa): void {
app.use(async (ctx, next) => {
const start = Date.now();
await next();
const ms = Date.now() - start;
ctx.set('X-Response-Time', `${ms}ms`);
});
}
}

View File

@@ -0,0 +1,19 @@
import KoaRouter from '@koa/router';
import type Koa from 'koa';
import type { Middleware } from './types.ts';
import * as application from '../controllers/application.ts';
export class Router implements Middleware {
private router: KoaRouter;
constructor() {
this.router = new KoaRouter({
prefix: '/api',
});
this.router.get('/application/list', application.list);
}
apply(app: Koa) {
app.use(this.router.routes());
app.use(this.router.allowedMethods());
}
}

View File

@@ -0,0 +1,5 @@
import type Koa from 'koa';
export abstract class Middleware {
abstract apply(app: Koa, options?: unknown): void;
}