From d0421332d707fb5d9ab549f9d27ced3f7b8800cf Mon Sep 17 00:00:00 2001 From: "Karl O. Pinc" Date: Fri, 16 Aug 2024 17:59:52 -0500 Subject: [PATCH] Build result rows to be given to the template --- src/pgwui_sql/views/sql.py | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/src/pgwui_sql/views/sql.py b/src/pgwui_sql/views/sql.py index 8a64811..e55733a 100644 --- a/src/pgwui_sql/views/sql.py +++ b/src/pgwui_sql/views/sql.py @@ -79,10 +79,30 @@ class SQLForm(pgwui_core.forms.UploadFormBaseMixin, @attrs.define() class SQLResult(): - pass + data = attrs.field(default=None) + type = attrs.field(default=None) + + def build_statusmessage_row(self, cur): + self.type = 'status' + self.data = cur.statusmessage + return self + + def build_rowcount_row(self, cur): + self.type = 'status' + self.data = f'{cur.rowcount} rows affected' + return self + + def build_data_row(self, data): + self.type = 'data' + self.data = data + return self + + def build_header_row(self, cur): + self.type = 'header' + self.data = [col.name for col in cur.description] + return self -@attrs.define() class ExecuteSQL(pgwui_core.core.DataLineProcessor): ''' Attributes: @@ -104,12 +124,17 @@ class ExecuteSQL(pgwui_core.core.DataLineProcessor): cur = self.cur cur.execute(self.uf.data) + sql_results = self.uh.sql_results nextset = True while nextset is True: + first = True while (row := cur.fetchone()) is not None: - sql_result = SQLResult() - sql_result.build(cur, row) - self.uh.sql_results.append(sql_result) + if first: + sql_results.append(SQLResult().build_header_row(cur)) + first = False + sql_results.append(SQLResult().build_data_row(row)) + sql_results.append(SQLResult().build_statusmessage_row(cur)) + sql_results.append(SQLResult().build_rowcount_row(cur)) nextset = cur.nextset() -- 2.34.1