]> git.ipfire.org Git - pbs.git/commitdiff
builds: Add some test to generate builds history on the fly
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 5 Jul 2022 15:53:30 +0000 (15:53 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 5 Jul 2022 15:55:17 +0000 (15:55 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/builds.py

index 2cacdf42be94d132487eaf517b41d214ffcb7923..a2b3e7a40179e74b0332a9b078c707fc62d48487 100644 (file)
@@ -597,6 +597,50 @@ class Build(base.DataObject):
 
        ## Logging stuff
 
+       def get_log(self, limit=None):
+               res = self.db.query("""
+                       WITH events AS (
+                               -- Build creation times
+                               SELECT
+                                       builds.id AS build_id,
+                                       builds.created_at AS t,
+                                       'created'::text AS event,
+                                       builds.owner_id AS by_user_id
+                               FROM
+                                       builds
+
+                               -- Build finish/failed times
+                               UNION ALL
+
+                               SELECT
+                                       builds.id AS build_id,
+                                       builds.finished_at AS t,
+                                       CASE
+                                               WHEN builds.failed IS TRUE
+                                               THEN 'failed'::text
+                                               ELSE 'finished'::text
+                                       END AS event,
+                                       NULL AS by_user_id
+                               FROM
+                                       builds
+                               WHERE
+                                       builds.finished_at IS NOT NULL
+                       )
+
+                       -- Sort everything in reverse order
+                       SELECT
+                               *
+                       FROM
+                               events
+                       WHERE
+                               build_id = %s
+                       ORDER BY
+                               t DESC""",
+                       self.id,
+               )
+
+               return res # XXX automatically expand all those IDs
+
        def get_log(self, comments=True, repo=True, limit=None):
                entries = []