1+ import camelcaseKeys from "camelcase-keys" ;
12import dotenv from "dotenv" ;
23import sql from "mssql" ;
34import { Body , Controller , Delete , Get , Path , Post , Put , Route , SuccessResponse , Tags } from "tsoa" ;
45
5- import { BookAuthor , BookAuthorCreateRequest , BookCreateRequest , BookRequest , BookUpdateRequest } from "./../models/book.js" ;
6+ import { BookAuthorCreateRequest , BookAuthorResponse , BookCreateRequest , BookResponse , BookUpdateRequest } from "./../models/book.js" ;
67
78dotenv . config ( ) ;
89
@@ -81,10 +82,10 @@ export class BooksController extends Controller {
8182 . input ( "title" , sql . NVarChar ( 200 ) , title )
8283 . input ( "year" , sql . Int , year ) . query < { BookId : number } > ( `
8384 INSERT INTO Books
84- (CreatedBy, Description, DownloadUrl, ImageUrl, ISBN, LanguageId, Title, Year)
85+ (Description, DownloadUrl, ImageUrl, ISBN, LanguageId, Title, Year)
8586 OUTPUT INSERTED.BookId
8687 VALUES
87- (@createdBy, @description, @downloadUrl, @imageUrl, @isbn, @languageId, @title, @year)
88+ ( @description, @downloadUrl, @imageUrl, @isbn, @languageId, @title, @year)
8889 ` ) ;
8990
9091 return { id : result . recordset [ 0 ] . BookId , message : "Book created successfully" } ;
@@ -110,15 +111,16 @@ export class BooksController extends Controller {
110111
111112 /** GET /books/{bookId}/authors */
112113 @Get ( "{bookId}/authors" )
113- public async getAuthorsByBook ( @Path ( ) bookId : number ) : Promise < BookAuthor [ ] > {
114+ public async getAuthorsByBook ( @Path ( ) bookId : number ) : Promise < BookAuthorResponse [ ] > {
114115 const pool = await sql . connect ( sqlConfig ) ;
115116 const result = await pool . request ( ) . input ( "bookId" , sql . Int , bookId ) . query ( "SELECT * FROM BooksAuthors WHERE BookId = @bookId" ) ;
116- return result . recordset as BookAuthor [ ] ;
117+ // return result.recordset as BookAuthor[];
118+ return camelcaseKeys ( result . recordset , { deep : true } ) as unknown as BookAuthorResponse [ ] ;
117119 }
118120
119121 /** GET /books/{id} */
120122 @Get ( "{id}" )
121- public async getBook ( @Path ( ) id : number ) : Promise < BookRequest | null > {
123+ public async getBook ( @Path ( ) id : number ) : Promise < BookResponse | null > {
122124 const pool = await sql . connect ( sqlConfig ) ;
123125 const result = await pool . request ( ) . input ( "id" , sql . Int , id ) . query ( "SELECT * FROM Books WHERE BookId = @id" ) ;
124126
@@ -127,15 +129,17 @@ export class BooksController extends Controller {
127129 return null ;
128130 }
129131
130- return result . recordset [ 0 ] as BookRequest ;
132+ // return result.recordset[0] as BookRequest;
133+ return camelcaseKeys ( result . recordset [ 0 ] , { deep : true } ) as BookResponse ;
131134 }
132135
133136 /** GET /books */ // -- books
134137 @Get ( )
135- public async getBooks ( ) : Promise < BookRequest [ ] > {
138+ public async getBooks ( ) : Promise < BookResponse [ ] > {
136139 const pool = await sql . connect ( sqlConfig ) ;
137140 const result = await pool . request ( ) . query ( "SELECT * FROM Books" ) ;
138- return result . recordset ;
141+ // return result.recordset;
142+ return camelcaseKeys ( result . recordset , { deep : true } ) as unknown as BookResponse [ ] ;
139143 }
140144
141145 /** DELETE /books/{bookId}/authors/{authorId} */
0 commit comments