Files
helios-server-rs/src/api/book.rs

48 lines
1.3 KiB
Rust
Raw Normal View History

2025-06-08 20:42:24 +08:00
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))
}