Skip to content

Commit cebb89d

Browse files
committed
feat(ts): add support for boolean type for body arguments
Part of #49
1 parent 2b28eae commit cebb89d

File tree

3 files changed

+21
-6
lines changed

3 files changed

+21
-6
lines changed

examples/ts/express/mysql/app.ts

+7
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ const pool = mysql.createPool({
2323
}
2424
return matchedSubstring
2525
}.bind(this))
26+
},
27+
// Support for conversion from TINYINT(1) to boolean (https://github.com/mysqljs/mysql#custom-type-casting)
28+
typeCast: function(field, next) {
29+
if (field.type === 'TINY' && field.length === 1) {
30+
return field.string() === '1'
31+
}
32+
return next()
2633
}
2734
})
2835

examples/ts/express/mysql/routes.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ const register = (app: Express, pool: Pool) => {
3838

3939
app.get('/v1/categories', (req: Request, res: Response, next: NextFunction) => {
4040
pool.query(
41-
'SELECT id , name , name_ru , slug FROM categories',
41+
'SELECT id , name , name_ru , slug , hidden FROM categories',
4242
(err, rows, fields) => {
4343
if (err) {
4444
return next(err)
@@ -50,8 +50,8 @@ const register = (app: Express, pool: Pool) => {
5050

5151
app.post('/v1/categories', (req: Request, res: Response, next: NextFunction) => {
5252
pool.query(
53-
'INSERT INTO categories ( name , name_ru , slug , created_at , created_by , updated_at , updated_by ) VALUES ( :name , :name_ru , :slug , NOW() , :user_id , NOW() , :user_id )',
54-
{ "name": req.body.name, "name_ru": req.body.name_ru, "slug": req.body.slug, "user_id": req.body.user_id },
53+
'INSERT INTO categories ( name , name_ru , slug , hidden , created_at , created_by , updated_at , updated_by ) VALUES ( :name , :name_ru , :slug , :hidden , NOW() , :user_id , NOW() , :user_id )',
54+
{ "name": req.body.name, "name_ru": req.body.name_ru, "slug": req.body.slug, "hidden": req.body.hidden, "user_id": req.body.user_id },
5555
(err, rows, fields) => {
5656
if (err) {
5757
return next(err)
@@ -63,7 +63,7 @@ const register = (app: Express, pool: Pool) => {
6363

6464
app.get('/v1/categories/:categoryId', (req: Request, res: Response, next: NextFunction) => {
6565
pool.query(
66-
'SELECT id , name , name_ru , slug FROM categories WHERE id = :categoryId',
66+
'SELECT id , name , name_ru , slug , hidden FROM categories WHERE id = :categoryId',
6767
{ "categoryId": req.params.categoryId },
6868
(err, rows, fields) => {
6969
if (err) {
@@ -80,8 +80,8 @@ const register = (app: Express, pool: Pool) => {
8080

8181
app.put('/v1/categories/:categoryId', (req: Request, res: Response, next: NextFunction) => {
8282
pool.query(
83-
'UPDATE categories SET name = :name , name_ru = :name_ru , slug = :slug , updated_at = NOW() , updated_by = :user_id WHERE id = :categoryId',
84-
{ "name": req.body.name, "name_ru": req.body.name_ru, "slug": req.body.slug, "user_id": req.body.user_id, "categoryId": req.params.categoryId },
83+
'UPDATE categories SET name = :name , name_ru = :name_ru , slug = :slug , hidden = :hidden , updated_at = NOW() , updated_by = :user_id WHERE id = :categoryId',
84+
{ "name": req.body.name, "name_ru": req.body.name_ru, "slug": req.body.slug, "hidden": req.body.hidden, "user_id": req.body.user_id, "categoryId": req.params.categoryId },
8585
(err, rows, fields) => {
8686
if (err) {
8787
return next(err)

src/templates/app.ts.ejs

+8
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@ const pool = mysql.createPool({
2424
}
2525
return matchedSubstring
2626
}.bind(this))
27+
},
28+
<%# LATER: add it only when there is at least one DTO with boolean type -%>
29+
// Support for conversion from TINYINT(1) to boolean (https://github.com/mysqljs/mysql#custom-type-casting)
30+
typeCast: function(field, next) {
31+
if (field.type === 'TINY' && field.length === 1) {
32+
return field.string() === '1'
33+
}
34+
return next()
2735
}
2836
})
2937

0 commit comments

Comments
 (0)