introduce lookup of subscribers based on their extension number
This commit is contained in:
parent
cbc7b06534
commit
9c564b85e6
|
@ -28,12 +28,14 @@ struct gsm_subscriber {
|
|||
enum gsm_subscriber_field {
|
||||
GSM_SUBSCRIBER_IMSI,
|
||||
GSM_SUBSCRIBER_TMSI,
|
||||
GSM_SUBSCRIBER_EXTENSION,
|
||||
};
|
||||
|
||||
struct gsm_subscriber *subscr_get(struct gsm_subscriber *subscr);
|
||||
struct gsm_subscriber *subscr_put(struct gsm_subscriber *subscr);
|
||||
struct gsm_subscriber *subscr_get_by_tmsi(const char *tmsi);
|
||||
struct gsm_subscriber *subscr_get_by_imsi(const char *imsi);
|
||||
struct gsm_subscriber *subscr_get_by_extension(const char *ext);
|
||||
int subscr_update(struct gsm_subscriber *s, struct gsm_bts *bts);
|
||||
|
||||
/* internal */
|
||||
|
|
10
src/db.c
10
src/db.c
|
@ -119,6 +119,7 @@ int db_prepare() {
|
|||
"id INTEGER PRIMARY KEY AUTOINCREMENT, "
|
||||
"created TIMESTAMP NOT NULL, "
|
||||
"updated TIMESTAMP NOT NULL, "
|
||||
"name TEXT, "
|
||||
"imei NUMERIC UNIQUE NOT NULL"
|
||||
")"
|
||||
);
|
||||
|
@ -219,6 +220,15 @@ struct gsm_subscriber *db_get_subscriber(enum gsm_subscriber_field field, const
|
|||
);
|
||||
free(quoted);
|
||||
break;
|
||||
case GSM_SUBSCRIBER_EXTENSION:
|
||||
dbi_conn_quote_string_copy(conn, id, "ed);
|
||||
result = dbi_conn_queryf(conn,
|
||||
"SELECT * FROM Subscriber "
|
||||
"WHERE extension = %s ",
|
||||
quoted
|
||||
);
|
||||
free(quoted);
|
||||
break;
|
||||
default:
|
||||
printf("DB: Unknown query selector for Subscriber.\n");
|
||||
return NULL;
|
||||
|
|
|
@ -78,6 +78,18 @@ struct gsm_subscriber *subscr_get_by_imsi(const char *imsi)
|
|||
return db_get_subscriber(GSM_SUBSCRIBER_IMSI, imsi);
|
||||
}
|
||||
|
||||
struct gsm_subscriber *subscr_get_by_extension(const char *ext)
|
||||
{
|
||||
struct gsm_subscriber *subscr;
|
||||
|
||||
llist_for_each_entry(subscr, &active_subscribers, entry) {
|
||||
if (strcmp(subscr->extension, ext) == 0)
|
||||
return subscr_get(subscr);
|
||||
}
|
||||
|
||||
return db_get_subscriber(GSM_SUBSCRIBER_EXTENSION, ext);
|
||||
}
|
||||
|
||||
int subscr_update(struct gsm_subscriber *s, struct gsm_bts *bts)
|
||||
{
|
||||
return db_sync_subscriber(s);
|
||||
|
|
Loading…
Reference in New Issue