fix: all the bugs with the new database and commanding

This commit is contained in:
Tobias Reisinger 2020-08-24 23:45:00 +02:00
parent dd9e533f22
commit 0eef646fe0
5 changed files with 45 additions and 17 deletions
src/models

View file

@ -66,19 +66,8 @@ relay_db_select_mapper(sqlite3_stmt *stmt)
}
}
schedule_t **schedules = schedule_get_relay_weekdays(new_relay->id);
for(int i = 0; i < 7; ++i)
{
if(schedules[i] == NULL)
{
LOGGER_ERR("got only %d/7 schedules for relay_id %d\n", i, new_relay->id);
relay_free(new_relay);
free(schedules);
return NULL;
}
new_relay->schedules[i] = schedules[i];
}
free(schedules); // don't free list, because contents are kept in relay->schedules
memset(new_relay->schedules, 0, sizeof(schedule_t*) * 7);
relay_reload_schedules(new_relay);
relay_reload_active_schedule(new_relay);
@ -194,6 +183,38 @@ relay_reload_active_schedule(relay_t *relay)
relay->active_schedule = relay->schedules[helper_get_weekday(time_struct)];
}
void
relay_reload_schedules(relay_t *relay)
{
schedule_t **schedules = schedule_get_relay_weekdays(relay->id);
uuid_t off_id;
memset(off_id, 0, sizeof(uuid_t));
memcpy(off_id, "off", 3);
int fill_with_off = 0;
for(int i = 0; i < 7; ++i)
{
if(schedules[i] == NULL || fill_with_off)
{
LOGGER_WARNING("got only %d/7 schedules for relay_id %d\n", i, relay->id);
relay->schedules[i] = schedule_get_by_uid(off_id);
fill_with_off = 1;
}
else
{
if(relay->schedules[i])
{
schedule_free(relay->schedules[i]);
}
relay->schedules[i] = schedules[i];
}
}
free(schedules); // don't free list, because contents are kept in relay->schedules
}
void
relay_free(relay_t *relay)
{