feat: refactored server to use ts and improved folder structure
This commit is contained in:
3
server/src/routes/api/delete/index.ts
Normal file
3
server/src/routes/api/delete/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
import { ApiHandler } from '../../../types'
|
||||
|
||||
export default [] as ApiHandler[]
|
||||
3
server/src/routes/api/get/index.ts
Normal file
3
server/src/routes/api/get/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
import sample from './sample'
|
||||
|
||||
export default [sample]
|
||||
11
server/src/routes/api/get/sample.ts
Normal file
11
server/src/routes/api/get/sample.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { ApiHandler } from '../../../types'
|
||||
|
||||
const path: ApiHandler['path'] = '/sample'
|
||||
|
||||
const handler: ApiHandler['handler'] = (_, res) => {
|
||||
res.send('Mandi')
|
||||
}
|
||||
|
||||
const apiHandler: ApiHandler = { path, handler }
|
||||
|
||||
export default apiHandler
|
||||
3
server/src/routes/api/patch/index.ts
Normal file
3
server/src/routes/api/patch/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
import { ApiHandler } from '../../../types'
|
||||
|
||||
export default [] as ApiHandler[]
|
||||
3
server/src/routes/api/post/index.ts
Normal file
3
server/src/routes/api/post/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
import { ApiHandler } from '../../../types'
|
||||
|
||||
export default [] as ApiHandler[]
|
||||
42
server/src/routes/api/register.ts
Normal file
42
server/src/routes/api/register.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
import type { Application } from 'express'
|
||||
import type { 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) {
|
||||
methods.forEach(({ method, endpoints }) => {
|
||||
endpoints.forEach(endpoint => {
|
||||
// @ts-ignore
|
||||
app[method](prependApiPath(endpoint.path), endpoint.handler)
|
||||
})
|
||||
})
|
||||
}
|
||||
14
server/src/routes/index.ts
Normal file
14
server/src/routes/index.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import express from 'express'
|
||||
|
||||
const router = express.Router()
|
||||
|
||||
/**
|
||||
* GET home page
|
||||
*
|
||||
* @since 0.0.0
|
||||
*/
|
||||
router.get('/', (_, res) => {
|
||||
res.render('index', { title: 'Express' })
|
||||
})
|
||||
|
||||
export default router
|
||||
14
server/src/routes/users.ts
Normal file
14
server/src/routes/users.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import express from 'express'
|
||||
|
||||
const router = express.Router()
|
||||
|
||||
/**
|
||||
* GET users listing.
|
||||
*
|
||||
* @since 0.0.0
|
||||
*/
|
||||
router.get('/', (_, res) => {
|
||||
res.send('respond with a resource')
|
||||
})
|
||||
|
||||
export default router
|
||||
Reference in New Issue
Block a user