mirror of
https://github.com/flibusta-apps/book_library_server.git
synced 2025-12-06 15:15:36 +01:00
Update sequence books
This commit is contained in:
@@ -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()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user