lib/sqlite/Util: add ExecuteModified()

This commit is contained in:
Max Kellermann 2014-12-12 21:21:56 +01:00
parent cfdbaf331e
commit 12b4a666bc
2 changed files with 23 additions and 14 deletions

View File

@ -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)

View File

@ -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