@@ -136,6 +136,40 @@ func (database *Database) list(w http.ResponseWriter, r *http.Request) {
136
136
respond (w , http .StatusOK , result )
137
137
}
138
138
139
+ func (database * Database ) count (w http.ResponseWriter , r * http.Request ) {
140
+ var clauses [][]interface {}
141
+
142
+ if err := json .NewDecoder (r .Body ).Decode (& clauses ); err != nil {
143
+ // Here we don't return an error because filters are optional
144
+ database .log .Error ().Err (err ).Msg ("error parsing body" )
145
+ }
146
+
147
+ filter , err := backend .DB .ParseQuery (clauses )
148
+ if err != nil {
149
+ // Here we don't return an error because filters are optional
150
+ database .log .Error ().Err (err ).Msg ("error parsing query" )
151
+ }
152
+
153
+ conf , auth , err := middleware .Extract (r , true )
154
+ if err != nil {
155
+ database .log .Error ().Err (err ).Msg ("error extracting conf and auth" )
156
+ http .Error (w , err .Error (), http .StatusBadRequest )
157
+
158
+ return
159
+ }
160
+
161
+ col := getURLPart (r .URL .Path , 3 )
162
+
163
+ result , err := backend .DB .Count (auth , conf .Name , col , filter )
164
+ if err != nil {
165
+ http .Error (w , err .Error (), http .StatusInternalServerError )
166
+
167
+ return
168
+ }
169
+
170
+ respond (w , http .StatusOK , map [string ]int64 {"count" : result })
171
+ }
172
+
139
173
func (database * Database ) get (w http.ResponseWriter , r * http.Request ) {
140
174
conf , auth , err := middleware .Extract (r , true )
141
175
if err != nil {
0 commit comments