Add support for #include, var_metric, and cat_metric in res_config_sqlite

(closes issue #10738, rbraun_proformatique)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82679 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.6.0
Russell Bryant 18 years ago
parent 96d9f820e9
commit 3dc9e8f38a

@ -15,6 +15,8 @@
*/ */
CREATE TABLE ast_config ( CREATE TABLE ast_config (
id INTEGER, id INTEGER,
cat_metric INT(11) NOT NULL DEFAULT 0,
var_metric INT(11) NOT NULL DEFAULT 0,
commented TINYINT(1) NOT NULL DEFAULT 0, commented TINYINT(1) NOT NULL DEFAULT 0,
filename VARCHAR(128) NOT NULL DEFAULT '', filename VARCHAR(128) NOT NULL DEFAULT '',
category VARCHAR(128) NOT NULL DEFAULT 'default', category VARCHAR(128) NOT NULL DEFAULT 'default',
@ -23,8 +25,9 @@ CREATE TABLE ast_config (
PRIMARY KEY (id) PRIMARY KEY (id)
); );
CREATE INDEX ast_config__idx__cat_metric ON ast_config(cat_metric);
CREATE INDEX ast_config__idx__var_metric ON ast_config(var_metric);
CREATE INDEX ast_config__idx__filename_commented ON ast_config(filename, commented); CREATE INDEX ast_config__idx__filename_commented ON ast_config(filename, commented);
CREATE INDEX ast_config__idx__category ON ast_config(category);
/* /*
* CDR table (this table is automatically created if non existent). * CDR table (this table is automatically created if non existent).

@ -113,6 +113,8 @@
enum { enum {
RES_CONFIG_SQLITE_CONFIG_ID, RES_CONFIG_SQLITE_CONFIG_ID,
RES_CONFIG_SQLITE_CONFIG_CAT_METRIC,
RES_CONFIG_SQLITE_CONFIG_VAR_METRIC,
RES_CONFIG_SQLITE_CONFIG_COMMENTED, RES_CONFIG_SQLITE_CONFIG_COMMENTED,
RES_CONFIG_SQLITE_CONFIG_FILENAME, RES_CONFIG_SQLITE_CONFIG_FILENAME,
RES_CONFIG_SQLITE_CONFIG_CATEGORY, RES_CONFIG_SQLITE_CONFIG_CATEGORY,
@ -184,6 +186,7 @@ struct cfg_entry_args {
struct ast_config *cfg; struct ast_config *cfg;
struct ast_category *cat; struct ast_category *cat;
char *cat_name; char *cat_name;
struct ast_flags flags;
}; };
/*! /*!
@ -589,7 +592,7 @@ static char *sql_get_config_table =
"SELECT *" "SELECT *"
" FROM '%q'" " FROM '%q'"
" WHERE filename = '%q' AND commented = 0" " WHERE filename = '%q' AND commented = 0"
" ORDER BY category;"; " ORDER BY cat_metric ASC, var_metric ASC;";
static int set_var(char **var, char *name, char *value) static int set_var(char **var, char *name, char *value)
{ {
@ -715,6 +718,22 @@ static int add_cfg_entry(void *arg, int argc, char **argv, char **columnNames)
args = arg; args = arg;
if (!strcmp(argv[RES_CONFIG_SQLITE_CONFIG_VAR_NAME], "#include")) {
struct ast_config *cfg;
char *val;
val = argv[RES_CONFIG_SQLITE_CONFIG_VAR_VAL];
cfg = ast_config_internal_load(val, args->cfg, args->flags, "");
if (!cfg) {
ast_log(LOG_WARNING, "Unable to include %s\n", val);
return 1;
} else {
args->cfg = cfg;
return 0;
}
}
if (!args->cat_name || strcmp(args->cat_name, argv[RES_CONFIG_SQLITE_CONFIG_CATEGORY])) { if (!args->cat_name || strcmp(args->cat_name, argv[RES_CONFIG_SQLITE_CONFIG_CATEGORY])) {
args->cat = ast_category_new(argv[RES_CONFIG_SQLITE_CONFIG_CATEGORY], "", 99999); args->cat = ast_category_new(argv[RES_CONFIG_SQLITE_CONFIG_CATEGORY], "", 99999);
@ -772,6 +791,7 @@ static struct ast_config *config_handler(const char *database, const char *table
args.cfg = cfg; args.cfg = cfg;
args.cat = NULL; args.cat = NULL;
args.cat_name = NULL; args.cat_name = NULL;
args.flags = flags;
ast_mutex_lock(&mutex); ast_mutex_lock(&mutex);

Loading…
Cancel
Save