]> git.ipfire.org Git - pbs.git/commitdiff
builds: Store timestamp when a build is being deleted
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 17 Oct 2022 16:12:39 +0000 (16:12 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 17 Oct 2022 16:12:39 +0000 (16:12 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/builds.py
src/database.sql

index 17f21bda0a5a5713a4924264d5216990fd0b8f05..e112bf30d0a2bd4001f299424ff126c946a7b8c1 100644 (file)
@@ -274,8 +274,10 @@ class Build(base.DataObject):
                for job in self.jobs + self.test_jobs:
                        job.delete()
 
-               self._set_attribute("deleted", True)
-               # XXX TODO add who deleted this build
+               # Mark as deleted
+               self._set_attribute_now("deleted_at")
+               if user:
+                       self._set_attribute("deleted_by", user)
 
                # Delete source package
                self.pkg.delete()
index 6b5a694d43a2881a2020c6ba05475d93e20a83d4..a702586bc22f9ea38ff40eb99248df92b2dee1ae 100644 (file)
@@ -170,10 +170,11 @@ CREATE TABLE public.builds (
     build_repo_id integer NOT NULL,
     owner_id integer,
     priority integer DEFAULT 0 NOT NULL,
-    deleted boolean DEFAULT false NOT NULL,
     bug_ids integer[] DEFAULT ARRAY[]::integer[] NOT NULL,
     finished_at timestamp without time zone,
-    failed boolean DEFAULT false NOT NULL
+    failed boolean DEFAULT false NOT NULL,
+    deleted_at timestamp without time zone,
+    deleted_by integer
 );
 
 
@@ -1021,13 +1022,13 @@ CREATE VIEW public.user_disk_usages AS
             packages.size
            FROM (public.builds
              LEFT JOIN public.packages ON ((builds.pkg_id = packages.id)))
-          WHERE ((builds.deleted IS FALSE) AND (builds.owner_id IS NOT NULL))
+          WHERE ((builds.deleted_at IS NULL) AND (builds.owner_id IS NOT NULL))
         UNION ALL
          SELECT builds.owner_id,
             jobs.log_size
            FROM (public.jobs
              LEFT JOIN public.builds ON ((builds.id = jobs.build_id)))
-          WHERE ((builds.deleted IS FALSE) AND (jobs.deleted IS FALSE) AND (builds.owner_id IS NOT NULL) AND (jobs.log_size IS NOT NULL))
+          WHERE ((builds.deleted_at IS NULL) AND (jobs.deleted IS FALSE) AND (builds.owner_id IS NOT NULL) AND (jobs.log_size IS NOT NULL))
         )
  SELECT objects.user_id,
     sum(objects.size) AS disk_usage
@@ -1470,21 +1471,21 @@ CREATE UNIQUE INDEX builders_name ON public.builders USING btree (name) WHERE (d
 -- Name: builds_created_at; Type: INDEX; Schema: public; Owner: -
 --
 
-CREATE INDEX builds_created_at ON public.builds USING btree (created_at DESC);
+CREATE INDEX builds_created_at ON public.builds USING btree (created_at DESC) WHERE (deleted_at IS NULL);
 
 
 --
 -- Name: builds_pkg_id; Type: INDEX; Schema: public; Owner: -
 --
 
-CREATE INDEX builds_pkg_id ON public.builds USING btree (pkg_id) WHERE (deleted IS FALSE);
+CREATE INDEX builds_pkg_id ON public.builds USING btree (pkg_id) WHERE (deleted_at IS NULL);
 
 
 --
 -- Name: builds_uuid; Type: INDEX; Schema: public; Owner: -
 --
 
-CREATE UNIQUE INDEX builds_uuid ON public.builds USING btree (uuid) WHERE (deleted IS FALSE);
+CREATE UNIQUE INDEX builds_uuid ON public.builds USING btree (uuid) WHERE (deleted_at IS NULL);
 
 
 --
@@ -1782,6 +1783,14 @@ ALTER TABLE ONLY public.build_comments
     ADD CONSTRAINT builds_comments_user_id FOREIGN KEY (user_id) REFERENCES public.users(id);
 
 
+--
+-- Name: builds builds_deleted_by; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.builds
+    ADD CONSTRAINT builds_deleted_by FOREIGN KEY (deleted_by) REFERENCES public.users(id);
+
+
 --
 -- Name: builds builds_owner_id; Type: FK CONSTRAINT; Schema: public; Owner: -
 --