--- 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