Software / code / prosody-modules
Comparison
mod_storage_gdbm/mod_storage_gdbm.lua @ 1630:0fcd63818aa1
mod_storage_gdbm: Make write operation delete data when passed 'nil' as value instead of storing a literal "nil" string
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Wed, 25 Mar 2015 17:39:29 +0100 |
| parent | 1629:36eb0dbea7ba |
| child | 1631:98427ed3d53f |
comparison
equal
deleted
inserted
replaced
| 1629:36eb0dbea7ba | 1630:0fcd63818aa1 |
|---|---|
| 40 | 40 |
| 41 local keyval = {}; | 41 local keyval = {}; |
| 42 local keyval_mt = { __index = keyval, suffix = ".db" }; | 42 local keyval_mt = { __index = keyval, suffix = ".db" }; |
| 43 | 43 |
| 44 function keyval:set(user, value) | 44 function keyval:set(user, value) |
| 45 local ok, err = g_set(self._db, user or "@", serialize(value)); | 45 if type(value) == "table" and next(value) == nil then |
| 46 value = nil; | |
| 47 end | |
| 48 if value ~= nil then | |
| 49 value = serialize(value); | |
| 50 end | |
| 51 local ok, err = (value and g_set or g_del)(self._db, user or "@", value); | |
| 46 if not ok then return nil, err; end | 52 if not ok then return nil, err; end |
| 47 return true; | 53 return true; |
| 48 end | 54 end |
| 49 | 55 |
| 50 function keyval:get(user) | 56 function keyval:get(user) |