Exemplo n.º 1
0
static Eina_List *
zrpcdb_vm_keyvalue(Esql_Res *res){
  Eina_Iterator *it;
  Esql_Row *r;
  Eina_List *ret = NULL;
  KEYVALUE * tmp;
  EINA_SAFETY_ON_NULL_RETURN_VAL(res, NULL);

  if (!esql_res_rows_count(res)) return NULL;
  it = esql_res_row_iterator_new(res);
  EINA_ITERATOR_FOREACH(it, r)
    {
      Eina_Inlist *l;
      Esql_Cell *c;

      tmp = KEYVALUE_new();
      l = esql_row_cells_get(r);
      EINA_INLIST_FOREACH(l, c)
	{
	  if (!strcmp(c->colname, "uuid"))
	    tmp->key = eina_stringshare_add(c->value.string);
	  else if (!strcmp(c->colname, "avg"))
	    tmp->value = eina_stringshare_add(c->value.string);
	  tmp->type = eina_stringshare_add("double");
	}
      ret = eina_list_append(ret, tmp);
    }
Exemplo n.º 2
0
// emodel_load
static unsigned int
_esql_load(Esql_Res *res, void *data, Eina_Bool children_load)
{
   Esql_Model_Data *pd = (Esql_Model_Data*)data;
   Eina_Iterator *i;
   const Esql_Row *r;
   int cols;
   unsigned int count = 0;

   cols = esql_res_cols_count(res);
   i = esql_res_row_iterator_new(res);
   EINA_ITERATOR_FOREACH(i, r)
     {
        int c;
        for (c = 0; c < cols; ++c, ++count)
          {
             Eina_Value val;
             if (esql_row_value_column_get(r, c, &val))
               {
                  if(children_load == EINA_TRUE)
                    {
                       Eo *o;
                       char *table = eina_value_to_string(&val);
                       o = eo_add_ref(ESQL_MODEL_TABLE_CLASS, NULL,
                                         esql_model_table_constructor(pd->e, pd->conn.database, table, count));
                       pd->children_list = eina_list_append(pd->children_list, o);
                       free(table);
                       eina_value_flush(&val);
                    }
               }
          }
     }
Exemplo n.º 3
0
static void
on_query_results(Esql_Res *res, void *data)
{
   struct ctx *ctx = data;
   const Esql_Row *row;
   Eina_Iterator *itr;
   const char *cname;
   int i;

   assert(esql_res_rows_count(res) == INSERTED_ROWS);
   assert(esql_res_cols_count(res) == 2);

   ctx->res++;
   printf("results %u: rows=%d, columns=%d\n",
          ctx->res,
          esql_res_rows_count(res),
          esql_res_cols_count(res));

   cname = esql_res_col_name_get(res, 0);
   assert(cname!=NULL);
   assert(strcmp(cname, "i") == 0);

   cname = esql_res_col_name_get(res, 1);
   assert(cname!=NULL);
   assert(strcmp(cname, "s") == 0);

   i = 0;
   itr = esql_res_row_iterator_new(res);
   EINA_ITERATOR_FOREACH(itr, row)
     {
        const Eina_Value *val = esql_row_value_struct_get(row);
        const char *str;
        char buf[100];
        int num;

        assert(eina_value_struct_get(val, "i", &num));
        assert(i == num);

        snprintf(buf, sizeof(buf), "some-text-%10d", i);

        assert(eina_value_struct_get(val, "s", &str));
        assert(str!=NULL);
        assert(strcmp(str, buf) == 0);

        i++;
     }
   eina_iterator_free(itr);

   ecore_main_loop_quit();
}
Exemplo n.º 4
0
/**
 * Callbacks
 */
static unsigned int
_esql_model_load(Esql_Res *res, void *data)
{
   Eina_Iterator *i;
   const Esql_Row *r;
   unsigned int count = 0;
   Esql_Model_Table_Data *pd = (Esql_Model_Table_Data*)data;

   i = esql_res_row_iterator_new(res);
   EINA_ITERATOR_FOREACH(i, r)
     {
        Eina_Value val;
        if (esql_row_value_column_get(r, 0, &val))
          {
             Eo *child;
             char *str = eina_value_to_string(&val);
             char *database = NULL, *table = NULL;
             unsigned int _count = 0;
             count = atoi(str);
             free(str);
             eina_value_flush(&val);
             eina_value_struct_get(pd->properties, "database", &database);
             eina_value_struct_get(pd->properties, "table", &table);
             EINA_SAFETY_ON_NULL_RETURN_VAL(database, count);
             EINA_SAFETY_ON_NULL_RETURN_VAL(table, count);

             if(count)
               {
                  for(; _count < count; ++_count)
                    {
                       child =
                           eo_add_ref(ESQL_MODEL_ROW_CLASS,
                                             pd->obj, esql_model_row_constructor(pd->e, database, table, _count));
                       pd->children_list = eina_list_append(pd->children_list, child);
                    }
               }
          }
     }