diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2020-05-22 16:26:05 +0200 |
---|---|---|
committer | Jean Felder <jean.felder@gmail.com> | 2020-08-21 15:05:10 +0000 |
commit | b48044d9dbed68eebe5941fed49ce8e3a7cece89 (patch) | |
tree | bf7bf40ccc009da9b58277f2a00f76bae0380fad | |
parent | d6002a4a550afba4817631954f9c7b09c38dc6a1 (diff) | |
download | grilo-plugins-b48044d9dbed68eebe5941fed49ce8e3a7cece89.tar.gz |
tracker3: Port get_media_from_uri() to the statement cache
-rw-r--r-- | src/tracker3/grl-tracker-source-api.c | 38 | ||||
-rw-r--r-- | src/tracker3/grl-tracker-source-statements.c | 2 | ||||
-rw-r--r-- | src/tracker3/grl-tracker-source-statements.h | 1 |
3 files changed, 17 insertions, 24 deletions
diff --git a/src/tracker3/grl-tracker-source-api.c b/src/tracker3/grl-tracker-source-api.c index 6001e99..44bbb97 100644 --- a/src/tracker3/grl-tracker-source-api.c +++ b/src/tracker3/grl-tracker-source-api.c @@ -35,6 +35,7 @@ #include "grl-tracker-source-api.h" #include "grl-tracker-source-cache.h" #include "grl-tracker-source-priv.h" +#include "grl-tracker-source-statements.h" #include "grl-tracker-utils.h" /* --------- Logging -------- */ @@ -137,14 +138,6 @@ GRL_LOG_DOMAIN_STATIC(tracker_source_result_log_domain); "a nfo:Media . " \ "}" -#define TRACKER_MEDIA_FROM_URI_REQUEST \ - "SELECT rdf:type(?urn) %s " \ - "WHERE " \ - "{ " \ - "?urn nie:url \"%s\" ; " \ - "tracker:available ?tr . " \ - "} " \ - /**/ /**/ @@ -529,7 +522,6 @@ tracker_media_from_uri_cb (GObject *source_object, { TrackerSparqlStatement *statement = TRACKER_SPARQL_STATEMENT (source_object); \ GrlSourceMediaFromUriSpec *mfus = (GrlSourceMediaFromUriSpec *) os->data; - GrlTrackerSourcePriv *priv = GRL_TRACKER_SOURCE_GET_PRIVATE (mfus->source); GError *tracker_error = NULL, *error = NULL; GrlMedia *media; TrackerSparqlCursor *cursor; @@ -1308,9 +1300,7 @@ void grl_tracker_source_get_media_from_uri (GrlSource *source, GrlSourceMediaFromUriSpec *mfus) { - GrlTrackerSourcePriv *priv = GRL_TRACKER_SOURCE_GET_PRIVATE (source); - gchar *sparql_select; - gchar *sparql_final; + GError *error = NULL; GrlTrackerOp *os; TrackerSparqlStatement *statement; @@ -1320,25 +1310,25 @@ grl_tracker_source_get_media_from_uri (GrlSource *source, if (!g_list_find (mfus->keys, GRLKEYID_TO_POINTER (GRL_METADATA_KEY_ID))) mfus->keys = g_list_prepend (mfus->keys, GRLKEYID_TO_POINTER (GRL_METADATA_KEY_ID)); - sparql_select = grl_tracker_source_get_select_string (mfus->keys); - sparql_final = g_strdup_printf (TRACKER_MEDIA_FROM_URI_REQUEST, - sparql_select, - mfus->uri); - - GRL_IDEBUG ("\tselect: '%s'", sparql_final); - - statement = - tracker_sparql_connection_query_statement (priv->tracker_connection, - sparql_final, - NULL, NULL); + statement = grl_tracker_source_create_statement (GRL_TRACKER_SOURCE (source), + GRL_TRACKER_QUERY_MEDIA_FROM_URI, + mfus->options, + mfus->keys, + NULL, + &error); + if (!statement) { + mfus->callback (source, mfus->operation_id, NULL, NULL, error); + g_error_free (error); + return; + } os = grl_tracker_op_new (GRL_TYPE_FILTER_ALL, mfus->keys, mfus); + tracker_sparql_statement_bind_string (statement, "uri", mfus->uri); tracker_sparql_statement_execute_async (statement, os->cancel, (GAsyncReadyCallback) tracker_media_from_uri_cb, os); - g_free (sparql_select); g_clear_object (&statement); } diff --git a/src/tracker3/grl-tracker-source-statements.c b/src/tracker3/grl-tracker-source-statements.c index 404b444..d33889e 100644 --- a/src/tracker3/grl-tracker-source-statements.c +++ b/src/tracker3/grl-tracker-source-statements.c @@ -53,6 +53,8 @@ struct _CachedStatement }; static const gchar *query_bases[GRL_TRACKER_QUERY_N_QUERIES] = { + /* GRL_TRACKER_QUERY_MEDIA_FROM_URI */ + "?urn nie:isStoredAs ~uri ", }; static void diff --git a/src/tracker3/grl-tracker-source-statements.h b/src/tracker3/grl-tracker-source-statements.h index 3c4bbb9..416be57 100644 --- a/src/tracker3/grl-tracker-source-statements.h +++ b/src/tracker3/grl-tracker-source-statements.h @@ -34,6 +34,7 @@ /**/ typedef enum { + GRL_TRACKER_QUERY_MEDIA_FROM_URI, /* Arguments: ~uri */ GRL_TRACKER_QUERY_N_QUERIES, } GrlTrackerQueryType; |