Fix autocompletes

This commit is contained in:
jude
2023-08-22 18:10:54 +01:00
parent fca080253f
commit e6f5db1842
3 changed files with 60 additions and 9 deletions
+41 -4
View File
@@ -37,6 +37,11 @@ pub trait SoundCtx {
user_id: U,
guild_id: G,
) -> Result<Vec<Sound>, sqlx::Error>;
async fn autocomplete_favorite_sounds<U: Into<u64> + Send>(
&self,
query: &str,
user_id: U,
) -> Result<Vec<Sound>, sqlx::Error>;
async fn user_sounds<U: Into<u64> + Send>(
&self,
user_id: U,
@@ -131,7 +136,7 @@ SELECT name, id, public, server_id, uploader_id
SELECT 1
FROM favorite_sounds
WHERE sound_id = id AND user_id = ?
),
) DESC,
server_id = ? DESC,
public = 1 DESC,
rand()
@@ -162,7 +167,7 @@ SELECT name, id, public, server_id, uploader_id
SELECT 1
FROM favorite_sounds
WHERE sound_id = id AND user_id = ?
),
) DESC,
server_id = ? DESC,
public = 1 DESC,
rand()
@@ -189,18 +194,50 @@ SELECT name, id, public, server_id, uploader_id
guild_id: G,
) -> Result<Vec<Sound>, sqlx::Error> {
let db_pool = self.database.clone();
let user_id = user_id.into();
sqlx::query_as_unchecked!(
Sound,
"
SELECT name, id, public, server_id, uploader_id
FROM sounds
WHERE name LIKE CONCAT(?, '%') AND (uploader_id = ? OR server_id = ?)
WHERE name LIKE CONCAT(?, '%') AND (uploader_id = ? OR server_id = ? OR EXISTS(
SELECT 1
FROM favorite_sounds
WHERE sound_id = id AND user_id = ?
))
LIMIT 25
",
query,
user_id,
guild_id.into(),
user_id,
)
.fetch_all(&db_pool)
.await
}
async fn autocomplete_favorite_sounds<U: Into<u64> + Send>(
&self,
query: &str,
user_id: U,
) -> Result<Vec<Sound>, sqlx::Error> {
let db_pool = self.database.clone();
sqlx::query_as_unchecked!(
Sound,
"
SELECT name, id, public, server_id, uploader_id
FROM sounds
WHERE name LIKE CONCAT(?, '%') AND EXISTS(
SELECT 1
FROM favorite_sounds
WHERE sound_id = id AND user_id = ?
)
LIMIT 25
",
query,
user_id.into(),
guild_id.into(),
)
.fetch_all(&db_pool)
.await