32 lines
1.3 KiB
Java
32 lines
1.3 KiB
Java
package pl.edu.amu.wmi.bookapi.repositories;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.data.mongodb.core.FindAndModifyOptions;
|
|
import org.springframework.data.mongodb.core.MongoTemplate;
|
|
import org.springframework.data.mongodb.core.query.Criteria;
|
|
import org.springframework.data.mongodb.core.query.Query;
|
|
import org.springframework.data.mongodb.core.query.Update;
|
|
import pl.edu.amu.wmi.bookapi.api.dto.BookDto;
|
|
import pl.edu.amu.wmi.bookapi.models.BookDocument;
|
|
|
|
public class BookRepositoryCustomImpl implements BookRepositoryCustom {
|
|
@Autowired
|
|
MongoTemplate mongoTemplate;
|
|
|
|
@Override
|
|
public BookDocument updateBook(String bookId, String userId, BookDto bookDto) {
|
|
Update update = new Update();
|
|
if(bookDto.getAuthor() != null) update.set("author", bookDto.getAuthor());
|
|
if(bookDto.getEan() != null) update.set("ean", bookDto.getEan());
|
|
if(bookDto.getTitle() != null) update.set("title", bookDto.getTitle());
|
|
|
|
return mongoTemplate.findAndModify(
|
|
new Query(
|
|
Criteria
|
|
.where("ownerUsername").is(userId)
|
|
.and("id").is(bookId)
|
|
), update, FindAndModifyOptions.options().returnNew(true), BookDocument.class
|
|
);
|
|
}
|
|
}
|