#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);
}