For information, I managed to do combined sort (with asc, desc).
In my case below, achieving priority
ASC + journal-day
DESC, by reversing result (at first reverse priority alphabet, then last reserve once again.)
#+BEGIN_QUERY
{:title "TODO (latest 30)"
:query (todo TODO)
:result-transform (fn [result]
(let [rev-pri (fn [p] (case p "A" "Z" "B" "Y" "C" "X" "Z" "B" "A"))]
(->> result
(sort-by (fn [r]
[
(rev-pri (get r :block/priority "Z"))
(get (get r :block/page) :block/journal-day 19000101)
]
))
reverse
(take 30)
;; ;; for debug dates (by returning :journal-day)
;; (map (fn [m] (update m :block/properties
;; (fn [u]
;; (assoc u
;; :journal-day (get (get m :block/page) :block/journal-day)
;; )
;; ))))
)))
:breadcrumb-show? false
}
#+END_QUERY
In this case, journal-day is unsigned int
, so you can use below as alternative:
(sort-by (fn [r]
[
(get r :block/priority "Z")
(- (get (get r :block/page) :block/journal-day 19000101))
]
))
;; without reverse
But I think this is special case which combined sort can be done with ease, so it’s ideal if there is multiplex sort function as default.