Skip to content

Commit

Permalink
AE-2279: Add functions to destroy liitteet when destroying an energia…
Browse files Browse the repository at this point in the history
…todistus
  • Loading branch information
solita-juhohaa committed Oct 8, 2024
1 parent 5a4512b commit a932eb0
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
[solita.etp.db :as db]
[solita.etp.service.complete-energiatodistus :as complete-energiatodistus-service]
[solita.etp.service.energiatodistus :as energiatodistus-service]
[solita.etp.service.liite :as liite-service]
[solita.etp.service.file :as file]))

(db/require-queries 'energiatodistus-destruction)
Expand All @@ -32,10 +33,13 @@
(defn- destroy-energiatodistus-oikeellisuuden-valvonta-note-audit! [db energiatodistus-id]
(energiatodistus-destruction-db/destroy-energiatodistus-oikeellisuuden-valvonta-note-audit! db {:energiatodistus_id energiatodistus-id}))

(defn- delete-from-s3 [aws-s3-client file-key]
(file/delete-file aws-s3-client file-key)
(log/info (str "Deleted " file-key " from S3")))

(defn- delete-energiatodistus-pdf! [aws-s3-client energiatodistus-id language]
(let [file-key (energiatodistus-service/file-key energiatodistus-id language)]
(file/delete-file aws-s3-client file-key)
(log/info (str "Deleted " file-key " from S3"))))
(delete-from-s3 aws-s3-client file-key)))

(defn- delete-energiatodistus-pdfs! [db aws-s3-client energiatodistus-id]
(let [language-codes (-> (complete-energiatodistus-service/find-complete-energiatodistus db energiatodistus-id)
Expand All @@ -45,11 +49,28 @@
(doseq [language-code language-codes]
(delete-energiatodistus-pdf! aws-s3-client energiatodistus-id language-code))))

(defn- delete-energiatodistus-liite-s3 [aws-s3-client liite-id]
(let [file-key (liite-service/file-key liite-id)]
;; Some liitteet are only links and do not have files.
(when (file/file-exists? aws-s3-client file-key)
(delete-from-s3 aws-s3-client file-key))))

(defn- delete-energiatodistus-liite [db aws-s3-client liite]
(let [liite-id (:id liite)]
(energiatodistus-destruction-db/destroy-liite! db {:liite_id liite-id})
(delete-energiatodistus-liite-s3 aws-s3-client liite-id)
(energiatodistus-destruction-db/destroy-liite-audit! db {:liite_id liite-id})))

(defn- destroy-energiatodistus-liitteet [db aws-s3-client energiatodistus-id]
(let [liitteet (energiatodistus-destruction-db/select-to-be-destroyed-liitteet-by-energiatodistus-id db {:energiatodistus_id energiatodistus-id})]
(mapv #(delete-energiatodistus-liite db aws-s3-client %) liitteet)))

(defn- destroy-expired-energiatodistus! [db aws-s3-client energiatodistus-id]
(jdbc/with-db-transaction [db db]
(destroy-energiatodistus-oikeellisuuden-valvonta! db energiatodistus-id)
(destroy-energiatodistus-oikeellisuuden-valvonta-toimenpide-audit! db energiatodistus-id)
(destroy-energiatodistus-oikeellisuuden-valvonta-note-audit! db energiatodistus-id)
(destroy-energiatodistus-liitteet db aws-s3-client energiatodistus-id)
(anonymize-energiatodistus! db energiatodistus-id)
(destroy-energiatodistus-audit-data! db energiatodistus-id))
(delete-energiatodistus-pdfs! db aws-s3-client energiatodistus-id)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
[solita.etp.service.valvonta-oikeellisuus :as valvonta-oikeellisuus-service]
[solita.etp.service.energiatodistus-destruction :as service]
[solita.etp.service.file :as file-service]
[solita.etp.service.liite :as liite-service]
[solita.etp.test-data.energiatodistus :as energiatodistus-test-data]
[solita.etp.test-data.liite :as liite-test-data]
[solita.etp.test-data.laatija :as laatija-test-data]
[solita.etp.test-data.kayttaja :as kayttaja-test-data]
[solita.etp.whoami :as test-whoami]
Expand Down Expand Up @@ -385,4 +387,75 @@
(t/testing "The audit data for et-2 notes still exists."
(t/is (not (empty? (select-notes-audit energiatodistus-id-2)))))))


(t/deftest destroy-liite-test
(let [laatijat (laatija-test-data/generate-and-insert! 1)
laatija-id (-> laatijat keys sort first)
select-liitteet #(jdbc/query ts/*db* ["select * from liite where energiatodistus_id = ?" %])
select-liitteet-audit #(jdbc/query ts/*db* ["select * from audit.liite where energiatodistus_id = ?" %])
energiatodistukset (energiatodistus-test-data/generate-and-insert!
2
2013
true
laatija-id)
[energiatodistus-id-1 energiatodistus-id-2] (-> energiatodistukset keys sort)
file-liitteet-1 (liite-test-data/generate-and-insert-files! 2
laatija-id
energiatodistus-id-1)
link-liitteet-1 (liite-test-data/generate-and-insert-links! 2
laatija-id
energiatodistus-id-1)
file-liitteet-2 (liite-test-data/generate-and-insert-files! 2
laatija-id
energiatodistus-id-2)
link-liitteet-2 (liite-test-data/generate-and-insert-links! 2
laatija-id
energiatodistus-id-2)
file-liitteet-keys-1 (->> file-liitteet-1
keys
(map #(liite-service/file-key %)))
link-liitteet-keys-1 (->> link-liitteet-1
keys
(map #(liite-service/file-key %)))
file-liitteet-keys-2 (->> file-liitteet-2
keys
(map #(liite-service/file-key %)))
link-liitteet-keys-2 (->> link-liitteet-2
keys
(map #(liite-service/file-key %)))
file-exists? #(file-service/file-exists? ts/*aws-s3-client* %)]

(t/testing "The liitteet exist before deletion"
(let [liitteet-1-in-db (select-liitteet energiatodistus-id-1)
liitteet-2-in-db (select-liitteet energiatodistus-id-2)]
(t/is (every? file-exists? file-liitteet-keys-1))
(t/is (every? file-exists? file-liitteet-keys-2))

(t/is (not-any? file-exists? link-liitteet-keys-1))
(t/is (not-any? file-exists? link-liitteet-keys-2))

(t/is (= 4 (count liitteet-1-in-db)))
(t/is (= 4 (count liitteet-2-in-db)))))

(t/testing "Audit for liitteet exist before deletion"
(t/is (not-empty (select-liitteet-audit energiatodistus-id-1)))
(t/is (not-empty (select-liitteet-audit energiatodistus-id-2))))

;; Destroy et-1 liiteet
(#'service/destroy-energiatodistus-liitteet ts/*db* ts/*aws-s3-client* energiatodistus-id-1)

(t/testing "The liitteet for energiatodistus-1 are deleted but exist for energiatodistus-2"
(let [liitteet-1-in-db (select-liitteet energiatodistus-id-1)
liitteet-2-in-db (select-liitteet energiatodistus-id-2)]

(t/is (not-any? file-exists? file-liitteet-keys-1))
(t/is (every? file-exists? file-liitteet-keys-2))

(t/is (not-any? file-exists? link-liitteet-keys-1))
(t/is (not-any? file-exists? link-liitteet-keys-2))

(t/is (= 0 (count liitteet-1-in-db)))
(t/is (= 4 (count liitteet-2-in-db)))))

(t/testing "Audit for energiatodistus-1's liitteet do not exist after deletion"
(t/is (empty? (select-liitteet-audit energiatodistus-id-1)))
(t/is (not-empty (select-liitteet-audit energiatodistus-id-2))))))

0 comments on commit a932eb0

Please sign in to comment.