further SMS work

* implement ID based lookup of gsm_subscriber from database
* look-up recipient and sender subscribers from database
This commit is contained in:
Harald Welte 2009-07-05 14:06:41 +02:00
parent 51cda55981
commit be3e3784dc
2 changed files with 25 additions and 1 deletions

View File

@ -42,6 +42,7 @@ enum gsm_subscriber_field {
GSM_SUBSCRIBER_IMSI,
GSM_SUBSCRIBER_TMSI,
GSM_SUBSCRIBER_EXTENSION,
GSM_SUBSCRIBER_ID,
};
enum gsm_subscriber_update_reason {

View File

@ -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");
/* FIXME: fill gsm_sms from database */
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 */
text = dbi_result_get_string(result, "text");
if (text)
strncpy(sms->text, text, sizeof(sms->text));
dbi_result_free(result);
return sms;