48 lines
1.3 KiB
Rust
48 lines
1.3 KiB
Rust
|
|
|
||
|
|
use axum::routing::{get, post};
|
||
|
|
use axum::{
|
||
|
|
extract::{Path, State},
|
||
|
|
http::StatusCode,
|
||
|
|
Json, Router,
|
||
|
|
};
|
||
|
|
use axum_macros::debug_handler;
|
||
|
|
|
||
|
|
use sea_orm::ColumnTrait;
|
||
|
|
use sea_orm::{entity::*, query::*,};
|
||
|
|
use crate::model::db::prelude::Book;
|
||
|
|
use crate::model::db::book::Model as BookModel;
|
||
|
|
use crate::model::db::book::Column as BookColumn;
|
||
|
|
use crate::model::http_body::book;
|
||
|
|
use crate::AppState;
|
||
|
|
use crate::model::http_body::book::BookItem;
|
||
|
|
|
||
|
|
pub fn get_nest_handlers() -> Router<crate::AppState> {
|
||
|
|
Router::new()
|
||
|
|
.route("/", get(get_all_books_handler))
|
||
|
|
// .route("/{id}", post(update_book).get(get_book))
|
||
|
|
}
|
||
|
|
|
||
|
|
// handlers
|
||
|
|
//
|
||
|
|
#[debug_handler]
|
||
|
|
async fn get_all_books_handler(
|
||
|
|
state: State<AppState>
|
||
|
|
) -> Result<Json<Vec<book::BookItem>>,(StatusCode,String)> {
|
||
|
|
// let conn = state.conn.get_postgres_connection_pool();
|
||
|
|
let uid :i64 = 1;
|
||
|
|
let all_books = Book::find()
|
||
|
|
.filter(BookColumn::Uid.eq(uid))
|
||
|
|
.all(&state.conn)
|
||
|
|
.await
|
||
|
|
.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR,e.to_string()))?;
|
||
|
|
|
||
|
|
let mut books: Vec<BookItem> = Vec::new();
|
||
|
|
for b in all_books {
|
||
|
|
let book_resp = BookItem{
|
||
|
|
id: b.id,
|
||
|
|
name: b.name,
|
||
|
|
};
|
||
|
|
books.push(book_resp);
|
||
|
|
}
|
||
|
|
Ok(Json(books))
|
||
|
|
}
|