aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/db.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2009-07-05 14:06:41 +0200
committerHarald Welte <laforge@gnumonks.org>2009-07-05 14:06:41 +0200
commitbe3e3784dc435cc64f70b0afef299097f9884c1d (patch)
tree50303b98c233a79e0ebbc219f84ac30a7a669a0e /openbsc/src/db.c
parent51cda5598157be817d24098283a84158c94a478d (diff)
further SMS work
* implement ID based lookup of gsm_subscriber from database * look-up recipient and sender subscribers from database
Diffstat (limited to 'openbsc/src/db.c')
-rw-r--r--openbsc/src/db.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/openbsc/src/db.c b/openbsc/src/db.c
index 1bcd10175..2d9974955 100644
--- a/openbsc/src/db.c
+++ b/openbsc/src/db.c
@@ -226,6 +226,13 @@ struct gsm_subscriber *db_get_subscriber(enum gsm_subscriber_field field, const
);
free(quoted);
break;
+ case GSM_SUBSCRIBER_ID:
+ dbi_conn_quote_string_copy(conn, id, &quoted);
+ result = dbi_conn_queryf(conn,
+ "SELECT * FROM Subscriber "
+ "WHERE id = %s ", quoted);
+ free(quoted);
+ break;
default:
printf("DB: Unknown query selector for Subscriber.\n");
return NULL;
@@ -428,7 +435,10 @@ int db_sms_store(struct gsm_sms *sms)
struct gsm_sms *db_sms_get_unsent(int min_id)
{
dbi_result result;
+ long long unsigned int sender_id, receiver_id;
struct gsm_sms *sms = malloc(sizeof(*sms));
+ char *text;
+ char buf[32];
if (!sms) {
free(sms);
@@ -442,8 +452,21 @@ struct gsm_sms *db_sms_get_unsent(int min_id)
free(sms);
return NULL;
}
+ sms->id = dbi_result_get_ulonglong(result, "id");
+
+ sender_id = dbi_result_get_ulonglong(result, "sender_id");
+ sprintf(buf, "%llu", sender_id);
+ sms->sender = db_get_subscriber(GSM_SUBSCRIBER_ID, buf);
+
+ receiver_id = dbi_result_get_ulonglong(result, "receiver_id");
+ sprintf(buf, "%llu", receiver_id);
+ sms->receiver = db_get_subscriber(GSM_SUBSCRIBER_ID, buf);
+
+ /* FIXME: fill header */
- /* FIXME: fill gsm_sms from database */
+ text = dbi_result_get_string(result, "text");
+ if (text)
+ strncpy(sms->text, text, sizeof(sms->text));
dbi_result_free(result);
return sms;