diff --git a/inc/lektor/uri.h b/inc/lektor/uri.h index caf9342595517146ef32e9ae22a4c69c93dce474..bf73b9fc1089d0cfe79759dae9df7bc4fe65ef9e 100644 --- a/inc/lektor/uri.h +++ b/inc/lektor/uri.h @@ -16,6 +16,7 @@ enum lkt_uri_type { struct lkt_uri { enum lkt_uri_type type; + const char *column_name; union { void *value; size_t id; diff --git a/src/uri.c b/src/uri.c index 926dbd429317e83eea1a988eef58a5c91620b482..523a46f804879aa9343bbb8d1ca88a9f2ce279da 100644 --- a/src/uri.c +++ b/src/uri.c @@ -23,24 +23,31 @@ __prefix(char *str, struct lkt_uri *ret) return NULL; if (STR_NMATCH(str, "id", 2)) { + ret->column_name = LKT_DATABASE_NAME_KID; ret->type = uri_id; val = str + 2; } else if (STR_NMATCH(str, "playlist", 8)) { + ret->column_name = NULL; ret->type = uri_playlist; val = str + 3; } else if (STR_NMATCH(str, "type", 4)) { + ret->column_name = LKT_DATABASE_NAME_KTYPE; ret->type = uri_type; val = str + 4; } else if (STR_NMATCH(str, "author", 6)) { + ret->column_name = LKT_DATABASE_NAME_KAUTHOR; ret->type = uri_author; val = str + 6; } else if (STR_NMATCH(str, "category", 8)) { + ret->column_name = LKT_DATABASE_NAME_KCAT; ret->type = uri_category; val = str + 8; } else if (STR_NMATCH(str, "lang", 4)) { + ret->column_name = LKT_DATABASE_NAME_KLANG; ret->type = uri_language; val = str + 4; } else if (STR_NMATCH(str, "query", 5)) { + ret->column_name = LKT_DATABASE_KARA_ALL; ret->type = uri_query; val = str + 5; } else