Browse Source

not mark search keywords in backend

master
hole-thu 3 years ago
parent
commit
ce21b2825e
  1. 2
      src/api/attention.rs
  2. 9
      src/api/comment.rs
  3. 19
      src/api/post.rs
  4. 2
      src/api/search.rs

2
src/api/attention.rs

@ -53,7 +53,7 @@ pub async fn attention_post(
pub async fn get_attention(user: CurrentUser, db: Db, rconn: RdsConn) -> API<Value> { pub async fn get_attention(user: CurrentUser, db: Db, rconn: RdsConn) -> API<Value> {
let ids = Attention::init(&user.namehash, &rconn).all().await?; let ids = Attention::init(&user.namehash, &rconn).all().await?;
let ps = Post::get_multi(&db, ids).await?; let ps = Post::get_multi(&db, ids).await?;
let ps_data = ps2outputs(&ps, &user, &db, &rconn, &vec![]).await; let ps_data = ps2outputs(&ps, &user, &db, &rconn).await;
Ok(json!({ Ok(json!({
"code": 0, "code": 0,

9
src/api/comment.rs

@ -38,7 +38,6 @@ pub fn c2output<'r>(
p: &'r Post, p: &'r Post,
cs: &Vec<Comment>, cs: &Vec<Comment>,
user: &CurrentUser, user: &CurrentUser,
kws: &Vec<&str>,
) -> Vec<CommentOutput> { ) -> Vec<CommentOutput> {
let mut hash2id = HashMap::<&String, i32>::from([(&p.author_hash, 0)]); let mut hash2id = HashMap::<&String, i32>::from([(&p.author_hash, 0)]);
cs.iter() cs.iter()
@ -55,13 +54,9 @@ pub fn c2output<'r>(
// TODO: block // TODO: block
None None
} else { } else {
let mut text = c.content.to_string();
for kw in kws {
text = text.replace(kw, &format!(" **{}**", kw));
}
Some(CommentOutput { Some(CommentOutput {
cid: c.id, cid: c.id,
text: format!("{}{}", if c.is_tmp { "[tmp]\n" } else { "" }, text), text: format!("{}{}", if c.is_tmp { "[tmp]\n" } else { "" }, c.content),
author_title: c.author_title.to_string(), author_title: c.author_title.to_string(),
can_del: c.check_permission(user, "wd").is_ok(), can_del: c.check_permission(user, "wd").is_ok(),
name_id: name_id, name_id: name_id,
@ -82,7 +77,7 @@ pub async fn get_comment(pid: i32, user: CurrentUser, db: Db, rconn: RdsConn) ->
} }
let pid = p.id; let pid = p.id;
let cs = Comment::gets_by_post_id(&db, pid).await?; let cs = Comment::gets_by_post_id(&db, pid).await?;
let data = c2output(&p, &cs, &user, &vec![]); let data = c2output(&p, &cs, &user);
Ok(json!({ Ok(json!({
"code": 0, "code": 0,

19
src/api/post.rs

@ -54,16 +54,10 @@ async fn p2output(
user: &CurrentUser, user: &CurrentUser,
db: &Db, db: &Db,
rconn: &RdsConn, rconn: &RdsConn,
kws: &Vec<&str>,
) -> PostOutput { ) -> PostOutput {
let mut text = p.content.to_string();
for kw in kws {
text = text.replace(kw, &format!(" **{}**", kw));
}
PostOutput { PostOutput {
pid: p.id, pid: p.id,
text: format!("{}{}", if p.is_tmp { "[tmp]\n" } else { "" }, text), text: format!("{}{}", if p.is_tmp { "[tmp]\n" } else { "" }, p.content),
cw: if p.cw.len() > 0 { cw: if p.cw.len() > 0 {
Some(p.cw.to_string()) Some(p.cw.to_string())
} else { } else {
@ -91,7 +85,7 @@ async fn p2output(
// 单个洞还有查询评论的接口,这里挂了不用报错 // 单个洞还有查询评论的接口,这里挂了不用报错
let pid = p.id; let pid = p.id;
if let Some(cs) = Comment::gets_by_post_id(db, pid).await.ok() { if let Some(cs) = Comment::gets_by_post_id(db, pid).await.ok() {
Some(c2output(p, &cs, user, kws)) Some(c2output(p, &cs, user))
} else { } else {
None None
} }
@ -113,11 +107,10 @@ pub async fn ps2outputs(
user: &CurrentUser, user: &CurrentUser,
db: &Db, db: &Db,
rconn: &RdsConn, rconn: &RdsConn,
kws: &Vec<&str>,
) -> Vec<PostOutput> { ) -> Vec<PostOutput> {
future::join_all( future::join_all(
ps.iter() ps.iter()
.map(|p| async { p2output(p, &user, &db, &rconn, &kws.clone()).await }), .map(|p| async { p2output(p, &user, &db, &rconn).await }),
) )
.await .await
} }
@ -128,7 +121,7 @@ pub async fn get_one(pid: i32, user: CurrentUser, db: Db, rconn: RdsConn) -> Jso
let p = Post::get_with_cache(&db, &rconn, pid).await?; let p = Post::get_with_cache(&db, &rconn, pid).await?;
p.check_permission(&user, "ro")?; p.check_permission(&user, "ro")?;
Ok(json!({ Ok(json!({
"data": p2output(&p, &user,&db, &rconn, &vec![]).await, "data": p2output(&p, &user,&db, &rconn).await,
"code": 0, "code": 0,
})) }))
} }
@ -145,7 +138,7 @@ pub async fn get_list(
let page_size = 25; let page_size = 25;
let start = (page - 1) * page_size; let start = (page - 1) * page_size;
let ps = Post::gets_by_page(&db, order_mode, start.into(), page_size.into()).await?; let ps = Post::gets_by_page(&db, order_mode, start.into(), page_size.into()).await?;
let ps_data = ps2outputs(&ps, &user, &db, &rconn, &vec![]).await; let ps_data = ps2outputs(&ps, &user, &db, &rconn).await;
Ok(json!({ Ok(json!({
"data": ps_data, "data": ps_data,
"count": ps_data.len(), "count": ps_data.len(),
@ -193,7 +186,7 @@ pub async fn edit_cw(cwi: Form<CwInput>, user: CurrentUser, db: Db) -> JsonAPI {
#[get("/getmulti?<pids>")] #[get("/getmulti?<pids>")]
pub async fn get_multi(pids: Vec<i32>, user: CurrentUser, db: Db, rconn: RdsConn) -> JsonAPI { pub async fn get_multi(pids: Vec<i32>, user: CurrentUser, db: Db, rconn: RdsConn) -> JsonAPI {
let ps = Post::get_multi(&db, pids).await?; let ps = Post::get_multi(&db, pids).await?;
let ps_data = ps2outputs(&ps, &user, &db, &rconn, &vec![]).await; let ps_data = ps2outputs(&ps, &user, &db, &rconn).await;
Ok(json!({ Ok(json!({
"code": 0, "code": 0,

2
src/api/search.rs

@ -31,7 +31,7 @@ pub async fn search(
.await? .await?
}; };
let mark_kws = if search_mode == 1 {kws} else {vec![]}; let mark_kws = if search_mode == 1 {kws} else {vec![]};
let ps_data = ps2outputs(&ps, &user, &db, &rconn, &mark_kws).await; let ps_data = ps2outputs(&ps, &user, &db, &rconn).await;
Ok(json!({ Ok(json!({
"data": ps_data, "data": ps_data,
"count": ps_data.len(), "count": ps_data.len(),

Loading…
Cancel
Save