diff options
| author | stuppie | 2026-10-22 17:27:27 -0600 |
|---|---|---|
| committer | stuppie | 2026-10-22 17:27:27 -0600 |
| commit | 19d3c88b61ea60cc11876c868f9b6fddf883a2ce (patch) | |
| tree | d1b039c0a8cbc02dc6e147f9e8cfe44af5fd2af3 | |
| parent | 9e4a5669ba162479a64e553f26bf9b0ffd520e01 (diff) | |
| download | generalresearch-19d3c88b61ea60cc11876c868f9b6fddf883a2ce.tar.gz generalresearch-19d3c88b61ea60cc11876c868f9b6fddf883a2ce.zip | |
use validate_pagination helper and clean up a little
| -rw-r--r-- | generalresearch/managers/thl/ledger_manager/ledger.py | 52 |
1 files changed, 18 insertions, 34 deletions
diff --git a/generalresearch/managers/thl/ledger_manager/ledger.py b/generalresearch/managers/thl/ledger_manager/ledger.py index 1ed81a7..eaff55c 100644 --- a/generalresearch/managers/thl/ledger_manager/ledger.py +++ b/generalresearch/managers/thl/ledger_manager/ledger.py @@ -132,6 +132,8 @@ class LedgerManagerBasePostgres(PostgresManager, RedisManager): class LedgerTransactionManager(LedgerManagerBasePostgres): + DEFAULT_PAGE_SIZE = 100 + def create_tx( self, entries: list[LedgerEntry], @@ -516,7 +518,7 @@ class LedgerTransactionManager(LedgerManagerBasePostgres): time_start=time_start, time_end=time_end, metadata_key=metadata_key, - metadata_value=metadata_value + metadata_value=metadata_value, ) ltm_join = ( """JOIN ledger_transactionmetadata ltm @@ -631,6 +633,7 @@ class LedgerTransactionManager(LedgerManagerBasePostgres): order_by: str | None = "created,tag", ) -> tuple[list[LedgerTransaction], int]: """ + Return transactions touching an account and their filtered total If time_start and/or time_end are passed, the txs are filtered to include only that range. - time_start is optional, default = beginning of time @@ -659,22 +662,10 @@ class LedgerTransactionManager(LedgerManagerBasePostgres): metadata_key=metadata_key, metadata_value=metadata_value, ) - ltm_join = ( - """JOIN ledger_transactionmetadata ltm - ON ltm.transaction_id = lt.id""" - if metadata_key is not None - else "" - ) - + pagination_sql = "" + total: int | None = None if page is not None: - assert type(page) is int - assert page >= 1, "page starts at 1" - size = size if size is not None else 100 - assert type(size) is int - assert 1 <= size <= 100 - params["offset"] = (page - 1) * size - params["limit"] = size - paginated_filter_str = " LIMIT %(limit)s OFFSET %(offset)s" + pagination_sql = self.validate_pagination(page=page, size=size) total = self.get_tx_filtered_by_account_count( account_uuid=account_uuid, time_start=time_start, @@ -682,12 +673,12 @@ class LedgerTransactionManager(LedgerManagerBasePostgres): metadata_key=metadata_key, metadata_value=metadata_value, ) - else: - paginated_filter_str = "" - # Don't need to do a count if we aren't paginating - total = None - - order_by_str = parse_order_by(order_by) + order_by_str = parse_order_by(order_by or "created,tag") + metadata_join = ( + "JOIN ledger_transactionmetadata ltm ON ltm.transaction_id = lt.id" + if metadata_key is not None + else "" + ) res = self.pg_config.execute_sql_query( query=f""" @@ -696,11 +687,11 @@ class LedgerTransactionManager(LedgerManagerBasePostgres): FROM ledger_transaction lt JOIN ledger_entry le ON le.transaction_id = lt.id - {ltm_join} + {metadata_join} {filter_str} GROUP BY lt.id, lt.created {order_by_str} - {paginated_filter_str} + {pagination_sql} ) SELECT lt.id AS transaction_id, @@ -709,23 +700,16 @@ class LedgerTransactionManager(LedgerManagerBasePostgres): lt.tag, meta.key_value_pairs, entries.entries_json - FROM tx_ids t JOIN ledger_transaction lt ON lt.id = t.id - {FULL_TX_JOINS} - - {order_by_str}; - """, + {order_by_str} + """, params=params, ) if total is None: total = len(res) - - return ( - self.process_get_tx_mysql_rows_json(res), - total, - ) + return self.process_get_tx_mysql_rows_json(res), total def get_tx_filtered_by_metadata( self, |
