mirror of https://git.48k.eu/ogserver
#1052 Populate session column when adding actions
If the scope of a command, procedure or task is related to a group of computers then actions associated with that schedule can share the same session value. og_dbi_add_action was not initializing session value, as it is only used for visualization purposes in the legacy web interface. This patch enables og_dbi_add_action to populate session column by assigning it the id value of the first action related to the scope. Example: Power off command for a room scope of 4 clients will result in 4 actions, a power off for each client. The first action id will determine the session value for the rest.master
parent
33d8cecfe1
commit
261d490c4e
16
src/rest.c
16
src/rest.c
|
@ -2666,7 +2666,7 @@ static int og_cmd_legacy(const char *input, struct og_cmd *cmd)
|
|||
return err;
|
||||
}
|
||||
|
||||
static int og_dbi_add_action(const struct og_dbi *dbi, const struct og_task *task,
|
||||
static int og_dbi_add_action(const struct og_dbi *dbi, struct og_task *task,
|
||||
struct og_cmd *cmd)
|
||||
{
|
||||
char start_date_string[24];
|
||||
|
@ -2692,7 +2692,7 @@ static int og_dbi_add_action(const struct og_dbi *dbi, const struct og_task *tas
|
|||
"VALUES (%d, %d, %d, '%s', '%s', %d, %d, '%s', "
|
||||
"'%s', %d, %d, %d, %d, '%s', %d, %d, %d)",
|
||||
cmd->client_id, EJECUCION_TAREA, task->task_id,
|
||||
"", cmd->ip, 0, task->command_id,
|
||||
"", cmd->ip, task->session, task->command_id,
|
||||
task->params, start_date_string,
|
||||
ACCION_INICIADA, ACCION_SINRESULTADO,
|
||||
task->type_scope, task->scope, "",
|
||||
|
@ -2704,13 +2704,23 @@ static int og_dbi_add_action(const struct og_dbi *dbi, const struct og_task *tas
|
|||
__func__, __LINE__, msglog);
|
||||
return -1;
|
||||
}
|
||||
|
||||
cmd->id = dbi_conn_sequence_last(dbi->conn, NULL);
|
||||
if (!task->session) {
|
||||
task->session = cmd->id;
|
||||
dbi_result_free(result);
|
||||
result = dbi_conn_queryf(dbi->conn,
|
||||
"UPDATE acciones SET sesion=%d "
|
||||
"WHERE idaccion=%d",
|
||||
task->session, cmd->id);
|
||||
}
|
||||
|
||||
dbi_result_free(result);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int og_queue_task_command(struct og_dbi *dbi, const struct og_task *task,
|
||||
static int og_queue_task_command(struct og_dbi *dbi, struct og_task *task,
|
||||
char *query)
|
||||
{
|
||||
struct og_cmd *cmd;
|
||||
|
|
|
@ -55,6 +55,7 @@ struct og_task {
|
|||
uint32_t center_id;
|
||||
uint32_t schedule_id;
|
||||
uint32_t type_scope;
|
||||
uint32_t session;
|
||||
uint32_t scope;
|
||||
const char *filtered_scope;
|
||||
const char *params;
|
||||
|
|
Loading…
Reference in New Issue