Changeset 16987

Show
Ignore:
Timestamp:
07/25/08 14:46:38 (3 months ago)
Author:
piotras
Message:

constructor: Removed QB usage in favour of legacy API

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/branch-1-9/midgard/core/midgard/src/midgard_sitegroup.c

    r16979 r16987  
    6161                return self; 
    6262        } 
    63  
    64         MidgardUser *user = MIDGARD_USER(mgd->priv->user); 
    65          
    66         if(!user || !midgard_user_is_root(user)) { 
    67                 MIDGARD_ERRNO_SET(mgd->mgd, MGD_ERR_ACCESS_DENIED); 
    68                 return FALSE; 
    69         } 
    70  
    71         MidgardQueryBuilder *builder = 
    72                 midgard_query_builder_new(mgd->mgd, "midgard_sitegroup"); 
    73          
    74         if(!builder) 
    75                 return NULL; 
    76          
    77         GValue val = {0, }; 
    78         /* sitegroup's name constraint */ 
    79         g_value_init(&val, G_TYPE_STRING); 
    80         g_value_set_string(&val, name); 
    81         midgard_query_builder_add_constraint(builder, 
    82                         "name", "=", &val); 
    83         g_value_unset(&val); 
    84  
    85         MidgardTypeHolder *holder = g_new(MidgardTypeHolder, 1); 
    86         GObject **objects = midgard_query_builder_execute(builder, holder); 
    87         g_object_unref(builder);         
    88  
    89         if(!objects) { 
     63         
     64        midgard_res *res =  
     65                mgd_ungrouped_select(mgd->mgd, "id, admingroup, guid, realm, name", "sitegroup", 
     66                                "name=$q", NULL, name); 
     67         
     68        if (!res) { 
     69                 
    9070                MIDGARD_ERRNO_SET(mgd->mgd, MGD_ERR_NOT_EXISTS); 
    9171                return NULL; 
    9272        } 
    9373         
    94         guint i; 
    95         if(holder->elements > 1) { 
    96                  
    97                 for(i = 0; i < holder->elements ; i++) { 
    98                         g_object_unref(objects[i]);                      
    99                 } 
    100                 g_free(objects); 
     74        guint j = mgd_rows(res); 
     75 
     76        if(j > 1) { 
     77 
    10178                MIDGARD_ERRNO_SET(mgd->mgd, MGD_ERR_INTERNAL); 
    10279                g_warning("Database inconsistency. Found %d sitegroups with %s name", 
    103                                 holder->elements, name); 
    104                 g_free(holder); 
     80                                j, name); 
     81                mgd_release(res); 
     82 
    10583                return NULL; 
    10684        } 
    10785 
    108         self = MIDGARD_SITEGROUP(objects[0]); 
    109         g_free(objects); 
    110         g_free(holder); 
     86        if(j == 0) { 
     87                 
     88                mgd_release(res); 
     89                return NULL; 
     90        } 
     91 
     92        mgd_fetch(res); 
     93 
     94        self = (MidgardSitegroup *)g_object_new(MIDGARD_TYPE_SITEGROUP, NULL); 
     95        self->dbpriv->mgd = mgd; 
     96 
     97        self->id = mgd_sql2id(res, 0); 
     98        self->adminid = mgd_sql2id(res, 1); 
     99        self->dbpriv->guid = g_strdup((char *)mgd_colvalue(res, 2)); 
     100        self->realm = g_strdup((char *)mgd_colvalue(res, 3)); 
     101        self->name = g_strdup((char *)mgd_colvalue(res, 4)); 
     102 
     103        mgd_release(res); 
    111104 
    112105        return self;