Skip to content

Commit 06a2f0c

Browse files
committed
feat(golang): keep formatting and indentation of the multiline SQL queries
Part of #26
1 parent a9ff280 commit 06a2f0c

File tree

3 files changed

+73
-18
lines changed

3 files changed

+73
-18
lines changed

examples/go/chi/mysql/routes.go

+65-8
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ func registerRoutes(r chi.Router, db *sqlx.DB) {
4242

4343
r.Get("/v1/categories/count", func(w http.ResponseWriter, r *http.Request) {
4444
var result CounterDto
45-
err := db.Get(&result, "SELECT COUNT(*) AS counter FROM categories")
45+
err := db.Get(
46+
&result,
47+
"SELECT COUNT(*) AS counter FROM categories")
4648
switch err {
4749
case sql.ErrNoRows:
4850
w.WriteHeader(http.StatusNotFound)
@@ -56,7 +58,12 @@ func registerRoutes(r chi.Router, db *sqlx.DB) {
5658
})
5759

5860
r.Get("/v1/collections/{collectionId}/categories/count", func(w http.ResponseWriter, r *http.Request) {
59-
stmt, err := db.PrepareNamed("SELECT COUNT(DISTINCT s.category_id) AS counter FROM collections_series cs JOIN series s ON s.id = cs.series_id WHERE cs.collection_id = :collectionId")
61+
stmt, err := db.PrepareNamed(
62+
`SELECT COUNT(DISTINCT s.category_id) AS counter
63+
FROM collections_series cs
64+
JOIN series s
65+
ON s.id = cs.series_id
66+
WHERE cs.collection_id = :collectionId`)
6067
if err != nil {
6168
fmt.Fprintf(os.Stderr, "PrepareNamed failed: %v\n", err)
6269
internalServerError(w)
@@ -82,7 +89,14 @@ func registerRoutes(r chi.Router, db *sqlx.DB) {
8289

8390
r.Get("/v1/categories", func(w http.ResponseWriter, r *http.Request) {
8491
result := []CategoryDto{}
85-
err := db.Select(&result, "SELECT id , name , name_ru , slug , hidden FROM categories")
92+
err := db.Select(
93+
&result,
94+
`SELECT id
95+
, name
96+
, name_ru
97+
, slug
98+
, hidden
99+
FROM categories`)
86100
switch err {
87101
case sql.ErrNoRows:
88102
w.WriteHeader(http.StatusNotFound)
@@ -107,7 +121,27 @@ func registerRoutes(r chi.Router, db *sqlx.DB) {
107121
"user_id": body.UserId,
108122
}
109123
_, err := db.NamedExec(
110-
"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 )",
124+
`INSERT
125+
INTO categories
126+
( name
127+
, name_ru
128+
, slug
129+
, hidden
130+
, created_at
131+
, created_by
132+
, updated_at
133+
, updated_by
134+
)
135+
VALUES
136+
( :name
137+
, :name_ru
138+
, :slug
139+
, :hidden
140+
, NOW()
141+
, :user_id
142+
, NOW()
143+
, :user_id
144+
)`,
111145
args,
112146
)
113147
if err != nil {
@@ -120,7 +154,14 @@ func registerRoutes(r chi.Router, db *sqlx.DB) {
120154
})
121155

122156
r.Get("/v1/categories/search", func(w http.ResponseWriter, r *http.Request) {
123-
stmt, err := db.PrepareNamed("SELECT id , name , name_ru , slug , hidden FROM categories WHERE hidden = :hidden")
157+
stmt, err := db.PrepareNamed(
158+
`SELECT id
159+
, name
160+
, name_ru
161+
, slug
162+
, hidden
163+
FROM categories
164+
WHERE hidden = :hidden`)
124165
if err != nil {
125166
fmt.Fprintf(os.Stderr, "PrepareNamed failed: %v\n", err)
126167
internalServerError(w)
@@ -145,7 +186,14 @@ func registerRoutes(r chi.Router, db *sqlx.DB) {
145186
})
146187

147188
r.Get("/v1/categories/{categoryId}", func(w http.ResponseWriter, r *http.Request) {
148-
stmt, err := db.PrepareNamed("SELECT id , name , name_ru , slug , hidden FROM categories WHERE id = :categoryId")
189+
stmt, err := db.PrepareNamed(
190+
`SELECT id
191+
, name
192+
, name_ru
193+
, slug
194+
, hidden
195+
FROM categories
196+
WHERE id = :categoryId`)
149197
if err != nil {
150198
fmt.Fprintf(os.Stderr, "PrepareNamed failed: %v\n", err)
151199
internalServerError(w)
@@ -182,7 +230,14 @@ func registerRoutes(r chi.Router, db *sqlx.DB) {
182230
"categoryId": chi.URLParam(r, "categoryId"),
183231
}
184232
_, err := db.NamedExec(
185-
"UPDATE categories SET name = :name , name_ru = :name_ru , slug = :slug , hidden = :hidden , updated_at = NOW() , updated_by = :user_id WHERE id = :categoryId",
233+
`UPDATE categories
234+
SET name = :name
235+
, name_ru = :name_ru
236+
, slug = :slug
237+
, hidden = :hidden
238+
, updated_at = NOW()
239+
, updated_by = :user_id
240+
WHERE id = :categoryId`,
186241
args,
187242
)
188243
if err != nil {
@@ -199,7 +254,9 @@ func registerRoutes(r chi.Router, db *sqlx.DB) {
199254
"categoryId": chi.URLParam(r, "categoryId"),
200255
}
201256
_, err := db.NamedExec(
202-
"DELETE FROM categories WHERE id = :categoryId",
257+
`DELETE
258+
FROM categories
259+
WHERE id = :categoryId`,
203260
args,
204261
)
205262
if err != nil {

src/cli.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ const createEndpoints = async (destDir, { lang }, config) => {
261261

262262
// Differs from formatQuery() as it doesn't flatten query (preserve original formatting)
263263
// and also use backticks for multiline strings
264-
// (used only with JS, TS)
264+
// (used only with JS, TS, Golang)
265265
"formatQueryForJs": (query, indentLevel) => {
266266
const sql = removePlaceholders(removeComments(query))
267267
const indent = ' '.repeat(indentLevel)

src/templates/routes.go.ejs

+7-9
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ endpoints.forEach(function(endpoint) {
197197
return
198198
}
199199
200-
const sql = formatQuery(method.query)
200+
const sql = formatQueryForJs(method.query, 12)
201201
202202
// define before "if", to make it available later
203203
let dataType
@@ -223,7 +223,7 @@ endpoints.forEach(function(endpoint) {
223223
<%
224224
if (params.length > 0) {
225225
-%>
226-
stmt, err := db.PrepareNamed("<%- sql %>")
226+
stmt, err := db.PrepareNamed(<%- sql %>)
227227
if err != nil {
228228
fmt.Fprintf(os.Stderr, "PrepareNamed failed: %v\n", err)
229229
internalServerError(w)
@@ -237,7 +237,8 @@ endpoints.forEach(function(endpoint) {
237237
err = stmt.<%- queryFunction %>(&result, args)
238238
<% } else { -%>
239239
<%- resultVariableDeclaration %>
240-
err := db.<%- queryFunction %>(&result, "<%- sql %>")
240+
err := db.<%- queryFunction %>(
241+
&result,<%- sql %>)
241242
<% } -%>
242243
switch err {
243244
case sql.ErrNoRows:
@@ -261,8 +262,7 @@ endpoints.forEach(function(endpoint) {
261262
args := map[string]interface{}{
262263
<%- formatParamsAsGolangMap(params, method) %>
263264
}
264-
_, err := db.NamedExec(
265-
"<%- sql %>",
265+
_, err := db.NamedExec(<%- sql %>,
266266
args,
267267
)
268268
if err != nil {
@@ -284,8 +284,7 @@ endpoints.forEach(function(endpoint) {
284284
args := map[string]interface{}{
285285
<%- formatParamsAsGolangMap(params, method) %>
286286
}
287-
_, err := db.NamedExec(
288-
"<%- sql %>",
287+
_, err := db.NamedExec(<%- sql %>,
289288
args,
290289
)
291290
if err != nil {
@@ -304,8 +303,7 @@ endpoints.forEach(function(endpoint) {
304303
args := map[string]interface{}{
305304
<%- formatParamsAsGolangMap(params, method) %>
306305
}
307-
_, err := db.NamedExec(
308-
"<%- sql %>",
306+
_, err := db.NamedExec(<%- sql %>,
309307
args,
310308
)
311309
if err != nil {

0 commit comments

Comments
 (0)