From: Michael Tremer Date: Mon, 17 Oct 2022 16:12:39 +0000 (+0000) Subject: builds: Store timestamp when a build is being deleted X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7ff8f45a9d1c762b0895aca07fff546986992813;p=pbs.git builds: Store timestamp when a build is being deleted Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/builds.py b/src/buildservice/builds.py index 17f21bda..e112bf30 100644 --- a/src/buildservice/builds.py +++ b/src/buildservice/builds.py @@ -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() diff --git a/src/database.sql b/src/database.sql index 6b5a694d..a702586b 100644 --- a/src/database.sql +++ b/src/database.sql @@ -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: - --