From 82d084c6df75e63f081f57f984f5dc8a8a2bb18f Mon Sep 17 00:00:00 2001 From: bodymindarts Date: Fri, 7 Feb 2025 10:36:12 +0100 Subject: [PATCH] chore: add entries.list_for_account_id --- ...0e64602f6fb5b916dc700f2bb6c58c55b445e.json | 43 +++++++++++++++++++ ...4da0e5d0d8d7bbc77d91721b5286b30f2ac71.json | 43 +++++++++++++++++++ ...b3dd649758b5afcf70feb2a6eff7d69925bfc.json | 20 +++++++++ ...d2ec775e0d6db6f28d939b7b6b2068f52af8e.json | 42 ++++++++++++++++++ ...5360386d079d1335cea56585e70b84e91df60.json | 42 ++++++++++++++++++ cala-ledger/src/entry/mod.rs | 18 +++++++- cala-ledger/src/entry/repo.rs | 2 +- cala-ledger/src/ledger/mod.rs | 4 ++ ...0e64602f6fb5b916dc700f2bb6c58c55b445e.json | 43 +++++++++++++++++++ ...4da0e5d0d8d7bbc77d91721b5286b30f2ac71.json | 43 +++++++++++++++++++ ...b3dd649758b5afcf70feb2a6eff7d69925bfc.json | 20 +++++++++ ...d2ec775e0d6db6f28d939b7b6b2068f52af8e.json | 42 ++++++++++++++++++ ...5360386d079d1335cea56585e70b84e91df60.json | 42 ++++++++++++++++++ 13 files changed, 402 insertions(+), 2 deletions(-) create mode 100644 cala-ledger/.sqlx/query-2b871028a18fe2a6a586e89752d0e64602f6fb5b916dc700f2bb6c58c55b445e.json create mode 100644 cala-ledger/.sqlx/query-526738af6d85232a4cf18dbac5d4da0e5d0d8d7bbc77d91721b5286b30f2ac71.json create mode 100644 cala-ledger/.sqlx/query-6bae2f6ec3f8d5295b935cef18cb3dd649758b5afcf70feb2a6eff7d69925bfc.json create mode 100644 cala-ledger/.sqlx/query-8d0933e1a3638115cf4968b6972d2ec775e0d6db6f28d939b7b6b2068f52af8e.json create mode 100644 cala-ledger/.sqlx/query-c09c34d3b19e38e1997541a0df25360386d079d1335cea56585e70b84e91df60.json create mode 100644 cala-server/.sqlx/query-2b871028a18fe2a6a586e89752d0e64602f6fb5b916dc700f2bb6c58c55b445e.json create mode 100644 cala-server/.sqlx/query-526738af6d85232a4cf18dbac5d4da0e5d0d8d7bbc77d91721b5286b30f2ac71.json create mode 100644 cala-server/.sqlx/query-6bae2f6ec3f8d5295b935cef18cb3dd649758b5afcf70feb2a6eff7d69925bfc.json create mode 100644 cala-server/.sqlx/query-8d0933e1a3638115cf4968b6972d2ec775e0d6db6f28d939b7b6b2068f52af8e.json create mode 100644 cala-server/.sqlx/query-c09c34d3b19e38e1997541a0df25360386d079d1335cea56585e70b84e91df60.json diff --git a/cala-ledger/.sqlx/query-2b871028a18fe2a6a586e89752d0e64602f6fb5b916dc700f2bb6c58c55b445e.json b/cala-ledger/.sqlx/query-2b871028a18fe2a6a586e89752d0e64602f6fb5b916dc700f2bb6c58c55b445e.json new file mode 100644 index 00000000..4469d358 --- /dev/null +++ b/cala-ledger/.sqlx/query-2b871028a18fe2a6a586e89752d0e64602f6fb5b916dc700f2bb6c58c55b445e.json @@ -0,0 +1,43 @@ +{ + "db_name": "PostgreSQL", + "query": "WITH entities AS (SELECT account_id, created_at, id FROM cala_entries WHERE ((account_id = $1) AND (COALESCE((created_at, id) < ($4, $3), $3 IS NULL))) ORDER BY created_at DESC, id DESC LIMIT $2) SELECT i.id AS \"entity_id: EntryId\", e.sequence, e.event, e.recorded_at FROM entities i JOIN cala_entry_events e ON i.id = e.id ORDER BY i.created_at desc, i.id desc, i.id, e.sequence", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "entity_id: EntryId", + "type_info": "Uuid" + }, + { + "ordinal": 1, + "name": "sequence", + "type_info": "Int4" + }, + { + "ordinal": 2, + "name": "event", + "type_info": "Jsonb" + }, + { + "ordinal": 3, + "name": "recorded_at", + "type_info": "Timestamptz" + } + ], + "parameters": { + "Left": [ + "Uuid", + "Int8", + "Uuid", + "Timestamptz" + ] + }, + "nullable": [ + false, + false, + false, + false + ] + }, + "hash": "2b871028a18fe2a6a586e89752d0e64602f6fb5b916dc700f2bb6c58c55b445e" +} diff --git a/cala-ledger/.sqlx/query-526738af6d85232a4cf18dbac5d4da0e5d0d8d7bbc77d91721b5286b30f2ac71.json b/cala-ledger/.sqlx/query-526738af6d85232a4cf18dbac5d4da0e5d0d8d7bbc77d91721b5286b30f2ac71.json new file mode 100644 index 00000000..13a53d7b --- /dev/null +++ b/cala-ledger/.sqlx/query-526738af6d85232a4cf18dbac5d4da0e5d0d8d7bbc77d91721b5286b30f2ac71.json @@ -0,0 +1,43 @@ +{ + "db_name": "PostgreSQL", + "query": "WITH entities AS (SELECT account_id, created_at, id FROM cala_entries WHERE ((account_id = $1) AND (COALESCE((created_at, id) > ($4, $3), $3 IS NULL))) ORDER BY created_at ASC, id ASC LIMIT $2) SELECT i.id AS \"entity_id: EntryId\", e.sequence, e.event, e.recorded_at FROM entities i JOIN cala_entry_events e ON i.id = e.id ORDER BY i.created_at asc, i.id asc, i.id, e.sequence", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "entity_id: EntryId", + "type_info": "Uuid" + }, + { + "ordinal": 1, + "name": "sequence", + "type_info": "Int4" + }, + { + "ordinal": 2, + "name": "event", + "type_info": "Jsonb" + }, + { + "ordinal": 3, + "name": "recorded_at", + "type_info": "Timestamptz" + } + ], + "parameters": { + "Left": [ + "Uuid", + "Int8", + "Uuid", + "Timestamptz" + ] + }, + "nullable": [ + false, + false, + false, + false + ] + }, + "hash": "526738af6d85232a4cf18dbac5d4da0e5d0d8d7bbc77d91721b5286b30f2ac71" +} diff --git a/cala-ledger/.sqlx/query-6bae2f6ec3f8d5295b935cef18cb3dd649758b5afcf70feb2a6eff7d69925bfc.json b/cala-ledger/.sqlx/query-6bae2f6ec3f8d5295b935cef18cb3dd649758b5afcf70feb2a6eff7d69925bfc.json new file mode 100644 index 00000000..60f58c60 --- /dev/null +++ b/cala-ledger/.sqlx/query-6bae2f6ec3f8d5295b935cef18cb3dd649758b5afcf70feb2a6eff7d69925bfc.json @@ -0,0 +1,20 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT NOW()", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "now", + "type_info": "Timestamptz" + } + ], + "parameters": { + "Left": [] + }, + "nullable": [ + null + ] + }, + "hash": "6bae2f6ec3f8d5295b935cef18cb3dd649758b5afcf70feb2a6eff7d69925bfc" +} diff --git a/cala-ledger/.sqlx/query-8d0933e1a3638115cf4968b6972d2ec775e0d6db6f28d939b7b6b2068f52af8e.json b/cala-ledger/.sqlx/query-8d0933e1a3638115cf4968b6972d2ec775e0d6db6f28d939b7b6b2068f52af8e.json new file mode 100644 index 00000000..05544afd --- /dev/null +++ b/cala-ledger/.sqlx/query-8d0933e1a3638115cf4968b6972d2ec775e0d6db6f28d939b7b6b2068f52af8e.json @@ -0,0 +1,42 @@ +{ + "db_name": "PostgreSQL", + "query": "WITH entities AS (SELECT account_id, id FROM cala_entries WHERE ((account_id = $1) AND (COALESCE(id < $3, true))) ORDER BY id DESC LIMIT $2) SELECT i.id AS \"entity_id: EntryId\", e.sequence, e.event, e.recorded_at FROM entities i JOIN cala_entry_events e ON i.id = e.id ORDER BY i.id desc, i.id, e.sequence", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "entity_id: EntryId", + "type_info": "Uuid" + }, + { + "ordinal": 1, + "name": "sequence", + "type_info": "Int4" + }, + { + "ordinal": 2, + "name": "event", + "type_info": "Jsonb" + }, + { + "ordinal": 3, + "name": "recorded_at", + "type_info": "Timestamptz" + } + ], + "parameters": { + "Left": [ + "Uuid", + "Int8", + "Uuid" + ] + }, + "nullable": [ + false, + false, + false, + false + ] + }, + "hash": "8d0933e1a3638115cf4968b6972d2ec775e0d6db6f28d939b7b6b2068f52af8e" +} diff --git a/cala-ledger/.sqlx/query-c09c34d3b19e38e1997541a0df25360386d079d1335cea56585e70b84e91df60.json b/cala-ledger/.sqlx/query-c09c34d3b19e38e1997541a0df25360386d079d1335cea56585e70b84e91df60.json new file mode 100644 index 00000000..0da1a002 --- /dev/null +++ b/cala-ledger/.sqlx/query-c09c34d3b19e38e1997541a0df25360386d079d1335cea56585e70b84e91df60.json @@ -0,0 +1,42 @@ +{ + "db_name": "PostgreSQL", + "query": "WITH entities AS (SELECT account_id, id FROM cala_entries WHERE ((account_id = $1) AND (COALESCE(id > $3, true))) ORDER BY id ASC LIMIT $2) SELECT i.id AS \"entity_id: EntryId\", e.sequence, e.event, e.recorded_at FROM entities i JOIN cala_entry_events e ON i.id = e.id ORDER BY i.id asc, i.id, e.sequence", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "entity_id: EntryId", + "type_info": "Uuid" + }, + { + "ordinal": 1, + "name": "sequence", + "type_info": "Int4" + }, + { + "ordinal": 2, + "name": "event", + "type_info": "Jsonb" + }, + { + "ordinal": 3, + "name": "recorded_at", + "type_info": "Timestamptz" + } + ], + "parameters": { + "Left": [ + "Uuid", + "Int8", + "Uuid" + ] + }, + "nullable": [ + false, + false, + false, + false + ] + }, + "hash": "c09c34d3b19e38e1997541a0df25360386d079d1335cea56585e70b84e91df60" +} diff --git a/cala-ledger/src/entry/mod.rs b/cala-ledger/src/entry/mod.rs index 79a7b472..4db56b80 100644 --- a/cala-ledger/src/entry/mod.rs +++ b/cala-ledger/src/entry/mod.rs @@ -6,10 +6,15 @@ use sqlx::PgPool; #[cfg(feature = "import")] use crate::primitives::DataSourceId; -use crate::{ledger_operation::*, outbox::*, primitives::DataSource}; +use crate::{ + ledger_operation::*, + outbox::*, + primitives::{AccountId, DataSource}, +}; pub use entity::*; use error::*; +pub use repo::entry_cursor::EntriesByCreatedAtCursor; use repo::*; #[derive(Clone)] @@ -28,6 +33,17 @@ impl Entries { } } + pub async fn list_for_account_id( + &self, + account_id: AccountId, + query: es_entity::PaginatedQueryArgs, + direction: es_entity::ListDirection, + ) -> Result, EntryError> { + self.repo + .list_for_account_id_by_created_at(account_id, query, direction) + .await + } + pub(crate) async fn create_all_in_op( &self, db: &mut LedgerOperation<'_>, diff --git a/cala-ledger/src/entry/repo.rs b/cala-ledger/src/entry/repo.rs index cedcdc20..17f8243a 100644 --- a/cala-ledger/src/entry/repo.rs +++ b/cala-ledger/src/entry/repo.rs @@ -9,8 +9,8 @@ use super::{entity::*, error::*}; entity = "Entry", err = "EntryError", columns( + account_id(ty = "AccountId", list_for, update(persist = false)), journal_id(ty = "JournalId", update(persist = false)), - account_id(ty = "AccountId", update(persist = false)), transaction_id(ty = "TransactionId", update(persist = false)), data_source_id( ty = "DataSourceId", diff --git a/cala-ledger/src/ledger/mod.rs b/cala-ledger/src/ledger/mod.rs index 76155c8a..2d42e75d 100644 --- a/cala-ledger/src/ledger/mod.rs +++ b/cala-ledger/src/ledger/mod.rs @@ -134,6 +134,10 @@ impl CalaLedger { &self.balances } + pub fn entries(&self) -> &Entries { + &self.entries + } + pub fn transactions(&self) -> &Transactions { &self.transactions } diff --git a/cala-server/.sqlx/query-2b871028a18fe2a6a586e89752d0e64602f6fb5b916dc700f2bb6c58c55b445e.json b/cala-server/.sqlx/query-2b871028a18fe2a6a586e89752d0e64602f6fb5b916dc700f2bb6c58c55b445e.json new file mode 100644 index 00000000..4469d358 --- /dev/null +++ b/cala-server/.sqlx/query-2b871028a18fe2a6a586e89752d0e64602f6fb5b916dc700f2bb6c58c55b445e.json @@ -0,0 +1,43 @@ +{ + "db_name": "PostgreSQL", + "query": "WITH entities AS (SELECT account_id, created_at, id FROM cala_entries WHERE ((account_id = $1) AND (COALESCE((created_at, id) < ($4, $3), $3 IS NULL))) ORDER BY created_at DESC, id DESC LIMIT $2) SELECT i.id AS \"entity_id: EntryId\", e.sequence, e.event, e.recorded_at FROM entities i JOIN cala_entry_events e ON i.id = e.id ORDER BY i.created_at desc, i.id desc, i.id, e.sequence", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "entity_id: EntryId", + "type_info": "Uuid" + }, + { + "ordinal": 1, + "name": "sequence", + "type_info": "Int4" + }, + { + "ordinal": 2, + "name": "event", + "type_info": "Jsonb" + }, + { + "ordinal": 3, + "name": "recorded_at", + "type_info": "Timestamptz" + } + ], + "parameters": { + "Left": [ + "Uuid", + "Int8", + "Uuid", + "Timestamptz" + ] + }, + "nullable": [ + false, + false, + false, + false + ] + }, + "hash": "2b871028a18fe2a6a586e89752d0e64602f6fb5b916dc700f2bb6c58c55b445e" +} diff --git a/cala-server/.sqlx/query-526738af6d85232a4cf18dbac5d4da0e5d0d8d7bbc77d91721b5286b30f2ac71.json b/cala-server/.sqlx/query-526738af6d85232a4cf18dbac5d4da0e5d0d8d7bbc77d91721b5286b30f2ac71.json new file mode 100644 index 00000000..13a53d7b --- /dev/null +++ b/cala-server/.sqlx/query-526738af6d85232a4cf18dbac5d4da0e5d0d8d7bbc77d91721b5286b30f2ac71.json @@ -0,0 +1,43 @@ +{ + "db_name": "PostgreSQL", + "query": "WITH entities AS (SELECT account_id, created_at, id FROM cala_entries WHERE ((account_id = $1) AND (COALESCE((created_at, id) > ($4, $3), $3 IS NULL))) ORDER BY created_at ASC, id ASC LIMIT $2) SELECT i.id AS \"entity_id: EntryId\", e.sequence, e.event, e.recorded_at FROM entities i JOIN cala_entry_events e ON i.id = e.id ORDER BY i.created_at asc, i.id asc, i.id, e.sequence", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "entity_id: EntryId", + "type_info": "Uuid" + }, + { + "ordinal": 1, + "name": "sequence", + "type_info": "Int4" + }, + { + "ordinal": 2, + "name": "event", + "type_info": "Jsonb" + }, + { + "ordinal": 3, + "name": "recorded_at", + "type_info": "Timestamptz" + } + ], + "parameters": { + "Left": [ + "Uuid", + "Int8", + "Uuid", + "Timestamptz" + ] + }, + "nullable": [ + false, + false, + false, + false + ] + }, + "hash": "526738af6d85232a4cf18dbac5d4da0e5d0d8d7bbc77d91721b5286b30f2ac71" +} diff --git a/cala-server/.sqlx/query-6bae2f6ec3f8d5295b935cef18cb3dd649758b5afcf70feb2a6eff7d69925bfc.json b/cala-server/.sqlx/query-6bae2f6ec3f8d5295b935cef18cb3dd649758b5afcf70feb2a6eff7d69925bfc.json new file mode 100644 index 00000000..60f58c60 --- /dev/null +++ b/cala-server/.sqlx/query-6bae2f6ec3f8d5295b935cef18cb3dd649758b5afcf70feb2a6eff7d69925bfc.json @@ -0,0 +1,20 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT NOW()", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "now", + "type_info": "Timestamptz" + } + ], + "parameters": { + "Left": [] + }, + "nullable": [ + null + ] + }, + "hash": "6bae2f6ec3f8d5295b935cef18cb3dd649758b5afcf70feb2a6eff7d69925bfc" +} diff --git a/cala-server/.sqlx/query-8d0933e1a3638115cf4968b6972d2ec775e0d6db6f28d939b7b6b2068f52af8e.json b/cala-server/.sqlx/query-8d0933e1a3638115cf4968b6972d2ec775e0d6db6f28d939b7b6b2068f52af8e.json new file mode 100644 index 00000000..05544afd --- /dev/null +++ b/cala-server/.sqlx/query-8d0933e1a3638115cf4968b6972d2ec775e0d6db6f28d939b7b6b2068f52af8e.json @@ -0,0 +1,42 @@ +{ + "db_name": "PostgreSQL", + "query": "WITH entities AS (SELECT account_id, id FROM cala_entries WHERE ((account_id = $1) AND (COALESCE(id < $3, true))) ORDER BY id DESC LIMIT $2) SELECT i.id AS \"entity_id: EntryId\", e.sequence, e.event, e.recorded_at FROM entities i JOIN cala_entry_events e ON i.id = e.id ORDER BY i.id desc, i.id, e.sequence", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "entity_id: EntryId", + "type_info": "Uuid" + }, + { + "ordinal": 1, + "name": "sequence", + "type_info": "Int4" + }, + { + "ordinal": 2, + "name": "event", + "type_info": "Jsonb" + }, + { + "ordinal": 3, + "name": "recorded_at", + "type_info": "Timestamptz" + } + ], + "parameters": { + "Left": [ + "Uuid", + "Int8", + "Uuid" + ] + }, + "nullable": [ + false, + false, + false, + false + ] + }, + "hash": "8d0933e1a3638115cf4968b6972d2ec775e0d6db6f28d939b7b6b2068f52af8e" +} diff --git a/cala-server/.sqlx/query-c09c34d3b19e38e1997541a0df25360386d079d1335cea56585e70b84e91df60.json b/cala-server/.sqlx/query-c09c34d3b19e38e1997541a0df25360386d079d1335cea56585e70b84e91df60.json new file mode 100644 index 00000000..0da1a002 --- /dev/null +++ b/cala-server/.sqlx/query-c09c34d3b19e38e1997541a0df25360386d079d1335cea56585e70b84e91df60.json @@ -0,0 +1,42 @@ +{ + "db_name": "PostgreSQL", + "query": "WITH entities AS (SELECT account_id, id FROM cala_entries WHERE ((account_id = $1) AND (COALESCE(id > $3, true))) ORDER BY id ASC LIMIT $2) SELECT i.id AS \"entity_id: EntryId\", e.sequence, e.event, e.recorded_at FROM entities i JOIN cala_entry_events e ON i.id = e.id ORDER BY i.id asc, i.id, e.sequence", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "entity_id: EntryId", + "type_info": "Uuid" + }, + { + "ordinal": 1, + "name": "sequence", + "type_info": "Int4" + }, + { + "ordinal": 2, + "name": "event", + "type_info": "Jsonb" + }, + { + "ordinal": 3, + "name": "recorded_at", + "type_info": "Timestamptz" + } + ], + "parameters": { + "Left": [ + "Uuid", + "Int8", + "Uuid" + ] + }, + "nullable": [ + false, + false, + false, + false + ] + }, + "hash": "c09c34d3b19e38e1997541a0df25360386d079d1335cea56585e70b84e91df60" +}