aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstuppie2026-10-22 17:27:27 -0600
committerstuppie2026-10-22 17:27:27 -0600
commit19d3c88b61ea60cc11876c868f9b6fddf883a2ce (patch)
treed1b039c0a8cbc02dc6e147f9e8cfe44af5fd2af3
parent9e4a5669ba162479a64e553f26bf9b0ffd520e01 (diff)
downloadgeneralresearch-19d3c88b61ea60cc11876c868f9b6fddf883a2ce.tar.gz
generalresearch-19d3c88b61ea60cc11876c868f9b6fddf883a2ce.zip
use validate_pagination helper and clean up a little
-rw-r--r--generalresearch/managers/thl/ledger_manager/ledger.py52
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,