@@ -4,10 +4,10 @@ import { StatusCodes } from "http-status-codes";
44const dynamicDbData : any = [ ] ;
55
66interface Diary {
7- id : string ;
7+ id ?: number ;
88 title : string ;
99 content : string ;
10- createdAt : string ;
10+ createdAt ?: Date ;
1111}
1212
1313// CRUD endpoints for diary app
@@ -16,16 +16,48 @@ export async function diaryRouter(app: FastifyInstance) {
1616 reply . status ( StatusCodes . OK ) . send ( dynamicDbData ) ;
1717 } ) ;
1818
19+ app . get ( "/:id" , async ( request , reply ) => {
20+ const { id } = request . params as { id : string } ;
21+ const idInteger = parseInt ( id , 10 ) ; // Cast to integer decimal number
22+
23+ const diary = dynamicDbData . find ( ( item : Diary ) => item . id === idInteger ) ;
24+
25+ if ( ! diary ) {
26+ console . info ( "Note entry not found" ) ;
27+ reply . status ( StatusCodes . NOT_FOUND ) . send ( {
28+ message : "Note entry not found" ,
29+ } ) ;
30+ } else {
31+ reply . status ( StatusCodes . OK ) . send ( diary ) ;
32+ }
33+ } ) ;
34+
1935 app . post ( "/" , async ( request , reply ) => {
20- const { body } = request ;
36+ const body = request . body as Diary ;
37+
38+ if ( ! body . title || ! body . content ) {
39+ reply . status ( StatusCodes . BAD_REQUEST ) . send ( ) ;
40+ return ;
41+ }
42+
43+ body . id = dynamicDbData . length + 1 ;
44+
45+ if ( ! body . createdAt ) {
46+ body . createdAt = new Date ( ) ;
47+ }
48+
2149 dynamicDbData . push ( body ) ;
2250 reply . status ( StatusCodes . CREATED ) . send ( body ) ;
2351 } ) ;
2452
2553 app . patch ( "/:id" , async ( request , reply ) => {
26- const { id } = request . params as Diary ;
27- const { body } = request ;
28- const index = dynamicDbData . findIndex ( ( item : Diary ) => item . id === id ) ;
54+ const body = request . body as Diary ;
55+ const { id } = request . params as { id : string } ;
56+ const idInteger = parseInt ( id , 10 ) ; // Cast to integer decimal number
57+
58+ const index = dynamicDbData . findIndex (
59+ ( item : Diary ) => item . id === idInteger
60+ ) ;
2961 if ( index === - 1 ) {
3062 reply . status ( StatusCodes . NOT_FOUND ) . send ( ) ;
3163 } else {
@@ -36,12 +68,17 @@ export async function diaryRouter(app: FastifyInstance) {
3668
3769 app . delete ( "/:id" , async ( request , reply ) => {
3870 const { id } = request . params as { id : string } ;
39- const index = dynamicDbData . findIndex ( ( item : Diary ) => item . id === id ) ;
71+ const index = dynamicDbData . findIndex (
72+ ( item : Diary ) => item . id === parseInt ( id )
73+ ) ;
74+
4075 if ( index === - 1 ) {
4176 reply . status ( StatusCodes . NOT_FOUND ) . send ( ) ;
4277 } else {
4378 dynamicDbData . splice ( index , 1 ) ;
44- reply . status ( StatusCodes . NO_CONTENT ) . send ( ) ;
79+ reply . status ( StatusCodes . OK ) . send ( {
80+ message : "Note entry deleted" ,
81+ } ) ;
4582 }
4683 } ) ;
4784}
0 commit comments