diff --git a/src/snippets/infra/api.clj b/src/snippets/infra/api.clj index ca63693..14f8a37 100644 --- a/src/snippets/infra/api.clj +++ b/src/snippets/infra/api.clj @@ -32,10 +32,13 @@ :else {:status 500, :body "internal server error"})))) (defn handle-view-snippets [{params :query-params}] - (let [limit (Integer/parseInt (get params "limit" "10")) - skip (Integer/parseInt (get params "skip" "0"))] + (if-let [limit (get params "limit")] + (let [limit-num (Integer/parseInt limit) + skip-num (Integer/parseInt (get params "skip" "0"))] + {:status 200 + :body (snippets.use-cases.view/view-snippets {:limit limit-num :skip skip-num})}) {:status 200 - :body (snippets.use-cases.view/view-snippets {:limit limit :skip skip})})) + :body (snippets.use-cases.view/view-snippets)})) (defn handle-view-snippet [{params :query-params}] (let [id (get params "id")] diff --git a/src/snippets/infra/db.clj b/src/snippets/infra/db.clj index 8346ef5..ba84fdb 100644 --- a/src/snippets/infra/db.clj +++ b/src/snippets/infra/db.clj @@ -16,10 +16,13 @@ ;; xtdb query docs: https://docs.xtdb.com/reference/main/xtql/queries.html#_limit (defn list-snippets [{:keys [skip limit]}] - (xt/q client - (eval - (read-string - (format "(quote (-> (from :snippets [title pub-date tags slug markdown {:xt/id id}]) (order-by {:val pub-date, :dir :desc, :nulls :last}) (offset %s) (limit %s)))" skip limit))))) + (if (nil? limit) + (xt/q client + '(-> (from :snippets [title pub-date tags slug markdown {:xt/id id}]) (order-by {:val pub-date, :dir :desc, :nulls :last}))) + (xt/q client + (eval + (read-string + (format "(quote (-> (from :snippets [title pub-date tags slug markdown {:xt/id id}]) (order-by {:val pub-date, :dir :desc, :nulls :last}) (offset %s) (limit %s)))" skip limit)))))) (defn get-snippet-by-id [snippet-id] (first (xt/q client ['#(from :snippets [{:xt/id %} slug title tags {:xt/id id} markdown pub-date]) snippet-id])))