zero4rs 2.0.0

zero4rs is a powerful, pragmatic, and extremely fast web framework for Rust
Documentation
pub mod comments;

pub use comments::*;

use crate::prelude2::*;

use crate::core::auth0::Requestor;
use crate::core::auth0::UserId;

use crate::services::feeds_service::models;

// 列表页
pub async fn feeds_index(request: HttpRequest) -> impl Responder {
    let ctx = tera::Context::new();
    request.render(200, "feeds/feeds_index.html", ctx)
}

// 新增
pub async fn feeds_create(
    query: web::Form<models::FeedsCreateFormData>,
    request: HttpRequest,
    context: web::Data<AppContext>,
    user_id: web::ReqData<UserId>,
    requestor: web::ReqData<Requestor>,
) -> impl Responder {
    let id = crate::services::feeds_service::save_feeds(
        context.mongo(),
        query.0,
        user_id.into_inner(),
        requestor.user(),
    )
    .await?;

    request.json(200, R::success(id, "发布成功".to_string()))
}

// 点赞
pub async fn feeds_thumb_up(
    feed_id: actix_web::web::Bytes,
    request: HttpRequest,
    app_state: web::Data<AppContext>,
    user_id: web::ReqData<UserId>,
) -> impl Responder {
    let feed_id = crate::commons::bytes_to_string(feed_id.to_vec())?;

    let result = crate::services::feeds_service::feeds_thumb_up(
        app_state.mongo(),
        &feed_id,
        user_id.into_inner(),
    )
    .await?;

    request.json(200, R::success(result, "已点赞".to_string()))
}