gboolean midgard_core_object_has_parameters(
		MidgardConnection *mgd, const gchar *class_name, const gchar *guid)
{
	g_assert(mgd != NULL);
	g_assert(class_name != NULL);
	g_assert(guid != NULL);

	MidgardQueryBuilder *builder =
		midgard_core_object_parameter_query_builder(mgd, class_name, guid);

	/* error is set in builder constructor */
	if(!builder)
		return FALSE;

	midgard_query_builder_set_limit(builder, 1);
	
	gboolean rv = TRUE;
	guint i = midgard_query_builder_count(builder);

	if(i == 0)
		rv = FALSE;

	g_object_unref(builder);

	return rv;
}	
Example #2
0
static PHP_METHOD(midgard_query_builder, count)
{
	RETVAL_FALSE;
	MidgardConnection *mgd = mgd_handle(TSRMLS_C);
	CHECK_MGD(mgd);

	if (zend_parse_parameters_none() == FAILURE) {
		return;
	}

	_GET_BUILDER_OBJECT;

	RETURN_LONG(midgard_query_builder_count(builder));
}
/**
 * midgard_object_create_attachment:
 * @self: #MidgardObject instance
 * @name: name for attachment
 * @title: its title
 * @mimetype: and mimetype
 *
 * Creates object's attachment using given properties.
 * Any property may be explicitly set to NULL.
 *
 * Returns: newly created #MidgardObject of midgard_attachment class or %NULL on failure
 */
MidgardObject *midgard_object_create_attachment(MidgardObject *self, 
		const gchar *name, const gchar *title, const gchar *mimetype)
{
	g_return_val_if_fail(self != NULL, NULL);

	if(!MGD_OBJECT_GUID (self)) {
		g_warning("Object is not fetched from database. Empty guid");
		return NULL;
	}

	guint n_params, i = 0;

	/* Check if there's duplicate name */
	if(name != NULL && *name != '\0') {
		
		MidgardQueryBuilder *builder = 
			midgard_query_builder_new(MGD_OBJECT_CNC (self), "midgard_attachment");
		
		if(!builder)
			return NULL;

		GValue pval = {0, };
		g_value_init(&pval, G_TYPE_STRING);
		g_value_set_string(&pval, MGD_OBJECT_GUID (self));
		midgard_query_builder_add_constraint(builder, "parentguid", "=", &pval);
		g_value_unset(&pval);
		g_value_init(&pval, G_TYPE_STRING);
		g_value_set_string(&pval, name);
		midgard_query_builder_add_constraint(builder, "name", "=", &pval);
		g_value_unset(&pval);

		i = midgard_query_builder_count(builder);
		g_object_unref(builder);

		if(i > 0) {
			
			MIDGARD_ERRNO_SET(MGD_OBJECT_CNC (self), MGD_ERR_OBJECT_NAME_EXISTS);
			return NULL;
		}
	}

	/* create parameters */
	i = 0;
	if(name) i++;
	if(title) i++;
	if(mimetype) i++;

	n_params = i;

	GValue nval = {0, };
	GValue tval = {0, };
	GValue mval = {0, };

	GParameter *parameters = NULL;

	/* TODO, implement  parameters from va_list function if needed */

	if(i > 0) {
		
		parameters = g_new0(GParameter, i);
		
		if(name) {
			i--;
			parameters[i].name = "name";
			g_value_init(&nval, G_TYPE_STRING);
			g_value_set_string(&nval, name);
			parameters[i].value = nval;
		}

		if(title) {
			i--;
			parameters[i].name = "title";
			g_value_init(&tval, G_TYPE_STRING);
			g_value_set_string(&tval, title);
			parameters[i].value = tval;
		}

		if(mimetype) {
			i--;
			parameters[i].name = "mimetype";
			g_value_init(&mval, G_TYPE_STRING);
			g_value_set_string(&mval, mimetype);
			parameters[i].value = mval;
		}
	}

	MidgardObject *att = 
		midgard_core_object_parameters_create(MGD_OBJECT_CNC (self), 
				"midgard_attachment", MGD_OBJECT_GUID (self), 
				n_params, parameters);
	
	for(i = 0; i < n_params; i++) {	
		g_value_unset(&parameters[i].value);
	}

	g_free(parameters);

	return att;
}