Get talk title and iterate through its talkers.
[cascardo/avaliacao2008.git] / helper.c
index fd3a083..6834e67 100644 (file)
--- a/helper.c
+++ b/helper.c
@@ -59,6 +59,23 @@ static char * get_oneliner_field_by_id(sqlite3 *db, char *query,
        return value;
 }
 
+static int get_many_ids(sqlite3 *db, char *query, size_t qlen, int *ids,
+                       size_t len)
+{
+       sqlite3_stmt *stmt;
+       int r;
+       int i = 0;
+       if (!qlen)
+               qlen = strlen(query);
+       r = sqlite3_prepare_v2(db, query, qlen, &stmt, NULL);
+       while (sqlite3_step(stmt) == SQLITE_ROW) {
+               if (i < len)
+                       ids[i++] = sqlite3_column_int(stmt, 0);
+       }
+       sqlite3_finalize(stmt);
+       return i;
+}
+
 char * get_talker_email(sqlite3 *db, int id)
 {
        return get_oneliner_field_by_id(db, talker_user_query, "email", id);
@@ -70,4 +87,21 @@ char * get_talker_name(sqlite3 *db, int id)
                                        id);
 }
 
+static char * talk_title_query = "select %s from events_talk where id = %d;";
+char * get_talk_title(sqlite3 *db, int id)
+{
+       return get_oneliner_field_by_id(db, talk_title_query, "title", id);
+}
 
+static char *talk_talkers_query = "select speaker_id from "
+       "events_talk_speakers where talk_id = %d;";
+int get_talk_talkers(sqlite3 *db, int id, int *ids, int len)
+{
+       int r;
+       char *query;
+       size_t qlen;
+       qlen = asprintf(&query, talk_talkers_query, id);
+       r = get_many_ids(db, query, qlen, ids, len);
+       free(query);
+       return r;
+}