branch: externals/gnosis
commit f1ef34df5184ab1e892384f8feaa9a814e8c8303
Author: Thanos Apollo <[email protected]>
Commit: Thanos Apollo <[email protected]>
review--update: Reduce db calls to improve performance.
---
gnosis.el | 44 +++++++++++++++++++++-----------------------
1 file changed, 21 insertions(+), 23 deletions(-)
diff --git a/gnosis.el b/gnosis.el
index 91487ccbe4..2f00b3e067 100644
--- a/gnosis.el
+++ b/gnosis.el
@@ -1099,33 +1099,31 @@ Returns a list of the form ((yyyy mm dd) (ef-increase
ef-decrease ef-total))."
:lethe (gnosis-get-thema-lethe id)))))
(defun gnosis-review--update (id success)
- "Update review-log for thema with value of id ID.
+ "Update review-log for thema ID.
SUCCESS is a boolean value, t for success, nil for failure."
(let* ((result (gnosis-review-algorithm id success))
(next-rev (car result))
- (gnosis (cadr result)))
- ;; Update activity-log
- (gnosis-review-increment-activity-log (gnosis-review-is-thema-new-p id))
- ;; Update review-log
- (gnosis-update 'review-log `(= last-rev ',(gnosis-algorithm-date)) `(= id
,id))
- (gnosis-update 'review-log `(= next-rev ',next-rev) `(= id ,id))
- (gnosis-update 'review-log `(= n (+ 1 ,(gnosis-get 'n 'review-log `(= id
,id)))) `(= id ,id))
- ;; Update review
- (gnosis-update 'review `(= gnosis ',gnosis) `(= id ,id))
- (if success
- (progn (gnosis-update 'review-log
- `(= c-success ,(1+ (gnosis-get 'c-success
'review-log `(= id ,id))))
- `(= id ,id))
- (gnosis-update 'review-log
- `(= t-success ,(1+ (gnosis-get 't-success
'review-log `(= id ,id))))
- `(= id ,id))
- (gnosis-update 'review-log `(= c-fails 0) `(= id ,id)))
- (gnosis-update 'review-log
- `(= c-fails ,(1+ (gnosis-get 'c-fails 'review-log `(= id
,id)))) `(= id ,id))
- (gnosis-update 'review-log
- `(= t-fails ,(1+ (gnosis-get 't-fails 'review-log `(= id
,id)))) `(= id ,id))
- (gnosis-update 'review-log `(= c-success 0) `(= id ,id)))))
+ (gnosis-score (cadr result))
+ (log (car (gnosis-select '[n c-success c-fails t-success t-fails]
+ 'review-log `(= id ,id))))
+ (n (nth 0 log))
+ (c-success (nth 1 log))
+ (c-fails (nth 2 log))
+ (t-success (nth 3 log))
+ (t-fails (nth 4 log)))
+ (gnosis-review-increment-activity-log (not (> n 0)))
+ ;; Single review-log UPDATE
+ (emacsql gnosis-db
+ "UPDATE review_log SET last_rev = $s1, next_rev = $s2, n = $s3,
c_success = $s4, c_fails = $s5, t_success = $s6, t_fails = $s7 WHERE id = $s8"
+ (gnosis-algorithm-date) next-rev (1+ n)
+ (if success (1+ c-success) 0)
+ (if success 0 (1+ c-fails))
+ (if success (1+ t-success) t-success)
+ (if success t-fails (1+ t-fails))
+ id)
+ ;; Single review UPDATE
+ (gnosis-update 'review `(= gnosis ',gnosis-score) `(= id ,id))))
(defun gnosis-review-result (id success)
"Update review thema ID results for SUCCESS."