Commit 12b4a666 authored by Max Kellermann's avatar Max Kellermann

lib/sqlite/Util: add ExecuteModified()

parent cfdbaf33
......@@ -137,6 +137,17 @@ ExecuteChanges(sqlite3_stmt *stmt)
return sqlite3_changes(sqlite3_db_handle(stmt));
}
/**
* Wrapper for ExecuteChanges() that returns true if at least one row
* was modified. Returns false if nothing was modified or if an error
* occurred.
*/
static inline bool
ExecuteModified(sqlite3_stmt *stmt)
{
return ExecuteChanges(stmt) > 0;
}
template<typename F>
static inline bool
ExecuteForEach(sqlite3_stmt *stmt, F &&f)
......
......@@ -224,15 +224,14 @@ sticker_update_value(const char *type, const char *uri,
if (!BindAll(stmt, value, type, uri, name))
return false;
int ret = ExecuteChanges(stmt);
if (ret < 0)
return false;
bool modified = ExecuteModified(stmt);
sqlite3_reset(stmt);
sqlite3_clear_bindings(stmt);
idle_add(IDLE_STICKER);
return ret > 0;
if (modified)
idle_add(IDLE_STICKER);
return modified;
}
static bool
......@@ -291,14 +290,14 @@ sticker_delete(const char *type, const char *uri)
if (!BindAll(stmt, type, uri))
return false;
if (!ExecuteCommand(stmt))
return false;
bool modified = ExecuteModified(stmt);
sqlite3_reset(stmt);
sqlite3_clear_bindings(stmt);
idle_add(IDLE_STICKER);
return true;
if (modified)
idle_add(IDLE_STICKER);
return modified;
}
bool
......@@ -313,15 +312,14 @@ sticker_delete_value(const char *type, const char *uri, const char *name)
if (!BindAll(stmt, type, uri, name))
return false;
int ret = ExecuteChanges(stmt);
if (ret < 0)
return false;
bool modified = ExecuteModified(stmt);
sqlite3_reset(stmt);
sqlite3_clear_bindings(stmt);
idle_add(IDLE_STICKER);
return ret > 0;
if (modified)
idle_add(IDLE_STICKER);
return modified;
}
void
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment