def search_books(self, expression): query = self.session.query(Book).order_by(Book.name) if expression: query = query.filter(or_( Book.name.like("%" + expression + "%"), Book.authors.any(Author.name.like("%" + expression + "%")))) return map(lambda book: BookConverter.from_mo(book).to_dto(), query.all())
def create_book(self, book_dto): book = BookConverter.from_dto(book_dto).to_mo() authors = self.session.query(Author).filter( Author.name.in_(map(lambda a: a.name, book_dto.authors))).all() book.authors = authors self.session.add(book) self.session.commit() return
def get_book(self, book_dto): query = self.session.query(Book) if book_dto.id: query = query.filter(Book.id == book_dto.id) if book_dto.name: query = query.filter(Book.name == book_dto.name) book = query.one() return BookConverter.from_mo(book).to_dto()