Skip to content

Commit 2b28eae

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

File tree

3 files changed

+21
-6
lines changed

3 files changed

+21
-6
lines changed

examples/js/express/mysql/app.js

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

examples/js/express/mysql/routes.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ const register = (app, pool) => {
3535

3636
app.get('/v1/categories', (req, res, next) => {
3737
pool.query(
38-
'SELECT id , name , name_ru , slug FROM categories',
38+
'SELECT id , name , name_ru , slug , hidden FROM categories',
3939
(err, rows, fields) => {
4040
if (err) {
4141
return next(err)
@@ -47,8 +47,8 @@ const register = (app, pool) => {
4747

4848
app.post('/v1/categories', (req, res, next) => {
4949
pool.query(
50-
'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 )',
51-
{ "name": req.body.name, "name_ru": req.body.name_ru, "slug": req.body.slug, "user_id": req.body.user_id },
50+
'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 )',
51+
{ "name": req.body.name, "name_ru": req.body.name_ru, "slug": req.body.slug, "hidden": req.body.hidden, "user_id": req.body.user_id },
5252
(err, rows, fields) => {
5353
if (err) {
5454
return next(err)
@@ -60,7 +60,7 @@ const register = (app, pool) => {
6060

6161
app.get('/v1/categories/:categoryId', (req, res, next) => {
6262
pool.query(
63-
'SELECT id , name , name_ru , slug FROM categories WHERE id = :categoryId',
63+
'SELECT id , name , name_ru , slug , hidden FROM categories WHERE id = :categoryId',
6464
{ "categoryId": req.params.categoryId },
6565
(err, rows, fields) => {
6666
if (err) {
@@ -77,8 +77,8 @@ const register = (app, pool) => {
7777

7878
app.put('/v1/categories/:categoryId', (req, res, next) => {
7979
pool.query(
80-
'UPDATE categories SET name = :name , name_ru = :name_ru , slug = :slug , updated_at = NOW() , updated_by = :user_id WHERE id = :categoryId',
81-
{ "name": req.body.name, "name_ru": req.body.name_ru, "slug": req.body.slug, "user_id": req.body.user_id, "categoryId": req.params.categoryId },
80+
'UPDATE categories SET name = :name , name_ru = :name_ru , slug = :slug , hidden = :hidden , updated_at = NOW() , updated_by = :user_id WHERE id = :categoryId',
81+
{ "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 },
8282
(err, rows, fields) => {
8383
if (err) {
8484
return next(err)

src/templates/app.js.ejs

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

0 commit comments

Comments
 (0)