From 5897484cb20553a178711aec44fcbd661d2770cd Mon Sep 17 00:00:00 2001 From: rand00 Date: Tue, 22 Feb 2022 13:16:42 +0100 Subject: [PATCH] Fixed that Builder_db_app.job_remove didn't take all related tables into account + Added a function for making a db-id into an int64 for printing --- bin/builder_db_app.ml | 2 ++ db/builder_db.ml | 11 +++++++++++ db/builder_db.mli | 5 +++++ db/representation.ml | 2 ++ 4 files changed, 20 insertions(+) diff --git a/bin/builder_db_app.ml b/bin/builder_db_app.ml index e04699d..ac2312c 100644 --- a/bin/builder_db_app.ml +++ b/bin/builder_db_app.ml @@ -164,6 +164,8 @@ let job_remove () datadir jobname = (Ok ()) builds in + let* () = Db.exec Builder_db.Access_list.remove_by_job job_id in + let* () = Db.exec Builder_db.Job_tag.remove_by_job job_id in let* () = Db.exec Builder_db.Job.remove job_id in Db.commit () in diff --git a/db/builder_db.ml b/db/builder_db.ml index 7acb787..1f15a7b 100644 --- a/db/builder_db.ml +++ b/db/builder_db.ml @@ -152,6 +152,12 @@ module Job_tag = struct Caqti_type.(tup2 (id `tag) (id `job)) Caqti_type.string "SELECT value FROM job_tag WHERE tag = ? AND job = ?" + + let remove_by_job = + Caqti_request.exec + (id `job) + "DELETE FROM job_tag WHERE job = ?" + end module Build_artifact = struct @@ -649,6 +655,11 @@ module Access_list = struct Caqti_type.(tup2 (id `user) (id `job)) "DELETE FROM access_list WHERE user = ? AND job = ?" + let remove_by_job = + Caqti_request.exec + (id `job) + "DELETE FROM access_list WHERE job = ?" + let remove_all_by_username = Caqti_request.exec Caqti_type.string diff --git a/db/builder_db.mli b/db/builder_db.mli index b25d5a0..3e16d60 100644 --- a/db/builder_db.mli +++ b/db/builder_db.mli @@ -8,6 +8,7 @@ module Rep : sig size : int; } + val id_to_int64 : 'a id -> int64 val untyped_id : untyped_id Caqti_type.t val id : 'a -> 'a id Caqti_type.t val uuid : Uuidm.t Caqti_type.t @@ -74,6 +75,8 @@ module Job_tag : sig ([`tag] id * string * [`job] id, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t val get_value : ([`tag] id * [`job] id, string, [< `Many | `One | `Zero > `Zero `One ]) Caqti_request.t + val remove_by_job : + ([`job] id, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t end module Build_artifact : sig @@ -176,6 +179,8 @@ module Access_list : sig ([`user] id * [`job] id, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t val remove : ([`user] id * [`job] id, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t + val remove_by_job : + ([`job] id, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t val remove_all_by_username : (string, unit, [< `Many | `One | `Zero > `Zero ]) Caqti_request.t end diff --git a/db/representation.ml b/db/representation.ml index a4e6886..6379042 100644 --- a/db/representation.ml +++ b/db/representation.ml @@ -26,6 +26,8 @@ type 'a id = untyped_id let id (_ : 'a) : 'a id Caqti_type.t = untyped_id let any_id : 'a id Caqti_type.t = untyped_id +let id_to_int64 (id : 'a id) : int64 = id + type file = { filepath : Fpath.t; localpath : Fpath.t;