@@ -3,6 +3,7 @@ package main
3
3
import "database/sql"
4
4
import "encoding/json"
5
5
import "fmt"
6
+ import "io"
6
7
import "net/http"
7
8
import "os"
8
9
import "github.com/go-chi/chi"
@@ -46,15 +47,15 @@ func registerRoutes(r chi.Router, db *sqlx.DB) {
46
47
json .NewEncoder (w ).Encode (& result )
47
48
default :
48
49
fmt .Fprintf (os .Stderr , "Get failed: %v\n " , err )
49
- w . WriteHeader ( http . StatusInternalServerError )
50
+ internalServerError ( w )
50
51
}
51
52
})
52
53
53
54
r .Get ("/v1/collections/{collectionId}/categories/count" , func (w http.ResponseWriter , r * http.Request ) {
54
55
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" )
55
56
if err != nil {
56
57
fmt .Fprintf (os .Stderr , "PrepareNamed failed: %v\n " , err )
57
- w . WriteHeader ( http . StatusInternalServerError )
58
+ internalServerError ( w )
58
59
return
59
60
}
60
61
@@ -71,15 +72,15 @@ func registerRoutes(r chi.Router, db *sqlx.DB) {
71
72
json .NewEncoder (w ).Encode (& result )
72
73
default :
73
74
fmt .Fprintf (os .Stderr , "Get failed: %v\n " , err )
74
- w . WriteHeader ( http . StatusInternalServerError )
75
+ internalServerError ( w )
75
76
}
76
77
})
77
78
78
79
r .Get ("/v1/categories" , func (w http.ResponseWriter , r * http.Request ) {
79
80
stmt , err := db .PrepareNamed ("SELECT id , name , name_ru , slug FROM categories LIMIT :limit" )
80
81
if err != nil {
81
82
fmt .Fprintf (os .Stderr , "PrepareNamed failed: %v\n " , err )
82
- w . WriteHeader ( http . StatusInternalServerError )
83
+ internalServerError ( w )
83
84
return
84
85
}
85
86
@@ -96,7 +97,7 @@ func registerRoutes(r chi.Router, db *sqlx.DB) {
96
97
json .NewEncoder (w ).Encode (& result )
97
98
default :
98
99
fmt .Fprintf (os .Stderr , "Select failed: %v\n " , err )
99
- w . WriteHeader ( http . StatusInternalServerError )
100
+ internalServerError ( w )
100
101
}
101
102
})
102
103
@@ -116,7 +117,7 @@ func registerRoutes(r chi.Router, db *sqlx.DB) {
116
117
)
117
118
if err != nil {
118
119
fmt .Fprintf (os .Stderr , "NamedExec failed: %v\n " , err )
119
- w . WriteHeader ( http . StatusInternalServerError )
120
+ internalServerError ( w )
120
121
return
121
122
}
122
123
@@ -127,7 +128,7 @@ func registerRoutes(r chi.Router, db *sqlx.DB) {
127
128
stmt , err := db .PrepareNamed ("SELECT id , name , name_ru , slug FROM categories WHERE id = :categoryId" )
128
129
if err != nil {
129
130
fmt .Fprintf (os .Stderr , "PrepareNamed failed: %v\n " , err )
130
- w . WriteHeader ( http . StatusInternalServerError )
131
+ internalServerError ( w )
131
132
return
132
133
}
133
134
@@ -144,7 +145,7 @@ func registerRoutes(r chi.Router, db *sqlx.DB) {
144
145
json .NewEncoder (w ).Encode (& result )
145
146
default :
146
147
fmt .Fprintf (os .Stderr , "Get failed: %v\n " , err )
147
- w . WriteHeader ( http . StatusInternalServerError )
148
+ internalServerError ( w )
148
149
}
149
150
})
150
151
@@ -165,7 +166,7 @@ func registerRoutes(r chi.Router, db *sqlx.DB) {
165
166
)
166
167
if err != nil {
167
168
fmt .Fprintf (os .Stderr , "NamedExec failed: %v\n " , err )
168
- w . WriteHeader ( http . StatusInternalServerError )
169
+ internalServerError ( w )
169
170
return
170
171
}
171
172
@@ -182,11 +183,17 @@ func registerRoutes(r chi.Router, db *sqlx.DB) {
182
183
)
183
184
if err != nil {
184
185
fmt .Fprintf (os .Stderr , "NamedExec failed: %v\n " , err )
185
- w . WriteHeader ( http . StatusInternalServerError )
186
+ internalServerError ( w )
186
187
return
187
188
}
188
189
189
190
w .WriteHeader (http .StatusNoContent )
190
191
})
191
192
192
193
}
194
+
195
+ func internalServerError (w http.ResponseWriter ) {
196
+ w .Header ().Set ("Content-Type" , "application/json; charset=utf-8" )
197
+ w .WriteHeader (http .StatusInternalServerError )
198
+ io .WriteString (w , `{"error":"Internal Server Error"}` )
199
+ }
0 commit comments