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