Skip to content

Commit 5bda9ff

Browse files
committed
[add] Base controller (fix #8)
[fix] some Render deployment errors
1 parent ab92388 commit 5bda9ff

File tree

5 files changed

+63
-14
lines changed

5 files changed

+63
-14
lines changed

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
"@koa/cors": "^5.0.0",
2222
"@koa/multer": "^3.0.2",
2323
"@koa/router": "^12.0.1",
24+
"@octokit/openapi-types": "^22.2.0",
2425
"class-transformer": "^0.5.1",
2526
"class-validator": "^0.14.1",
2627
"cross-env": "^7.0.3",
@@ -33,6 +34,7 @@
3334
"koa-mount": "^4.0.0",
3435
"koa2-swagger-ui": "^5.10.0",
3536
"koagger": "^0.3.0",
37+
"marked": "^14.0.0",
3638
"mobx-restful": "^1.0.0",
3739
"pg": "^8.12.0",
3840
"pg-connection-string": "^2.6.4",
@@ -44,7 +46,6 @@
4446
"web-utility": "^4.4.0"
4547
},
4648
"devDependencies": {
47-
"@octokit/openapi-types": "^22.2.0",
4849
"@types/jsonwebtoken": "^9.0.6",
4950
"@types/koa": "^2.15.0",
5051
"@types/koa-logger": "^3.1.5",
@@ -70,7 +71,7 @@
7071
"*.{md,json,yml,ts}": "prettier --write"
7172
},
7273
"scripts": {
73-
"prepare": "husky",
74+
"prepare": "husky || true",
7475
"dev": "ts-node-dev source/",
7576
"test": "lint-staged",
7677
"build": "rm -rf dist/ type/*.d.ts && tsc && mv dist/model/*.d.ts type/",

pnpm-lock.yaml

Lines changed: 13 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

source/controller/Base.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { marked } from 'marked';
2+
import {
3+
Get,
4+
HeaderParam,
5+
HttpCode,
6+
JsonController
7+
} from 'routing-controllers';
8+
9+
import { isProduct } from '../utility';
10+
11+
@JsonController()
12+
export class BaseController {
13+
static entryOf(host: string) {
14+
host = 'http://' + host;
15+
16+
return `
17+
- HTTP served at ${host}
18+
- Swagger API served at ${host}/docs/
19+
- Swagger API exposed at ${host}/docs/spec
20+
${isProduct ? '' : `- Mock API served at ${host}/mock/`}
21+
`;
22+
}
23+
24+
@Get('/_health')
25+
@HttpCode(200)
26+
getHealthStatus() {
27+
return '';
28+
}
29+
30+
@Get()
31+
getIndex(@HeaderParam('host') host: string) {
32+
return `<pre>${marked(BaseController.entryOf(host))}</pre>`;
33+
}
34+
}

source/controller/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ import type {} from 'koa2-swagger-ui';
22
import { createAPI } from 'koagger';
33

44
import { isProduct } from '../utility';
5+
import { BaseController } from './Base';
56
import { UserController } from './User';
67
import { OauthController } from './OAuth';
78
import { ActivityLogController } from './ActivityLog';
89
import { HackathonController } from './Hackathon';
910
import { StaffController } from './Staff';
1011
import { EnrollmentController } from './Enrollment';
1112

13+
export * from './Base';
1214
export * from './User';
1315
export * from './OAuth';
1416
export * from './ActivityLog';
@@ -24,6 +26,7 @@ export const { swagger, mocker, router } = createAPI({
2426
ActivityLogController,
2527
EnrollmentController,
2628
HackathonController,
27-
StaffController
29+
StaffController,
30+
BaseController
2831
]
2932
});

source/index.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,17 @@ import jwt from 'koa-jwt';
66
import KoaLogger from 'koa-logger';
77
import { useKoaServer } from 'routing-controllers';
88

9-
import { mocker, router, swagger, UserController } from './controller';
9+
import {
10+
BaseController,
11+
mocker,
12+
router,
13+
swagger,
14+
UserController
15+
} from './controller';
1016
import { dataSource } from './model';
1117
import { APP_SECRET, isProduct, PORT } from './utility';
1218

13-
const HOST = `http://localhost:${PORT}`,
19+
const HOST = `localhost:${PORT}`,
1420
app = new Koa()
1521
.use(KoaLogger())
1622
.use(swagger({ exposeSpec: true }))
@@ -29,12 +35,7 @@ console.time('Server boot');
2935

3036
dataSource.initialize().then(() =>
3137
app.listen(PORT, () => {
32-
console.log(`
33-
HTTP served at ${HOST}
34-
Swagger API served at ${HOST}/docs/
35-
Swagger API exposed at ${HOST}/docs/spec`);
36-
37-
if (!isProduct) console.log(`Mock API served at ${HOST}/mock/\n`);
38+
console.log(BaseController.entryOf(HOST));
3839

3940
console.timeEnd('Server boot');
4041
})

0 commit comments

Comments
 (0)