From b122b2393f6ec9ce8cfe3f69e133a6fe89368c89 Mon Sep 17 00:00:00 2001 From: "7u83@mail.ru" <7u83@mail.ru@noemail.net> Date: Mon, 28 Mar 2016 14:50:06 +0000 Subject: [PATCH] sql methods to write radios FossilOrigin-Name: 3fd77a93e20c46a1b95cca54dea233bec9b1c21bcc3832131244cf65d9b5a88d --- src/ac/db.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++--- src/ac/db.h | 2 ++ 2 files changed, 76 insertions(+), 3 deletions(-) diff --git a/src/ac/db.c b/src/ac/db.c index 70b9f618..378fa569 100644 --- a/src/ac/db.c +++ b/src/ac/db.c @@ -16,11 +16,12 @@ static const char * init_tables = "\ CREATE TABLE IF NOT EXISTS acs (acid TEXT PRIMARY KEY, acname TEXT, lastseen TIMESTAMP); \ CREATE TABLE IF NOT EXISTS radios (\ wtpid TEXT,\ - radioid TEXT,\ + rid TEXT,\ key TEXT,\ + sub_key,\ val TEXT, \ upd INTEGER, \ - PRIMARY KEY (wtpid,radioid)\ + PRIMARY KEY (wtpid,rid,key,sub_key)\ );\ CREATE TABLE IF NOT EXISTS acips (acid TEXT,ip TEXT); \ CREATE TABLE IF NOT EXISTS wtps (wtpid TEXT PRIMARY KEY, acid TEXT,lastseen TIMESTAMP); \ @@ -88,7 +89,7 @@ static sqlite3_stmt * put_wtp_prop_stmt; static sqlite3_stmt * get_tasks_stmt; static sqlite3_stmt * stmt_ping_wtp; - +static sqlite3_stmt * stmt_put_radio_prop; int db_start() { @@ -121,6 +122,15 @@ int db_start() goto errX; + sql = "INSERT OR REPLACE INTO radios\ + (wtpid,rid,key,sub_key,val,upd)\ + VALUES (?,?,?,?,?,0)"; + + rc = sqlite3_prepare_v2(handle, sql,-1, &stmt_put_radio_prop,0); + if (rc) + goto errX; + + /* Prepare WTP ping statement */ sql = "INSERT OR REPLACE INTO wtps (wtpid,acid,lastseen) VALUES(?,?,datetime('now'))"; rc = sqlite3_prepare_v2(handle, sql,-1, &stmt_ping_wtp,0); @@ -146,6 +156,67 @@ errX: } +void db_put_radio_prop(const char *wtp_id,const char *rid, const char * key,const char *sub_key,const char * val) +{ + int rc=0; + +// DBGX("Putting %s/%s:%s",id,sub_id,val); +// (wtpid,rid,key,sub_key,val,upd) + + sqlite3_reset(stmt_put_radio_prop); + sqlite3_clear_bindings(stmt_put_radio_prop); + + if(sqlite3_bind_text(stmt_put_radio_prop,1,wtp_id,-1,SQLITE_STATIC)) + goto errX; + + if(sqlite3_bind_text(stmt_put_radio_prop,2,rid,-1,SQLITE_STATIC)) + goto errX; + + + + if (sqlite3_bind_text(stmt_put_radio_prop,3,key,-1,SQLITE_STATIC)) + goto errX; + + + if (!sub_key) + sub_key=CW_ITEM_NONE; + + if (sqlite3_bind_text(stmt_put_radio_prop,4,sub_key,-1,SQLITE_STATIC)) + goto errX; + + if (sqlite3_bind_text(stmt_put_radio_prop,5,val,-1,SQLITE_STATIC)) + goto errX; + + + +// if (sqlite3_bind_int(put_wtp_prop_stmt,5,0)) +// goto errX; + +// cw_dbg(DBG_X,"Her I am already, next is step"); + + rc = sqlite3_step(stmt_put_radio_prop); + if (rc != SQLITE_DONE) + goto errX; + + +// cw_dbg(DBG_X,"SQL schould be fine"); + + return; +errX: +// cw_dbg (DBG_X, "Iam on err %d\n",rc); + + + if (rc) { + cw_log(LOG_ERR,"Can't update database with WTP props: %d - %s", + rc,sqlite3_errmsg(handle)); + } + +} + + + + + void db_ping() { int rc = sqlite3_step(ping_stmt); diff --git a/src/ac/db.h b/src/ac/db.h index 57380d9b..a93d67b1 100644 --- a/src/ac/db.h +++ b/src/ac/db.h @@ -12,6 +12,8 @@ int db_get_tasks(struct conn * conn,const char * wtpid); void db_put_wtp_prop(const char *wtp_id,const char * id,const char *sub_id,const char * val); mavl_conststr_t db_get_update_tasks(struct conn * conn,const char * wtpid); +void db_put_radio_prop(const char *wtp_id,const char *rid, const char * key,const char *sub_key,const char * val); + #endif