Create more generic function helpers so they can... help!
authorThadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Fri, 9 Oct 2009 11:51:36 +0000 (08:51 -0300)
committerThadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Fri, 9 Oct 2009 11:51:36 +0000 (08:51 -0300)
helper.c

index 847b356..fd3a083 100644 (file)
--- a/helper.c
+++ b/helper.c
 #include <string.h>
 #include <sqlite3.h>
 
-static char * talker_email_query = "select email from auth_user,"
-       "events_speaker where auth_user.id = events_speaker.user_id "
-       "and events_speaker.id = %d;";
-static char * talker_name_query = "select first_name from auth_user,"
+static char * talker_user_query = "select %s from auth_user,"
        "events_speaker where auth_user.id = events_speaker.user_id "
        "and events_speaker.id = %d;";
 
-static char * get_talker_userfield(sqlite3 *db, char *query, int id)
+static char * get_oneliner(sqlite3 *db, char *query, size_t qlen)
 {
        sqlite3_stmt *stmt;
-       char * s;
        int r;
-       char *email = NULL;
-       r = asprintf(&s, query, id);
-       r = sqlite3_prepare_v2(db, s, r, &stmt, NULL);
-       free(s);
+       char *value = NULL;
+       if (!qlen)
+               qlen = strlen(query);
+       r = sqlite3_prepare_v2(db, query, qlen, &stmt, NULL);
        while (sqlite3_step(stmt) == SQLITE_ROW) {
-               if (email)
-                       free(email);
-               email = strdup(sqlite3_column_text(stmt, 0));
+               if (value)
+                       free(value);
+               value = strdup(sqlite3_column_text(stmt, 0));
        }
        sqlite3_finalize(stmt);
-       return email;
+       return value;
+}
+
+static char * get_oneliner_field_by_id(sqlite3 *db, char *query,
+                                      char *field, int id)
+{
+       char *s;
+       int r;
+       char *value;
+       r = asprintf(&s, query, field, id);
+       value = get_oneliner(db, s, r);
+       free(s);
+       return value;
 }
 
 char * get_talker_email(sqlite3 *db, int id)
 {
-       return get_talker_userfield(db, talker_email_query, id);
+       return get_oneliner_field_by_id(db, talker_user_query, "email", id);
 }
 
 char * get_talker_name(sqlite3 *db, int id)
 {
-       return get_talker_userfield(db, talker_name_query, id);
+       return get_oneliner_field_by_id(db, talker_user_query, "first_name",
+                                       id);
 }