Ejemplo n.º 1
0
/**
 * gom_command_builder_build_delete:
 * @builder: (in): A #GomCommandBuilder.
 *
 * Builds a new #GomCommand to delete the rows matching the current query
 * params.
 *
 * Returns: (transfer full): A #GomCommand.
 */
GomCommand *
gom_command_builder_build_delete (GomCommandBuilder *builder)
{
   GomCommandBuilderPrivate *priv;
   GomResourceClass *klass;
   GomCommand *command;
   GString *str;

   g_return_val_if_fail(GOM_IS_COMMAND_BUILDER(builder), NULL);

   priv = builder->priv;

   klass = g_type_class_ref(priv->resource_type);

   str = g_string_new("DELETE ");
   add_from(str, klass);
   add_where(str, priv->m2m_type, priv->m2m_table, priv->filter);
   g_string_append(str, ";");

   command = g_object_new(GOM_TYPE_COMMAND,
                          "adapter", priv->adapter,
                          "sql", str->str,
                          NULL);

   bind_params(command, priv->filter);

   g_type_class_unref(klass);
   g_string_free(str, TRUE);

   return command;
}
Ejemplo n.º 2
0
int main()
{
	test::TabBar t;

	auto x = t.alpha = 7;
	auto y = t.beta = "kaesekuchen";
	auto z = t.gamma = true;

	{
		using T = decltype(remove_from(t));
		static_assert(sqlpp::is_regular<T>::value, "type requirement");
	}

	{
		using T = decltype(remove_from(t).where(t.beta != "transparent"));
		static_assert(sqlpp::is_regular<T>::value, "type requirement");
	}

	{
		using T = decltype(dynamic_remove_from(db, t).dynamic_using_().dynamic_where());
		static_assert(sqlpp::is_regular<T>::value, "type requirement");
	}

	interpret(remove_from(t), printer).flush();
	interpret(remove_from(t).where(t.beta != "transparent"), printer).flush();
	interpret(remove_from(t).using_(t), printer).flush();
	auto r = dynamic_remove_from(db, t).dynamic_using_().dynamic_where();
	r = r.add_using_(t);
	r = r.add_where(t.beta != "transparent");
	interpret(r, printer).flush();

	return 0;
}
Ejemplo n.º 3
0
/**
 * gom_command_builder_build_count:
 * @builder: (in): A #GomCommandBuilder.
 *
 * Builds a new command that will count the number of rows matching the
 * current query parameters.
 *
 * Returns: (transfer full): A #GomCommand.
 */
GomCommand *
gom_command_builder_build_count (GomCommandBuilder *builder)
{
   GomCommandBuilderPrivate *priv;
   GomResourceClass *klass;
   GomCommand *command;
   GString *str;

   g_return_val_if_fail(GOM_IS_COMMAND_BUILDER(builder), NULL);

   priv = builder->priv;

   klass = g_type_class_ref(priv->resource_type);

   str = g_string_new(NULL);
   g_string_append_printf(str, "SELECT COUNT('%s'.'%s') ",
                          klass->table, klass->primary_key);
   add_from(str, klass);
   add_joins(str, klass);
   add_m2m(str, klass, priv->m2m_table, priv->m2m_type);
   add_where(str, priv->m2m_type, priv->m2m_table, priv->filter);
   add_limit(str, priv->limit);
   add_offset(str, priv->offset);

   command = g_object_new(GOM_TYPE_COMMAND,
                          "adapter", priv->adapter,
                          "sql", str->str,
                          NULL);

   bind_params(command, priv->filter);

   g_type_class_unref(klass);
   g_string_free(str, TRUE);

   return command;
}