parent
451818749b
commit
d2e28e5f38
5 changed files with 41 additions and 1 deletions
|
@ -11,6 +11,12 @@ pub struct CreateComment {
|
||||||
pub auth: String,
|
pub auth: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize)]
|
||||||
|
pub struct GetComment {
|
||||||
|
pub id: CommentId,
|
||||||
|
pub auth: Option<String>,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
pub struct EditComment {
|
pub struct EditComment {
|
||||||
pub content: String,
|
pub content: String,
|
||||||
|
|
|
@ -12,10 +12,39 @@ use lemmy_db_schema::{
|
||||||
ListingType,
|
ListingType,
|
||||||
SortType,
|
SortType,
|
||||||
};
|
};
|
||||||
use lemmy_db_views::comment_view::CommentQueryBuilder;
|
use lemmy_db_views::comment_view::{CommentQueryBuilder, CommentView};
|
||||||
use lemmy_utils::{ApiError, ConnectionId, LemmyError};
|
use lemmy_utils::{ApiError, ConnectionId, LemmyError};
|
||||||
use lemmy_websocket::LemmyContext;
|
use lemmy_websocket::LemmyContext;
|
||||||
|
|
||||||
|
#[async_trait::async_trait(?Send)]
|
||||||
|
impl PerformCrud for GetComment {
|
||||||
|
type Response = CommentResponse;
|
||||||
|
|
||||||
|
async fn perform(
|
||||||
|
&self,
|
||||||
|
context: &Data<LemmyContext>,
|
||||||
|
_websocket_id: Option<ConnectionId>,
|
||||||
|
) -> Result<Self::Response, LemmyError> {
|
||||||
|
let data = self;
|
||||||
|
let local_user_view =
|
||||||
|
get_local_user_view_from_jwt_opt(&data.auth, context.pool(), context.secret()).await?;
|
||||||
|
|
||||||
|
let person_id = local_user_view.map(|u| u.person.id);
|
||||||
|
let id = data.id;
|
||||||
|
let comment_view = blocking(context.pool(), move |conn| {
|
||||||
|
CommentView::read(conn, id, person_id)
|
||||||
|
})
|
||||||
|
.await?
|
||||||
|
.map_err(|e| ApiError::err("couldnt_find_comment", e))?;
|
||||||
|
|
||||||
|
Ok(Self::Response {
|
||||||
|
comment_view,
|
||||||
|
form_id: None,
|
||||||
|
recipient_ids: Vec::new(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[async_trait::async_trait(?Send)]
|
#[async_trait::async_trait(?Send)]
|
||||||
impl PerformCrud for GetComments {
|
impl PerformCrud for GetComments {
|
||||||
type Response = GetCommentsResponse;
|
type Response = GetCommentsResponse;
|
||||||
|
|
|
@ -108,6 +108,9 @@ pub async fn match_websocket_operation_crud(
|
||||||
UserOperationCrud::RemoveComment => {
|
UserOperationCrud::RemoveComment => {
|
||||||
do_websocket_operation::<RemoveComment>(context, id, op, data).await
|
do_websocket_operation::<RemoveComment>(context, id, op, data).await
|
||||||
}
|
}
|
||||||
|
UserOperationCrud::GetComment => {
|
||||||
|
do_websocket_operation::<GetComment>(context, id, op, data).await
|
||||||
|
}
|
||||||
UserOperationCrud::GetComments => {
|
UserOperationCrud::GetComments => {
|
||||||
do_websocket_operation::<GetComments>(context, id, op, data).await
|
do_websocket_operation::<GetComments>(context, id, op, data).await
|
||||||
}
|
}
|
||||||
|
|
|
@ -169,6 +169,7 @@ pub enum UserOperationCrud {
|
||||||
RemovePost,
|
RemovePost,
|
||||||
// Comment
|
// Comment
|
||||||
CreateComment,
|
CreateComment,
|
||||||
|
GetComment,
|
||||||
GetComments,
|
GetComments,
|
||||||
EditComment,
|
EditComment,
|
||||||
DeleteComment,
|
DeleteComment,
|
||||||
|
|
|
@ -115,6 +115,7 @@ pub fn config(cfg: &mut web::ServiceConfig, rate_limit: &RateLimit) {
|
||||||
.service(
|
.service(
|
||||||
web::scope("/comment")
|
web::scope("/comment")
|
||||||
.wrap(rate_limit.message())
|
.wrap(rate_limit.message())
|
||||||
|
.route("", web::get().to(route_get_crud::<GetComment>))
|
||||||
.route("", web::put().to(route_post_crud::<EditComment>))
|
.route("", web::put().to(route_post_crud::<EditComment>))
|
||||||
.route("/delete", web::post().to(route_post_crud::<DeleteComment>))
|
.route("/delete", web::post().to(route_post_crud::<DeleteComment>))
|
||||||
.route("/remove", web::post().to(route_post_crud::<RemoveComment>))
|
.route("/remove", web::post().to(route_post_crud::<RemoveComment>))
|
||||||
|
|
Loading…
Reference in a new issue