Library Module
The Library module demonstrates Bus Mode (CQRS) with full CRUD operations for book management. It showcases Commands, Queries, Handlers, Domain Events, and Repository implementations.
Domain Layer
Entity: Book
The Book entity uses Value Objects and an enum for status:
Title- Book title with validationAuthor- Author name with validationISBN- ISBN-10/ISBN-13 format validationBookStatus-AvailableorBorrowed
Commands (Write Operations)
| Command | Purpose |
|---|---|
CreateBookCommand | Create a new book |
UpdateBookCommand | Update book details |
DeleteBookCommand | Remove a book |
UpdateBookStatusCommand | Change book status |
Queries (Read Operations)
| Query | Purpose | Cache TTL |
|---|---|---|
ListBooksQuery | Get all books | 60s |
DetailBookQuery | Get single book | 300s |
CreateBookQuery | Data for create form | - |
UpdateBookQuery | Data for edit form | - |
ListBooksQuery and DetailBookQuery implement CacheableQueryInterface for automatic response caching via CachedQueryBus.
Domain Events
BookCreatedEvent- When a book is createdBookUpdatedEvent- When a book is updatedBookDeletedEvent- When a book is deleted
Routes
| Method | Path | Permission |
|---|---|---|
| GET | /books | Public |
| GET | /books/{id} | Public |
| GET/POST | /books/create | book.create |
| GET/POST | /books/{id}/edit | book.update |
| POST | /books/{id}/delete | book.delete |
Repository Implementations
InMemoryBookRepository- For testingSqliteBookRepository- SQLite persistenceMysqlBookRepository- MySQL persistencePostgresqlBookRepository- PostgreSQL persistence
See Also
- Bus Mode - Architectural pattern used
- CQRS - Commands and Queries implementation
- Commands & Handlers - Write operations
- Queries & Handlers - Read operations
- Domain Events - Events dispatched
- Repository Implementations - All four implementations
- RBAC Permissions - Route protection