summaryrefslogtreecommitdiff
path: root/src/database-redis.cpp
diff options
context:
space:
mode:
authorkwolekr <kwolekr@minetest.net>2015-01-15 16:20:05 -0500
committerkwolekr <kwolekr@minetest.net>2015-01-15 16:48:56 -0500
commit9736548720a96c9c7f739edb0435d9ba4ad80652 (patch)
tree3f92b63d017e9baac042ed3837bbdf040d40c73f /src/database-redis.cpp
parent0330cec7ec55126c9cc441373cde1253bed895ee (diff)
downloadminetest-9736548720a96c9c7f739edb0435d9ba4ad80652.tar.gz
minetest-9736548720a96c9c7f739edb0435d9ba4ad80652.tar.bz2
minetest-9736548720a96c9c7f739edb0435d9ba4ad80652.zip
Add ability to delete MapBlocks from map
Also add a Lua API and chatcommand for this
Diffstat (limited to 'src/database-redis.cpp')
-rw-r--r--src/database-redis.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/database-redis.cpp b/src/database-redis.cpp
index 028a0ab4d..b086f899d 100644
--- a/src/database-redis.cpp
+++ b/src/database-redis.cpp
@@ -123,6 +123,30 @@ std::string Database_Redis::loadBlock(v3s16 blockpos)
return str;
}
+bool Database_Redis::deleteBlock(v3s16 blockpos)
+{
+ std::string tmp = i64tos(getBlockAsInteger(blockpos));
+
+ redisReply *reply = (redisReply *)redisCommand(ctx, "HDEL %s %s",
+ hash.c_str(), tmp.c_str());
+ if (!reply) {
+ errorstream << "WARNING: deleteBlock: redis command 'HDEL' failed on "
+ "block " << PP(blockpos) << ": " << ctx->errstr << std::endl;
+ freeReplyObject(reply);
+ return false;
+ }
+
+ if (reply->type == REDIS_REPLY_ERROR) {
+ errorstream << "WARNING: deleteBlock: deleting block " << PP(blockpos)
+ << "failed" << std::endl;
+ freeReplyObject(reply);
+ return false;
+ }
+
+ freeReplyObject(reply);
+ return true;
+}
+
void Database_Redis::listAllLoadableBlocks(std::list<v3s16> &dst)
{
redisReply *reply;