init
This commit is contained in:
67
backend/src/routes/todo.ts
Normal file
67
backend/src/routes/todo.ts
Normal file
@@ -0,0 +1,67 @@
|
||||
import { FastifyInstance, RouteShorthandOptions } from 'fastify'
|
||||
|
||||
import { addTodo, deleteTodo, getTodos, updateTodoStatus } from '../services/todo'
|
||||
import { TodoBody } from '../types/todo'
|
||||
|
||||
export const TodoRouter = (server: FastifyInstance, opts: RouteShorthandOptions, done: (error?: Error) => void) => {
|
||||
interface IdParam {
|
||||
id: string
|
||||
}
|
||||
interface StatusBody {
|
||||
status: boolean
|
||||
}
|
||||
|
||||
server.get('/v1/todos', async (request, reply) => {
|
||||
try {
|
||||
const todos = await getTodos()
|
||||
return reply.status(200).send({ todos })
|
||||
} catch (error) {
|
||||
server.log.error(`GET /v1/todos Error: ${error}`)
|
||||
return reply.status(500).send(`[Server Error]: ${error}`)
|
||||
}
|
||||
})
|
||||
|
||||
server.post<{ Body: TodoBody }>('/v1/todos', async (request, reply) => {
|
||||
try {
|
||||
const todoBody = request.body
|
||||
const todo = await addTodo(todoBody)
|
||||
return reply.status(201).send({ todo })
|
||||
} catch (error) {
|
||||
server.log.error(`POST /v1/todos Error: ${error}`)
|
||||
return reply.status(500).send(`[Server Error]: ${error}`)
|
||||
}
|
||||
})
|
||||
|
||||
server.put<{ Params: IdParam; Body: StatusBody }>('/v1/todos/:id', opts, async (request, reply) => {
|
||||
try {
|
||||
const id = request.params.id
|
||||
const status = request.body.status
|
||||
const todo = await updateTodoStatus(id, status)
|
||||
if (todo) {
|
||||
return reply.status(200).send({ todo })
|
||||
} else {
|
||||
return reply.status(404).send({ msg: `Not Found Todo:${id}` })
|
||||
}
|
||||
} catch (error) {
|
||||
server.log.error(`PUT /v1/todos/${request.params.id} Error: ${error}`)
|
||||
return reply.status(500).send(`[Server Error]: ${error}`)
|
||||
}
|
||||
})
|
||||
|
||||
server.delete<{ Params: IdParam }>('/v1/todos/:id', opts, async (request, reply) => {
|
||||
try {
|
||||
const id = request.params.id
|
||||
const todo = await deleteTodo(id)
|
||||
if (todo) {
|
||||
return reply.status(204).send()
|
||||
} else {
|
||||
return reply.status(404).send({ msg: `Not Found Todo:${id}` })
|
||||
}
|
||||
} catch (error) {
|
||||
server.log.error(`DELETE /v1/todos/${request.params.id} Error: ${error}`)
|
||||
return reply.status(500).send(`[Server Error]: ${error}`)
|
||||
}
|
||||
})
|
||||
|
||||
done()
|
||||
}
|
||||
Reference in New Issue
Block a user