int Store::insert(ContextStoreClient& client, const std::string& columns, std::vector<std::shared_ptr<Tuple>>& tuples)
{
//TODO: handling owner's ID
- //TODO: delete expired data
if (!__writable(client))
return E_ACCESS;
return E_NONE;
}
+
+void Store::removeExpired()
+{
+ std::string timePruningQuery;
+ std::string countPruningQuery;
+
+ // DELETE FROM <table> WHERE __timestamp < datetime('now', '-<retention> hours');
+ if (metadata.retention != 0) {
+ timePruningQuery =
+ "DELETE FROM [" + metadata.uri + "] WHERE " + COL_TIMESTAMP +
+ " < datetime('now', '-" + std::to_string(metadata.retention) + " hours');";
+ }
+
+ // DELETE FROM <table> WHERE rowid < (
+ // SELECT MIN(rowid) FROM (
+ // SELECT rowid FROM <table> ORDER BY rowid DESC LIMIT <limit>
+ // )
+ // );
+ if (metadata.limit != 0) {
+ countPruningQuery =
+ "DELETE FROM [" + metadata.uri + "] WHERE rowid <" \
+ " (SELECT MIN(rowid) FROM (SELECT rowid FROM [" + metadata.uri + "]" \
+ " ORDER BY rowid DESC LIMIT " + std::to_string(metadata.limit) + "));";
+ }
+
+ __getDatabase().execute(timePruningQuery + countPruningQuery, NULL);
+}