Update sequence books

This commit is contained in:
2024-09-28 22:21:14 +02:00
parent 698a9ded17
commit 10f30dae41

View File

@@ -169,16 +169,43 @@ async fn get_sequence_books(
}; };
let books_filter = vec![ let books_filter = vec![
book::is_deleted::equals(false), book_sequence::book::is(vec![
book::book_sequences::some(vec![book_sequence::sequence_id::equals(sequence_id)]), book::is_deleted::equals(false),
book::lang::in_vec(allowed_langs.clone()), book::lang::in_vec(allowed_langs.clone()),
]),
book_sequence::sequence_id::equals(sequence.id),
]; ];
let books_count = db.book().count(books_filter.clone()).exec().await.unwrap(); let books_count = db
.book_sequence()
.count(books_filter.clone())
.exec()
.await
.unwrap();
let book_sequences = db
.book_sequence()
.find_many(vec![
book_sequence::book::is(vec![
book::is_deleted::equals(false),
book::lang::in_vec(allowed_langs.clone()),
]),
book_sequence::sequence_id::equals(sequence.id),
])
.order_by(book_sequence::position::order(
prisma_client_rust::Direction::Asc,
))
.skip((pagination.page - 1) * pagination.size)
.take(pagination.size)
.exec()
.await
.unwrap();
let book_ids: Vec<i32> = book_sequences.iter().map(|a| a.book_id).collect();
let books = db let books = db
.book() .book()
.find_many(books_filter) .find_many(vec![book::id::in_vec(book_ids)])
.with(book::source::fetch()) .with(book::source::fetch())
.with(book::book_annotation::fetch()) .with(book::book_annotation::fetch())
.with( .with(
@@ -199,12 +226,15 @@ async fn get_sequence_books(
.await .await
.unwrap(); .unwrap();
let page: PageWithParent<SequenceBook, Sequence> = PageWithParent::new( let mut sequence_books = books
sequence.into(), .iter()
books.iter().map(|item| item.clone().into()).collect(), .map(|item| item.clone().into())
books_count, .collect::<Vec<SequenceBook>>();
&pagination,
); sequence_books.sort_by(|a, b| a.position.cmp(&b.position));
let page: PageWithParent<SequenceBook, Sequence> =
PageWithParent::new(sequence.into(), sequence_books, books_count, &pagination);
Json(page).into_response() Json(page).into_response()
} }