Exemple #1
0
/* For all label-operator pairs, write the operator and all its
 * operands to the DB recursively. */
static void
dbwrite_operator (void *key, void *value, void *udata)
{
	gchar *query;
	gchar *label = key;
	xmmsv_coll_t *coll = value;
	coll_dbwrite_t *dbinfos = udata;
	gchar *esc_label;
	gint serial_id;

	/* Only serialize each operator once, get previous id if exists */
	if (!xmms_collection_get_int_attr (coll, XMMS_COLLSERIAL_ATTR_ID, &serial_id)) {
		serial_id = dbinfos->collid;
		dbinfos->collid = xmms_collection_dbwrite_operator (dbinfos->session,
		                                                    dbinfos->collid, coll);
		xmms_collection_set_int_attr (coll, XMMS_COLLSERIAL_ATTR_ID, serial_id);
	}

	esc_label = sqlite_prepare_string (label);
	query = g_strdup_printf ("INSERT INTO CollectionLabels VALUES(%d, %d, %s)",
	                         serial_id, dbinfos->nsid, esc_label);
	xmms_medialib_select (dbinfos->session, query, NULL);

	g_free (query);
	g_free (esc_label);
}
static void
query_append_protect_string (coll_query_t *query, gchar *s)
{
	gchar *preps;
	if ((preps = sqlite_prepare_string (s)) != NULL) {  /* FIXME: Return oom error */
		query_append_string (query, preps);
		g_free (preps);
	}
}
Exemple #3
0
/* Write all attributes of a collection to the DB. */
static void
dbwrite_coll_attributes (const char *key, xmmsv_t *value, void *udata)
{
	gchar *query;
	coll_dbwrite_t *dbwrite_infos = udata;
	gchar *esc_key;
	gchar *esc_val;
	const gchar *s;
	int r;

	r = xmmsv_get_string (value, &s);
	g_return_if_fail (r);

	esc_key = sqlite_prepare_string (key);
	esc_val = sqlite_prepare_string (s);
	query = g_strdup_printf ("INSERT INTO CollectionAttributes VALUES(%d, %s, %s)",
	                         dbwrite_infos->collid, esc_key, esc_val);
	xmms_medialib_select (dbwrite_infos->session, query, NULL);

	g_free (query);
	g_free (esc_key);
	g_free (esc_val);
}