From 89fb60bab51ab2510d070f3eb150c338b1908924 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Thu, 21 Aug 2025 16:49:44 +0200 Subject: [PATCH] Use account loading stored procedure for Account construction. --- brmbar3/brmbar/Account.py | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/brmbar3/brmbar/Account.py b/brmbar3/brmbar/Account.py index 3a25170..f1310da 100644 --- a/brmbar3/brmbar/Account.py +++ b/brmbar3/brmbar/Account.py @@ -20,24 +20,22 @@ class Account: @classmethod def load_by_barcode(cls, db, barcode): logger.debug("load_by_barcode: '%s'", barcode) - res = db.execute_and_fetch( - "SELECT account FROM barcodes WHERE barcode = %s", [barcode] - ) - if res is None: - return None - id = res[0] - return cls.load(db, id=id) + account_id, account_name, account_acctype, currency_id, currency_name = db_execute_and_fetch( + "SELECT account_id, account_name, account_acctype, currency_id, currency_name + FROM public.account_class_initialization_data('by_barcode', NULL, %s)", + [barcode]) + currency = Currency(db, currency_id, currency_name) + return cls(db, account_id, account_name, currency, account_acctype) @classmethod def load(cls, db, id=None): """Constructor for existing account""" - if id is None: - raise NameError("Account.load(): Specify id") - name, currid, acctype = db.execute_and_fetch( - "SELECT name, currency, acctype FROM accounts WHERE id = %s", [id] - ) - currency = Currency.load(db, id=currid) - return cls(db, name=name, id=id, currency=currency, acctype=acctype) + account_id, account_name, account_acctype, currency_id, currency_name = db_execute_and_fetch( + "SELECT account_id, account_name, account_acctype, currency_id, currency_name + FROM public.account_class_initialization_data('by_id', %s, NULL)", + [id]) + currency = Currency(db, currency_id, currency_name) + return cls(db, account_id, account_name, currency, account_acctype) @classmethod def create(cls, db, name, currency, acctype):