You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.5 KiB
89 lines
2.5 KiB
#include <rtcom-eventlogger/eventlogger.h>
|
|
#include <glib.h>
|
|
#include <glib/gstdio.h>
|
|
|
|
#include "models/ChatMessage.h"
|
|
|
|
struct rtcom_query {
|
|
RTComElQuery *query = NULL;
|
|
RTComElIter *it = NULL;
|
|
RTComEl *el = NULL;
|
|
};
|
|
|
|
#define LOOKUP_INT(x) \
|
|
g_value_get_int((const GValue*)g_hash_table_lookup(values, x))
|
|
#define LOOKUP_BOOL(x) \
|
|
g_value_get_boolean((const GValue*)g_hash_table_lookup(values, x))
|
|
#define LOOKUP_STR(x) \
|
|
g_value_get_string((const GValue*)g_hash_table_lookup(values, x))
|
|
|
|
rtcom_query* rtcomStartQuery(const int limit, const int offset, const RTComElQueryGroupBy group_by) {
|
|
RTComElQuery *query = NULL;
|
|
RTComElIter *it = NULL;
|
|
RTComEl *el = NULL;
|
|
|
|
el = rtcom_el_new();
|
|
query = rtcom_el_query_new(el);
|
|
|
|
if(group_by != RTCOM_EL_QUERY_GROUP_BY_NONE)
|
|
rtcom_el_query_set_group_by(query, group_by);
|
|
|
|
rtcom_el_query_set_limit(query, limit);
|
|
rtcom_el_query_set_offset(query, offset);
|
|
|
|
return new rtcom_query{query, it , el};
|
|
}
|
|
|
|
QList<ChatMessage*> rtcomIterateResults(rtcom_query *query_struct) {
|
|
QList<ChatMessage*> results;
|
|
query_struct->it = rtcom_el_get_events(query_struct->el, query_struct->query);
|
|
|
|
if(query_struct->it && rtcom_el_iter_first(query_struct->it)) {
|
|
do {
|
|
GHashTable *values = NULL;
|
|
values = rtcom_el_iter_get_value_map(
|
|
query_struct->it,
|
|
"id",
|
|
"service",
|
|
"group-uid",
|
|
"local-uid",
|
|
"remote-uid",
|
|
"remote-name",
|
|
"remote-ebook-uid",
|
|
"content",
|
|
"icon-name",
|
|
"start-time",
|
|
"event-count",
|
|
"group-title",
|
|
"event-type",
|
|
"outgoing",
|
|
"flags",
|
|
NULL);
|
|
|
|
auto *item = new ChatMessage(
|
|
LOOKUP_INT("id"),
|
|
LOOKUP_STR("service"),
|
|
LOOKUP_STR("group-uid"),
|
|
LOOKUP_STR("local-uid"),
|
|
LOOKUP_STR("remote-uid"),
|
|
LOOKUP_STR("remote-name"),
|
|
LOOKUP_STR("remote-ebook-uid"),
|
|
LOOKUP_STR("content"),
|
|
LOOKUP_STR("icon-name"),
|
|
LOOKUP_INT("start-time"),
|
|
LOOKUP_INT("event-count"),
|
|
LOOKUP_STR("group-title"),
|
|
LOOKUP_STR("event-type"),
|
|
LOOKUP_BOOL("outgoing"),
|
|
LOOKUP_INT("flags"));
|
|
results << item;
|
|
} while (rtcom_el_iter_next(query_struct->it));
|
|
g_object_unref(query_struct->it);
|
|
} else {
|
|
qCritical() << "Failed to init iterator to start";
|
|
}
|
|
|
|
g_object_unref(query_struct->query);
|
|
return results;
|
|
}
|