Limit the number of database queries in find_linked_posts()
This commit is contained in:
parent
04e74a6e05
commit
2232bf814c
2 changed files with 7 additions and 3 deletions
|
@ -102,9 +102,6 @@ async fn create_status(
|
|||
if post_data.links.len() > 0 && post_data.visibility != Visibility::Public {
|
||||
return Err(ValidationError("can't add links to non-public posts").into());
|
||||
};
|
||||
if post_data.links.len() > 3 {
|
||||
return Err(ValidationError("too many links").into());
|
||||
};
|
||||
// Reply validation
|
||||
let maybe_in_reply_to = if let Some(in_reply_to_id) = post_data.in_reply_to_id.as_ref() {
|
||||
let in_reply_to = match get_post_by_id(db_client, in_reply_to_id).await {
|
||||
|
|
|
@ -44,7 +44,13 @@ pub async fn find_linked_posts(
|
|||
) -> Result<HashMap<String, Post>, DatabaseError> {
|
||||
let links = find_object_links(text);
|
||||
let mut link_map: HashMap<String, Post> = HashMap::new();
|
||||
let mut counter = 0;
|
||||
for url in links {
|
||||
if counter > 10 {
|
||||
// Limit the number of queries
|
||||
break;
|
||||
// TODO: single database query
|
||||
};
|
||||
match get_post_by_object_id(
|
||||
db_client,
|
||||
instance_url,
|
||||
|
@ -65,6 +71,7 @@ pub async fn find_linked_posts(
|
|||
Err(DatabaseError::NotFound(_)) => continue,
|
||||
Err(other_error) => return Err(other_error),
|
||||
};
|
||||
counter += 1;
|
||||
};
|
||||
Ok(link_map)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue