Thanks to visit codestin.com
Credit goes to github.com

Skip to content
This repository was archived by the owner on Oct 23, 2020. It is now read-only.

Commit ae91e39

Browse files
committed
add max limits to offset and total-records to 10,000 when html is selected
1 parent a74a777 commit ae91e39

File tree

2 files changed

+14
-27
lines changed

2 files changed

+14
-27
lines changed

src/qu/query/validation.clj

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -142,26 +142,14 @@
142142
:default (Integer/parseInt val))]
143143
query)
144144
(catch NumberFormatException e;
145-
(add-error query clause "Please use an integer."))))))
145+
(add-error query clause "Please enter a number."))))))
146146

147-
(defn- validate-intsize
148-
[query clause]
149-
(let [val (clause query)]
150-
(try
151-
(if (and (integer? (Integer/parseInt val)) (> 10000 (Integer/parseInt val)))
152-
query
153-
(if (and (integer? (Integer/parseInt val)) (< 10000 (Integer/parseInt val)))
154-
(add-error query clause "Offset must be < 10000.")
155-
(try
156-
(let [_ (cond
157-
(integer? val) val
158-
(nil? val) 0
159-
:default (Integer/parseInt val))]
160-
query)
161-
(catch NumberFormatException e;
162-
(add-error query clause "Please use an integer.")))))
163-
(catch NumberFormatException e;
164-
(add-error query clause "Please use an integer.")))))
147+
(defn- validate-max-offset
148+
[query]
149+
(let [offset (->int (:offset query) 0)]
150+
(if (> offset 10000)
151+
(add-error query :offset (str "The maximum offset is 10,000."))
152+
query)))
165153

166154
(defn- validate-max-limit
167155
[query max]
@@ -176,7 +164,7 @@
176164

177165
(defn- validate-offset
178166
[query]
179-
(validate-intsize query :offset))
167+
(validate-integer query :offset))
180168

181169
(defn validate
182170
"Check the query for any errors."
@@ -189,5 +177,6 @@
189177
validate-where
190178
validate-order-by
191179
validate-limit
192-
validate-offset)
180+
validate-offset
181+
validate-max-offset)
193182
query))

src/qu/views.clj

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -229,10 +229,11 @@
229229
current-page (or (get-in resource [:properties :page]) 1)
230230
href (:href resource)
231231
limit (get-in resource [:properties :query :limit])
232+
limit-total (if (> total 10000) 10000 total)
232233
total-pages (if (zero? limit)
233234
1
234-
(+ (quot total limit)
235-
(if (zero? (rem total limit)) 0 1)))
235+
(+ (quot limit-total limit)
236+
(if (zero? (rem limit-total limit)) 0 1)))
236237
window (range (max 1 (- current-page window-size))
237238
(inc (min total-pages (+ current-page window-size))))
238239
in-window? (fn [page]
@@ -250,10 +251,7 @@
250251
:href (href-for-page resource 1)})
251252
(concat [{:page "Next"
252253
:class (when (>= current-page total-pages) "disabled")
253-
:href (href-for-page resource (inc current-page))}
254-
{:page "Last"
255-
:class (when (in-window? total-pages) "disabled")
256-
:href (href-for-page resource total-pages)}])))
254+
:href (when (< current-page total-pages) (href-for-page resource (inc current-page)))}])))
257255
[]))
258256

259257
(defmulti slice-query (fn [format _ _] format))

0 commit comments

Comments
 (0)