00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MIDGARD_QUERY_BUILDER_H
00020 #define MIDGARD_QUERY_BUILDER_H
00021
00038 #include "midgard/midgard_connection.h"
00039
00040
00041 #define MIDGARD_TYPE_QUERY_BUILDER (midgard_query_builder_get_type())
00042 #define MIDGARD_QUERY_BUILDER(object) \
00043 (G_TYPE_CHECK_INSTANCE_CAST ((object),MIDGARD_TYPE_QUERY_BUILDER, MidgardQueryBuilder))
00044 #define MIDGARD_QUERY_BUILDER_CLASS(klass) \
00045 (G_TYPE_CHECK_CLASS_CAST ((klass), MIDGARD_TYPE_QUERY_BUILDER, MidgardQueryBuilderClass))
00046 #define MIDGARD_IS_QUERY_BUILDER(object) \
00047 (G_TYPE_CHECK_INSTANCE_TYPE ((object), MIDGARD_QUERY_BUILDER))
00048 #define MIDGARD_IS_QUERY_BUILDER_CLASS(klass) \
00049 (G_TYPE_CHECK_CLASS_TYPE ((klass), MIDGARD_TYPE_QUERY_BUILDER))
00050 #define MIDGARD_QUERY_BUILDER_GET_CLASS(obj) \
00051 (G_TYPE_INSTANCE_GET_CLASS ((obj), MIDGARD_TYPE_QUERY_BUILDER, MidgardQueryBuilderClass))
00052
00058 typedef struct MidgardQueryBuilder MidgardQueryBuilder;
00059
00060
00061 struct MidgardQueryBuilder {
00062 GObject parent;
00063 midgard *mgd;
00064 GType parent_type;
00065 GType ext_type;
00066 GType type;
00067 GList *types;
00068 MgdSchemaTypeAttr *schema;
00069 GSList *stack;
00070 GArray *orders;
00071 guint offset;
00072 guint limit;
00073 gint lang;
00074 gint default_lang;
00075 gboolean unset_lang;
00076 gboolean include_deleted;
00077 gchar *tables;
00078 const gchar *link;
00079 GString *join;
00080 gint error;
00081 };
00082
00087 typedef struct MidgardQueryBuilderClass MidgardQueryBuilderClass;
00088
00093 struct MidgardQueryBuilderClass{
00094 GObjectClass parent;
00095
00096 void (*set_lang) (
00097 MidgardQueryBuilder *builder, gint lang);
00098
00099 void (*unset_languages) (
00100 MidgardQueryBuilder *builder);
00101
00102 gboolean (*add_constraint) (
00103 MidgardQueryBuilder *builder,
00104 const gchar *name, const gchar *op, const GValue *value);
00105
00106 gboolean (*begin_group) (
00107 MidgardQueryBuilder *builder, const gchar *type);
00108
00109 gboolean (*end_group) (
00110 MidgardQueryBuilder *builder);
00111
00112 gboolean (*add_order) (
00113 MidgardQueryBuilder *builder,
00114 const gchar *name, const gchar *dir);
00115
00116 void (*set_offset) (
00117 MidgardQueryBuilder *builder, guint offset);
00118
00119 void (*set_limit) (
00120 MidgardQueryBuilder *builder, guint limit);
00121
00122 GObject **(*execute) (
00123 MidgardQueryBuilder *builder, guint *n_objects);
00124
00125 guint (*count) (
00126 MidgardQueryBuilder *builder);
00127 };
00128
00135 extern GType midgard_query_builder_get_type(void);
00136
00146 extern MidgardQueryBuilder *midgard_query_builder_new(
00147 midgard *mgd, const gchar *classname);
00148
00155 extern void midgard_query_builder_free(MidgardQueryBuilder *builder);
00156
00167 extern void midgard_query_builder_set_lang(
00168 MidgardQueryBuilder *builder, gint lang);
00169
00180 extern void midgard_query_builder_unset_languages(
00181 MidgardQueryBuilder *builder);
00182
00204 extern gboolean midgard_query_builder_add_constraint(
00205 MidgardQueryBuilder *builder,
00206 const gchar *name, const gchar *op, const GValue *value);
00207
00219 extern gboolean midgard_query_builder_begin_group(
00220 MidgardQueryBuilder *builder, const gchar *type);
00221
00232 extern gboolean midgard_query_builder_end_group(MidgardQueryBuilder *builder);
00233
00247 extern gboolean midgard_query_builder_add_order(
00248 MidgardQueryBuilder *builder, const gchar *name, const gchar *dir);
00249
00265 extern void midgard_query_builder_set_offset(
00266 MidgardQueryBuilder *builder, guint offset);
00267
00283 extern void midgard_query_builder_set_limit(
00284 MidgardQueryBuilder *builder, guint limit);
00285
00295 extern GObject **midgard_query_builder_execute(
00296 MidgardQueryBuilder *builder, guint *n_objects);
00297
00310 extern guint midgard_query_builder_count(MidgardQueryBuilder *builder);
00311
00312
00326 gboolean midgard_query_builder_join(
00327 MidgardQueryBuilder *builder, const gchar *prop,
00328 const gchar *jobject, const gchar *jprop);
00342 GList *midgard_query_builder_get_guid(MidgardQueryBuilder *builder);
00343
00360 const gchar *midgard_query_builder_get_type_name(MidgardQueryBuilder *builder);
00361
00372 extern void midgard_query_builder_include_deleted(MidgardQueryBuilder *builder);
00373
00374 #endif