Skip to content

Enforce ErrInsufficientBalance for Asset and Expense accounts#2

Merged
raphi011 merged 2 commits into
claude/banking-system-go-1v6MGfrom
claude/account-features-cleanup-oSTHT
Feb 28, 2026
Merged

Enforce ErrInsufficientBalance for Asset and Expense accounts#2
raphi011 merged 2 commits into
claude/banking-system-go-1v6MGfrom
claude/account-features-cleanup-oSTHT

Conversation

@raphi011

Copy link
Copy Markdown
Owner

No description provided.

Add defined types (LedgerID, SubledgerID, AccountID, TransactionID,
EntryID, HoldID) so map keys and method parameters clearly communicate
what kind of identifier they expect. These are defined types (not
aliases), giving compile-time safety against mixing e.g. a HoldID
where an AccountID is expected.

Change all public Service methods to return value types instead of
pointers to internal state. This prevents callers from accidentally
mutating the service's data. Transaction returns use a deep copy
helper (copyTransaction) that copies the Entries slice and Metadata
map. GetSnapshot now returns ErrSnapshotNotFound instead of nil when
no snapshot exists for the given parameters.

https://claude.ai/code/session_01947Cs6jqVPDDzmAqQMoB35
PostTransaction and CreateHold now check that the available balance
(book minus active holds) would not go negative for Asset and Expense
accounts. Liability, Equity, and Revenue accounts are not checked.

https://claude.ai/code/session_01947Cs6jqVPDDzmAqQMoB35
@raphi011
raphi011 merged commit a7da9da into claude/banking-system-go-1v6MG Feb 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants