mirror of
https://github.com/penpot/penpot.git
synced 2025-12-11 22:14:05 +01:00
This upgrade also includes complete elimination of use spec from the backend codebase, completing the long running migration to fully use malli for validation and decoding.
44 lines
1.3 KiB
Clojure
44 lines
1.3 KiB
Clojure
;; This Source Code Form is subject to the terms of the Mozilla Public
|
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
;;
|
|
;; Copyright (c) KALEIDOS INC
|
|
|
|
(ns app.tasks.tasks-gc
|
|
"A maintenance task that performs a cleanup of already executed tasks
|
|
from the database table."
|
|
(:require
|
|
[app.common.logging :as l]
|
|
[app.config :as cf]
|
|
[app.db :as db]
|
|
[integrant.core :as ig]))
|
|
|
|
(def ^:private
|
|
sql:delete-completed-tasks
|
|
"DELETE FROM task WHERE scheduled_at < now() - ?::interval")
|
|
|
|
(defmethod ig/assert-key ::handler
|
|
[_ params]
|
|
(assert (db/pool? (::db/pool params)) "expected a valid database pool"))
|
|
|
|
(defmethod ig/expand-key ::handler
|
|
[k v]
|
|
{k (assoc v ::min-age (cf/get-deletion-delay))})
|
|
|
|
(defmethod ig/init-key ::handler
|
|
[_ {:keys [::db/pool ::min-age] :as cfg}]
|
|
(fn [{:keys [props] :as task}]
|
|
(let [min-age (or (:min-age props) min-age)]
|
|
(db/with-atomic [conn pool]
|
|
(let [interval (db/interval min-age)
|
|
result (db/exec-one! conn [sql:delete-completed-tasks interval])
|
|
result (db/get-update-count result)]
|
|
|
|
(l/debug :hint "task finished" :total result)
|
|
|
|
(when (:rollback? props)
|
|
(db/rollback! conn))
|
|
|
|
result)))))
|
|
|