/** * 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; }
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; }
/** * 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; }