Skip to content

Commit 9c537a6

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

File tree

4 files changed

+20
-4
lines changed

4 files changed

+20
-4
lines changed

docker/categories.mysql.sql

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ CREATE TABLE `categories` (
33
`name` varchar(50) NOT NULL,
44
`name_ru` varchar(50) DEFAULT NULL,
55
`slug` varchar(50) NOT NULL,
6+
`hidden` boolean,
67
`created_at` datetime NOT NULL,
78
`created_by` int(11) NOT NULL,
89
`updated_at` datetime NOT NULL,

examples/go/chi/mysql/routes.go

+9-4
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,14 @@ type CategoryDto struct {
1818
Name *string `json:"name" db:"name"`
1919
NameRu *string `json:"name_ru" db:"name_ru"`
2020
Slug *string `json:"slug" db:"slug"`
21+
Hidden *bool `json:"hidden" db:"hidden"`
2122
}
2223

2324
type CreateCategoryDto struct {
2425
Name *string `json:"name" db:"name"`
2526
NameRu *string `json:"name_ru" db:"name_ru"`
2627
Slug *string `json:"slug" db:"slug"`
28+
Hidden *bool `json:"hidden" db:"hidden"`
2729
UserId *int `json:"user_id" db:"user_id"`
2830
}
2931

@@ -32,6 +34,7 @@ type CategoryInfoDto struct {
3234
Name *string `json:"name" db:"name"`
3335
NameRu *string `json:"name_ru" db:"name_ru"`
3436
Slug *string `json:"slug" db:"slug"`
37+
Hidden *bool `json:"hidden" db:"hidden"`
3538
}
3639

3740
func registerRoutes(r chi.Router, db *sqlx.DB) {
@@ -78,7 +81,7 @@ func registerRoutes(r chi.Router, db *sqlx.DB) {
7881

7982
r.Get("/v1/categories", func(w http.ResponseWriter, r *http.Request) {
8083
result := []CategoryDto{}
81-
err := db.Select(&result, "SELECT id , name , name_ru , slug FROM categories")
84+
err := db.Select(&result, "SELECT id , name , name_ru , slug , hidden FROM categories")
8285
switch err {
8386
case sql.ErrNoRows:
8487
w.WriteHeader(http.StatusNotFound)
@@ -99,10 +102,11 @@ func registerRoutes(r chi.Router, db *sqlx.DB) {
99102
"name": body.Name,
100103
"name_ru": body.NameRu,
101104
"slug": body.Slug,
105+
"hidden": body.Hidden,
102106
"user_id": body.UserId,
103107
}
104108
_, err := db.NamedExec(
105-
"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 )",
109+
"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 )",
106110
args,
107111
)
108112
if err != nil {
@@ -115,7 +119,7 @@ func registerRoutes(r chi.Router, db *sqlx.DB) {
115119
})
116120

117121
r.Get("/v1/categories/{categoryId}", func(w http.ResponseWriter, r *http.Request) {
118-
stmt, err := db.PrepareNamed("SELECT id , name , name_ru , slug FROM categories WHERE id = :categoryId")
122+
stmt, err := db.PrepareNamed("SELECT id , name , name_ru , slug , hidden FROM categories WHERE id = :categoryId")
119123
if err != nil {
120124
fmt.Fprintf(os.Stderr, "PrepareNamed failed: %v\n", err)
121125
internalServerError(w)
@@ -147,11 +151,12 @@ func registerRoutes(r chi.Router, db *sqlx.DB) {
147151
"name": body.Name,
148152
"name_ru": body.NameRu,
149153
"slug": body.Slug,
154+
"hidden": body.Hidden,
150155
"user_id": body.UserId,
151156
"categoryId": chi.URLParam(r, "categoryId"),
152157
}
153158
_, err := db.NamedExec(
154-
"UPDATE categories SET name = :name , name_ru = :name_ru , slug = :slug , updated_at = NOW() , updated_by = :user_id WHERE id = :categoryId",
159+
"UPDATE categories SET name = :name , name_ru = :name_ru , slug = :slug , hidden = :hidden , updated_at = NOW() , updated_by = :user_id WHERE id = :categoryId",
155160
args,
156161
)
157162
if err != nil {

examples/js/express/mysql/endpoints.yaml

+4
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@
4444
fields:
4545
id:
4646
type: integer
47+
hidden:
48+
type: boolean
4749
post:
4850
query: >-
4951
INSERT
@@ -90,6 +92,8 @@
9092
fields:
9193
id:
9294
type: integer
95+
hidden:
96+
type: boolean
9397
put:
9498
query: >-
9599
UPDATE categories

src/templates/routes.go.ejs

+6
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,15 @@ function extractProperties(queryAst) {
7373
function findOutType(fieldsInfo, fieldName) {
7474
const defaultType = '*string'
7575
const hasTypeInfo = fieldsInfo.hasOwnProperty(fieldName) && fieldsInfo[fieldName].hasOwnProperty('type')
76+
if (!hasTypeInfo) {
77+
return defaultType
78+
}
7679
if (hasTypeInfo && fieldsInfo[fieldName].type === 'integer') {
7780
return '*int'
7881
}
82+
if (hasTypeInfo && fieldsInfo[fieldName].type === 'boolean') {
83+
return '*bool'
84+
}
7985
return defaultType
8086
}
8187

0 commit comments

Comments
 (0)