---
type: practical
---
## Genre
- Cool, nice. We will extend.

## FileService
- `importBooks` doesn't actually save books
- CSV parsing might fail if there are commas in the data itself
- Hardcoded CSV column names (just an observation, not necessarily bad)
- File creation creates temp files without deleting them

## BookService
- `createBook` doesn't ensure isbn uniqueness

## BookRepository
- Our documentation is not updated. The class map cointains findByISBN.
- Only 'isbn' is supported. Implement:
	- findByAttributes(BookAttributes attrs)
	- findByID(long pk)
	- deleteByAttributes
	- deleteByID

## BookAttributes
- Every field should be private (@Data automatically adds gsetters)
- Perhaps add data validation? Not necessary.


## Book
- Attributes can be null. Add null checks in getters and setters to avoid. We don't want null ptr exceptions

## BookController
- Do not interact with repository directly. Go through service.


## BookService
- `createBook` returns true always, no matter what the status is
- matchingAny is OR, false positives might be returned. Perhaps use matchingAll? Not sure about this.
- `deleteBooksByAttribute` is missing




