Skip to content

feat(domain): hardened entity model, rich domain behavior, BigDecimal, financials, and constructor injection (Phase 2A) - #4

Merged
shashankch merged 1 commit into
mainfrom
feat/phase-2a-entity-hardening
Aug 1, 2026
Merged

feat(domain): hardened entity model, rich domain behavior, BigDecimal, financials, and constructor injection (Phase 2A)#4
shashankch merged 1 commit into
mainfrom
feat/phase-2a-entity-hardening

Conversation

@shashankch

Copy link
Copy Markdown
Owner
  • Replaced Double with BigDecimal (precision = 19, scale = 4) for monetary fields in User and Transaction entities
  • Implemented rich domain methods User.debit() and User.credit() encapsulating balance invariants
  • Added audit timestamps (@CreationTimestamp, @UpdateTimestamp) and optimistic locking (@Version) to User
  • Added TransactionStatus and TransactionType enums
  • Added JPA @manytoone relationships between Transaction and User with denormalized UPI strings
  • Added UUID referenceId auto-generation on Transaction (@PrePersist)
  • Refactored UserService, TransactionService, UserController, and TransactionController to constructor injection
  • Added unit test suite for User domain logic and Transaction reference ID (UserTest, TransactionTest)
  • Added ADR-001 (BigDecimal), ADR-002 (Constructor injection), ADR-003 (Rich Domain Model)
  • Updated ARCHITECTURE.md, ROADMAP.md, CHANGELOG.md, and README.md

… financials, and constructor injection (Phase 2A)

- Replaced Double with BigDecimal (precision = 19, scale = 4) for monetary fields in User and Transaction entities
- Implemented rich domain methods User.debit() and User.credit() encapsulating balance invariants
- Added audit timestamps (@CreationTimestamp, @UpdateTimestamp) and optimistic locking (@Version) to User
- Added TransactionStatus and TransactionType enums
- Added JPA @manytoone relationships between Transaction and User with denormalized UPI strings
- Added UUID referenceId auto-generation on Transaction (@PrePersist)
- Refactored UserService, TransactionService, UserController, and TransactionController to constructor injection
- Added unit test suite for User domain logic and Transaction reference ID (UserTest, TransactionTest)
- Added ADR-001 (BigDecimal), ADR-002 (Constructor injection), ADR-003 (Rich Domain Model)
- Updated ARCHITECTURE.md, ROADMAP.md, CHANGELOG.md, and README.md
@shashankch
shashankch marked this pull request as draft July 31, 2026 19:09
@shashankch
shashankch marked this pull request as ready for review July 31, 2026 20:16
@shashankch shashankch self-assigned this Aug 1, 2026
@shashankch
shashankch merged commit e251f14 into main Aug 1, 2026
1 check passed
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.

1 participant