]> git.ipfire.org Git - pbs.git/commitdiff
packages: Make deleting them similar to deleting builds/jobs
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 18 Oct 2022 12:15:29 +0000 (12:15 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 18 Oct 2022 12:15:29 +0000 (12:15 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/builds.py
src/buildservice/jobs.py
src/buildservice/packages.py
src/database.sql

index 584dbb3b4c5a7351f76f47cd0f8435d5dd2edad1..86e48f9a75b690b34e32fff2f8207983b19cccaa 100644 (file)
@@ -299,7 +299,7 @@ class Build(base.DataObject):
                        self._set_attribute("deleted_by", user)
 
                # Delete source package
-               self.pkg.delete()
+               await self.pkg.delete()
 
        @property
        def uuid(self):
index d3bb72ed4c7e831b7e51cf0fb464d6636be22fa1..7950fb3c3fc273d9749ae7726f79ee0259c41ed9 100644 (file)
@@ -304,8 +304,9 @@ class Job(base.DataObject):
                        Deletes a job
                """
                # Delete all binary packages
-               for pkg in self.packages:
-                       pkg.delete()
+               await asyncio.gather(
+                       *(pkg.delete() for pkg in self.packages),
+               )
 
                # Mark as deleted
                self._set_attribute_now("deleted_at")
index b8307dfd55f570debe7916c2c1ec376c3db595b9..09914674534f7769bf667b94592a98bde0a8d4d7 100644 (file)
@@ -47,12 +47,13 @@ class Packages(base.Object):
                        FROM
                                packages
                        WHERE
-                               deleted IS FALSE
+                               deleted_at IS NULL
                        AND
                                arch = %s
                        ORDER BY
-                               name, created_at DESC""",
-                       "src",
+                               name,
+                               created_at DESC
+                       """, "src",
                )
 
        def get_by_id(self, pkg_id):
@@ -66,10 +67,10 @@ class Packages(base.Object):
                        FROM
                                packages
                        WHERE
-                               deleted IS FALSE
+                               deleted_at IS NULL
                        AND
-                               uuid = %s""",
-                       uuid,
+                               uuid = %s
+                       """, uuid,
                )
 
        async def create(self, archive):
@@ -169,7 +170,7 @@ class Packages(base.Object):
                        LEFT JOIN
                                packages ON search_index.package_id = packages.id
                        WHERE
-                               packages.deleted IS FALSE
+                               packages.deleted_at IS NULL
                        AND
                                search_index.document @@ websearch_to_tsquery('english', %s)
                        ORDER BY
@@ -223,8 +224,11 @@ class Package(base.DataObject):
 
                return NotImplemented
 
-       def delete(self):
-               self._set_attribute("deleted", True)
+       async def delete(self, user=None):
+               # Mark as deleted
+               self._set_attribute_now("deleted_at")
+               if user:
+                       self._set_attribute("deleted_by", user)
 
        @property
        def uuid(self):
index 0e9eda28ada2acf70aff51912fd580e2c9df06e6..1f57fb89260a091cd87985b22323d982fb1ddc65 100644 (file)
@@ -625,9 +625,10 @@ CREATE TABLE public.packages (
     recommends text[] DEFAULT ARRAY[]::text[] NOT NULL,
     suggests text[] DEFAULT ARRAY[]::text[] NOT NULL,
     created_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
-    deleted boolean DEFAULT false NOT NULL,
     digest_type text NOT NULL,
-    digest bytea NOT NULL
+    digest bytea NOT NULL,
+    deleted_at timestamp without time zone,
+    deleted_by integer
 );
 
 
@@ -688,7 +689,7 @@ CREATE VIEW public.package_search_index_generator AS
             packages.summary,
             packages.description
            FROM public.packages
-          WHERE ((packages.deleted IS FALSE) AND (packages.arch = 'src'::text))
+          WHERE ((packages.deleted_at IS NULL) AND (packages.arch = 'src'::text))
           ORDER BY packages.name, packages.created_at DESC
         )
  SELECT p.id AS package_id,
@@ -1602,20 +1603,6 @@ CREATE UNIQUE INDEX package_search_index_unique ON public.package_search_index U
 CREATE INDEX packages_name ON public.packages USING btree (name);
 
 
---
--- Name: packages_src_created_at; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX packages_src_created_at ON public.packages USING btree (created_at DESC) WHERE ((deleted IS FALSE) AND (arch = 'src'::text));
-
-
---
--- Name: packages_uuid; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE UNIQUE INDEX packages_uuid ON public.packages USING btree (uuid) WHERE (deleted IS FALSE);
-
-
 --
 -- Name: repo_builds_build_id; Type: INDEX; Schema: public; Owner: -
 --
@@ -1857,6 +1844,14 @@ ALTER TABLE ONLY public.packages
     ADD CONSTRAINT packages_commit_id FOREIGN KEY (commit_id) REFERENCES public.sources_commits(id);
 
 
+--
+-- Name: packages packages_deleted_by; Type: FK CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY public.packages
+    ADD CONSTRAINT packages_deleted_by FOREIGN KEY (deleted_by) REFERENCES public.users(id);
+
+
 --
 -- Name: repo_builds repo_builds_added_by; Type: FK CONSTRAINT; Schema: public; Owner: -
 --