Skip to content

Commit

Permalink
Changed the way how the hmget is called.
Browse files Browse the repository at this point in the history
added a new method to redis model called set_ids
  • Loading branch information
dutradda committed Oct 24, 2016
1 parent 9b26561 commit 5f5955c
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 6 deletions.
11 changes: 9 additions & 2 deletions falconswagger/models/redis.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,8 +125,8 @@ def get(cls, session, ids=None, limit=None, offset=None, **kwargs):
return cls._unpack_objs(session.redis_bind.hgetall(cls.__key__))

if ids is None:
keys = [k.decode() for k in session.redis_bind.hkeys(cls.__key__)]
return cls._unpack_objs(session.redis_bind.hmget(cls.__key__, *keys[offset:limit]))
keys = [k.decode() for k in session.redis_bind.hkeys(cls.__key__)][offset:limit]
return cls._unpack_objs(session.redis_bind.hmget(cls.__key__, keys))
else:
ids = [cls._build_key(id_) for id_ in cls._to_list(ids)]
return cls._unpack_objs(session.redis_bind.hmget(cls.__key__, *ids[offset:limit]))
Expand All @@ -145,6 +145,13 @@ def get_ids_values(self, keys=None):

return tuple([self.get_(key) for key in sorted(keys)])

def set_ids(self, values, keys=None):
if keys is None:
keys = type(self).__id_names__

for key, value in zip(keys, values):
self[key] = value

def get_ids_map(self, keys=None):
if keys is None:
keys = type(self).__id_names__
Expand Down
2 changes: 1 addition & 1 deletion falconswagger/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@
# SOFTWARE.


VERSION = '0.5.2'
VERSION = '0.6.0'
6 changes: 3 additions & 3 deletions tests/unit/base/models/test_redis.py
Original file line number Diff line number Diff line change
Expand Up @@ -241,21 +241,21 @@ def test_get_all_with_limit(self, model):
session.redis_bind.hkeys.return_value = ['1'.encode(), '2'.encode()]
model.get(session, limit=1)

assert session.redis_bind.hmget.call_args_list == [mock.call('test', '1')]
assert session.redis_bind.hmget.call_args_list == [mock.call('test', ['1'])]

def test_get_all_with_limit_and_offset(self, model):
session = mock.MagicMock()
session.redis_bind.hkeys.return_value = ['1'.encode(), '2'.encode(), '3'.encode()]
model.get(session, limit=2, offset=1)

assert session.redis_bind.hmget.call_args_list == [mock.call('test', '2', '3')]
assert session.redis_bind.hmget.call_args_list == [mock.call('test', ['2', '3'])]

def test_get_all_with_offset(self, model):
session = mock.MagicMock()
session.redis_bind.hkeys.return_value = ['1'.encode(), '2'.encode(), '3'.encode()]
model.get(session, offset=2)

assert session.redis_bind.hmget.call_args_list == [mock.call('test', '3')]
assert session.redis_bind.hmget.call_args_list == [mock.call('test', ['3'])]


class TestRedisModelMetaGetMany(object):
Expand Down

0 comments on commit 5f5955c

Please sign in to comment.