Skip to content
Extraits de code Groupes Projets
Valider d6d4e359 rédigé par Kubat's avatar Kubat
Parcourir les fichiers

URI: Add the query+link uri

parent 49ff8573
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -17,6 +17,7 @@ typedef enum {
URI_CATEGORY = 5,
URI_LANGUAGE = 6,
URI_QUERY = 7,
URI_QUERY_PLUS_LINK = 8,
} LKT_URI_TYPE;
typedef enum {
......
......@@ -134,6 +134,10 @@ __prefix(char *str, struct lkt_uri *ret)
ret->column_name = LKT_DB_LANG;
ret->type = URI_LANGUAGE;
val = str + 4;
} else if (STR_NMATCH(str, "query+link", 11)) {
ret->column_name = LKT_DB_ALL;
ret->type = URI_QUERY_PLUS_LINK;
val = str + 11;
} else if (STR_NMATCH(str, "query", 5)) {
ret->column_name = LKT_DB_ALL;
ret->type = URI_QUERY;
......@@ -296,6 +300,8 @@ __lkt_to_str(const struct lkt_uri *uri, char *ret, size_t len)
case URI_TYPE: safe_snprintf(ret, len, "type=%s", (char *)uri->value); break;
case URI_AUTHOR: safe_snprintf(ret, len, "author=%s", (char *)uri->value); break;
case URI_CATEGORY: safe_snprintf(ret, len, "cat=%s", (char *)uri->value); break;
case URI_QUERY_PLUS_LINK:
case URI_QUERY: safe_snprintf(ret, len, "search=%s", (char *)uri->value); break;
case URI_PLAYLIST: ___plt_uri_to_str(uri, ret, len); return false;
......@@ -356,11 +362,13 @@ lkt_uri_match_kara_metadata(const struct lkt_uri *uri, const struct kara_metadat
}
case URI_TYPE: return STR_MATCH((const char *)uri->value, kara_mdt->song_type);
case URI_QUERY: return database_is_kara_like(db, kara_id, uri->value);
case URI_AUTHOR: return STR_MATCH((const char *)uri->value, kara_mdt->author_name);
case URI_CATEGORY: return STR_MATCH((const char *)uri->value, kara_mdt->category);
case URI_PLAYLIST: return database_plt_contais_kara(db, uri->value, kara_id);
case URI_LANGUAGE: return STR_MATCH((const char *)uri->value, kara_mdt->language);
case URI_QUERY_PLUS_LINK:
case URI_QUERY: return database_is_kara_like(db, kara_id, uri->value);
}
LOG_ERROR("URI", "Found an unusual uri type: %d", uri->type);
LOG_UNREACHABLE;
......
......@@ -326,6 +326,7 @@ database_queue_add_uri(lkt_db *db, struct lkt_uri *uri, int prio)
const LKT_URI_TYPE type = lkt_uri_get_type(uri);
switch (type) {
case URI_QUERY_PLUS_LINK:
case URI_QUERY:
return queue_add_with_col_like_str(db, LKT_DB_ALL, lkt_uri_get_value_as_str(uri), prio);
......
......@@ -23,6 +23,7 @@ pub enum LktUriType {
Category = 5,
Lanquage = 6,
Query = 7,
QueryPlusLink = 8,
}
#[repr(C)]
......
......@@ -22,10 +22,13 @@ pub enum LktUriField {
/// The language of the kara must match the value in the URI.
Language,
/// Do a fuzzy search with the value if the URI. This is the default action
/// for an URI.
/// Do a fuzzy search with the value if the URI. We also look up the links
/// of the kara.
FuzzySearch,
/// Do a search with the value if the URI. This is the default action for an URI.
Search,
/// Do a search by the name of the playlist.
Playlist,
}
......@@ -39,7 +42,7 @@ pub enum LktUriValue<'a> {
impl Default for LktUriField {
fn default() -> Self {
LktUriField::FuzzySearch
LktUriField::Search
}
}
......@@ -60,7 +63,8 @@ impl LktCUri {
LktUriType::Author => Some(KaraMaker),
LktUriType::Category => Some(Origin),
LktUriType::Lanquage => Some(Language),
LktUriType::Query => Some(FuzzySearch),
LktUriType::Query => Some(Search),
LktUriType::QueryPlusLink => Some(FuzzySearch),
}
}
......
......@@ -319,7 +319,7 @@ impl LktDatabaseConnection {
.map_err(|err| format!("{err}"))?
)),
LktUriField::FuzzySearch => {
LktUriField::Search | LktUriField::FuzzySearch => {
let _ = uri_str!("query" :/ uri);
todo!()
}
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter