static void dlr_pgsql_flush(void) { Octstr *sql; sql = octstr_format("DELETE FROM %s;", octstr_get_cstr(fields->table)); pgsql_update(sql); octstr_destroy(sql); }
static void dlr_pgsql_update(const Octstr *smsc, const Octstr *ts, const Octstr *dst, int status) { Octstr *sql; debug("dlr.pgsql", 0, "updating DLR status in database"); sql = octstr_format("UPDATE %s SET %s=%d WHERE %s='%s' AND %s='%s' LIMIT 1;", octstr_get_cstr(fields->table), octstr_get_cstr(fields->field_status), status, octstr_get_cstr(fields->field_smsc), octstr_get_cstr(smsc), octstr_get_cstr(fields->field_ts), octstr_get_cstr(ts)); pgsql_update(sql); octstr_destroy(sql); }
static void dlr_pgsql_remove(const Octstr *smsc, const Octstr *ts, const Octstr *dst) { Octstr *sql; debug("dlr.pgsql", 0, "removing DLR from database"); sql = octstr_format("DELETE FROM %s WHERE %s='%s' AND %s='%s' LIMIT 1;", octstr_get_cstr(fields->table), octstr_get_cstr(fields->field_smsc), octstr_get_cstr(smsc), octstr_get_cstr(fields->field_ts), octstr_get_cstr(ts)); pgsql_update(sql); octstr_destroy(sql); }
static void dlr_pgsql_update(const Octstr *smsc, const Octstr *ts, const Octstr *dst, int status) { Octstr *sql, *like; debug("dlr.pgsql", 0, "updating DLR status in database"); if (dst) like = octstr_format("AND \"%S\" LIKE '%%%S'", fields->field_dst, dst); else like = octstr_imm(""); sql = octstr_format("UPDATE \"%S\" SET \"%S\"=%d WHERE oid = (SELECT " "oid FROM \"%S\" WHERE \"%S\"='%S' AND \"%S\"='%S' %S LIMIT 1);", fields->table, fields->field_status, status, fields->table, fields->field_smsc, smsc, fields->field_ts, ts, like); if (!pgsql_update(sql)) warning(0, "DLR: PGSQL: No dlr updated for DST<%s> (status: %d)", octstr_get_cstr(dst), status); octstr_destroy(sql); octstr_destroy(like); }
static void dlr_pgsql_remove(const Octstr *smsc, const Octstr *ts, const Octstr *dst) { Octstr *sql, *like; debug("dlr.pgsql", 0, "removing DLR from database"); if (dst) like = octstr_format("AND \"%S\" LIKE '%%%S'", fields->field_dst, dst); else like = octstr_imm(""); sql = octstr_format("DELETE FROM \"%S\" WHERE oid = (SELECT oid FROM " "\"%S\" WHERE \"%S\"='%S' AND \"%S\"='%S' %S LIMIT 1);", fields->table, fields->table, fields->field_smsc, smsc, fields->field_ts, ts, like); if (!pgsql_update(sql)) warning(0, "DLR: PGSQL: No dlr deleted for DST<%s>", octstr_get_cstr(dst)); octstr_destroy(sql); octstr_destroy(like); }
static void dlr_pgsql_add(struct dlr_entry *entry) { Octstr *sql; sql = octstr_format("INSERT INTO %s (%s, %s, %s, %s, %s, %s, %s, %s, %s) VALUES " "('%s', '%s', '%s', '%s', '%s', '%s', '%d', '%s', '%d');", octstr_get_cstr(fields->table), octstr_get_cstr(fields->field_smsc), octstr_get_cstr(fields->field_ts), octstr_get_cstr(fields->field_src), octstr_get_cstr(fields->field_dst), octstr_get_cstr(fields->field_serv), octstr_get_cstr(fields->field_url), octstr_get_cstr(fields->field_mask), octstr_get_cstr(fields->field_boxc), octstr_get_cstr(fields->field_status), octstr_get_cstr(entry->smsc), octstr_get_cstr(entry->timestamp), octstr_get_cstr(entry->source), octstr_get_cstr(entry->destination), octstr_get_cstr(entry->service), octstr_get_cstr(entry->url), entry->mask, octstr_get_cstr(entry->boxc_id), 0); pgsql_update(sql); octstr_destroy(sql); dlr_entry_destroy(entry); }
static void dlr_pgsql_add(struct dlr_entry *entry) { Octstr *sql; sql = octstr_format("INSERT INTO \"%s\" (\"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\") VALUES " "('%s', '%s', '%s', '%s', '%s', '%s', '%d', '%s', '%d');", octstr_get_cstr(fields->table), octstr_get_cstr(fields->field_smsc), octstr_get_cstr(fields->field_ts), octstr_get_cstr(fields->field_src), octstr_get_cstr(fields->field_dst), octstr_get_cstr(fields->field_serv), octstr_get_cstr(fields->field_url), octstr_get_cstr(fields->field_mask), octstr_get_cstr(fields->field_boxc), octstr_get_cstr(fields->field_status), octstr_get_cstr(entry->smsc), octstr_get_cstr(entry->timestamp), octstr_get_cstr(entry->source), octstr_get_cstr(entry->destination), octstr_get_cstr(entry->service), octstr_get_cstr(entry->url), entry->mask, octstr_get_cstr(entry->boxc_id), 0); if (!pgsql_update(sql)) warning(0, "DLR: PGSQL: No dlr inserted for DST<%s>", octstr_get_cstr(entry->destination)); octstr_destroy(sql); dlr_entry_destroy(entry); }