add: database transactions
This commit is contained in:
parent
7fa462ef1d
commit
7c6eed8dc2
8 changed files with 119 additions and 30 deletions
src/models
|
@ -116,6 +116,8 @@ controller_db_select(sqlite3_stmt *stmt)
|
|||
int
|
||||
controller_save(controller_t *controller)
|
||||
{
|
||||
int opened_transaction = database_transaction_begin();
|
||||
|
||||
sqlite3_stmt *stmt;
|
||||
if(controller->id)
|
||||
{
|
||||
|
@ -138,6 +140,11 @@ controller_save(controller_t *controller)
|
|||
{
|
||||
LOGGER_ERR("error updating data: %s\n", sqlite3_errmsg(global_database));
|
||||
}
|
||||
|
||||
if(opened_transaction)
|
||||
{
|
||||
database_transaction_rollback();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -145,6 +152,11 @@ controller_save(controller_t *controller)
|
|||
{
|
||||
controller->id = sqlite3_last_insert_rowid(global_database);
|
||||
}
|
||||
|
||||
if(opened_transaction)
|
||||
{
|
||||
database_transaction_commit();
|
||||
}
|
||||
}
|
||||
|
||||
cache_invalidate_controller(controller->id);
|
||||
|
|
|
@ -126,6 +126,8 @@ relay_db_select(sqlite3_stmt *stmt)
|
|||
int
|
||||
relay_save(relay_t *relay)
|
||||
{
|
||||
int opened_transaction = database_transaction_begin();
|
||||
|
||||
sqlite3_stmt *stmt;
|
||||
if(relay->id)
|
||||
{
|
||||
|
@ -148,6 +150,11 @@ relay_save(relay_t *relay)
|
|||
{
|
||||
LOGGER_ERR("error updating data: %s\n", sqlite3_errmsg(global_database));
|
||||
}
|
||||
|
||||
if(opened_transaction)
|
||||
{
|
||||
database_transaction_rollback();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -155,16 +162,20 @@ relay_save(relay_t *relay)
|
|||
{
|
||||
relay->id = sqlite3_last_insert_rowid(global_database);
|
||||
}
|
||||
}
|
||||
|
||||
LOGGER_DEBUG("cleaning relay_schedule junction\n");
|
||||
junction_relay_schedule_remove_for_relay(relay->id);
|
||||
|
||||
LOGGER_DEBUG("cleaning relay_schedule junction\n");
|
||||
junction_relay_schedule_remove_for_relay(relay->id);
|
||||
LOGGER_DEBUG("rebuilding relay_schedule junction\n");
|
||||
for(int i = 0; i < 7; ++i)
|
||||
{
|
||||
junction_relay_schedule_insert(i, relay->id, relay->schedules[i]->id);
|
||||
}
|
||||
|
||||
LOGGER_DEBUG("rebuilding relay_schedule junction\n");
|
||||
for(int i = 0; i < 7; ++i)
|
||||
{
|
||||
junction_relay_schedule_insert(i, relay->id, relay->schedules[i]->id);
|
||||
if(opened_transaction)
|
||||
{
|
||||
database_transaction_commit();
|
||||
}
|
||||
}
|
||||
|
||||
cache_invalidate_relay(relay->id);
|
||||
|
|
|
@ -112,6 +112,8 @@ schedule_db_select(sqlite3_stmt *stmt)
|
|||
int
|
||||
schedule_save(schedule_t *schedule)
|
||||
{
|
||||
int opened_transaction = database_transaction_begin();
|
||||
|
||||
sqlite3_stmt *stmt;
|
||||
if(schedule->id)
|
||||
{
|
||||
|
@ -134,6 +136,11 @@ schedule_save(schedule_t *schedule)
|
|||
{
|
||||
LOGGER_ERR("error updating data: %s\n", sqlite3_errmsg(global_database));
|
||||
}
|
||||
|
||||
if(opened_transaction)
|
||||
{
|
||||
database_transaction_rollback();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -141,6 +148,11 @@ schedule_save(schedule_t *schedule)
|
|||
{
|
||||
schedule->id = sqlite3_last_insert_rowid(global_database);
|
||||
}
|
||||
|
||||
if(opened_transaction)
|
||||
{
|
||||
database_transaction_commit();
|
||||
}
|
||||
}
|
||||
|
||||
cache_invalidate_schedule(schedule->id);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue