2023-01-17 23:14:18 +00:00
|
|
|
use crate::database::{DatabaseClient, DatabaseError};
|
2022-09-19 00:45:56 +00:00
|
|
|
|
|
|
|
pub async fn search_tags(
|
2023-01-17 23:14:18 +00:00
|
|
|
db_client: &impl DatabaseClient,
|
2022-09-19 00:45:56 +00:00
|
|
|
search_query: &str,
|
2022-09-29 21:36:55 +00:00
|
|
|
limit: u16,
|
2022-09-19 00:45:56 +00:00
|
|
|
) -> Result<Vec<String>, DatabaseError> {
|
|
|
|
let db_search_query = format!("%{}%", search_query);
|
2023-04-24 15:35:32 +00:00
|
|
|
let rows = db_client
|
|
|
|
.query(
|
|
|
|
"
|
2022-09-19 00:45:56 +00:00
|
|
|
SELECT tag_name
|
|
|
|
FROM tag
|
|
|
|
WHERE tag_name ILIKE $1
|
|
|
|
LIMIT $2
|
|
|
|
",
|
2023-04-24 15:35:32 +00:00
|
|
|
&[&db_search_query, &i64::from(limit)],
|
|
|
|
)
|
|
|
|
.await?;
|
|
|
|
let tags: Vec<String> = rows
|
|
|
|
.iter()
|
2022-09-19 00:45:56 +00:00
|
|
|
.map(|row| row.try_get("tag_name"))
|
|
|
|
.collect::<Result<_, _>>()?;
|
|
|
|
Ok(tags)
|
|
|
|
}
|