Skip to content

Commit e7d213f

Browse files
committed
feat(DEVC-1286): remove DeprecatedRedisAdapter class and all related stuff
1 parent 7aa794a commit e7d213f

3 files changed

Lines changed: 2 additions & 357 deletions

File tree

src/corva/cache_adapter.py

Lines changed: 0 additions & 134 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
1-
from datetime import timedelta
21
from typing import (
32
Dict,
4-
List,
53
Optional,
64
Protocol,
75
Sequence,
86
Tuple,
9-
Union,
10-
overload,
117
)
128

139
import redis
@@ -85,133 +81,3 @@ def delete_many(self, keys: Sequence[str]) -> None:
8581
def delete_all(self) -> None:
8682
self.client.delete(self.hash_name)
8783

88-
89-
class DeprecatedRedisAdapter:
90-
"""Expands basic redis functionality
91-
92-
Serves the purpose of adding custom logic on top of basic redis functions
93-
(e.g. adding expiry to hset, which is not available out of the box).
94-
"""
95-
96-
DEFAULT_EXPIRY: timedelta = timedelta(days=60)
97-
REDIS_STORED_VALUE_TYPE = Union[bytes, str, int, float]
98-
99-
def __init__(
100-
self,
101-
hash_name: str,
102-
client: redis.Redis,
103-
):
104-
self.default_name = hash_name
105-
self.client = client
106-
107-
self.client.ping()
108-
109-
@overload
110-
def hset(
111-
self,
112-
name: Optional[str] = ...,
113-
key: str = ...,
114-
value: REDIS_STORED_VALUE_TYPE = ...,
115-
mapping: None = ...,
116-
expiry: Union[int, timedelta, None] = ...,
117-
) -> int:
118-
...
119-
120-
@overload
121-
def hset(
122-
self,
123-
name: Optional[str] = ...,
124-
key: None = ...,
125-
value: None = ...,
126-
mapping: Dict[str, REDIS_STORED_VALUE_TYPE] = ...,
127-
expiry: Union[int, timedelta, None] = ...,
128-
) -> int:
129-
...
130-
131-
def hset(
132-
self,
133-
name=None,
134-
key=None,
135-
value=None,
136-
mapping=None,
137-
expiry=DEFAULT_EXPIRY,
138-
) -> int:
139-
"""Stores the data in cache
140-
141-
params:
142-
key: key, which will contain the data
143-
value: data to be saved
144-
mapping: dict of key:data pairs to be saved
145-
expiry: time in seconds for when data will be deleted from cache
146-
expiration is reset with every hset call
147-
expiration can be disabled by setting expiry to None
148-
returns: number of inserted elements
149-
"""
150-
151-
name = name or self.default_name
152-
153-
n_set = self.client.hset(name=name, key=key, value=value, mapping=mapping)
154-
155-
if expiry is None and self.pttl(name=name) > 0:
156-
self.client.persist(name=name)
157-
158-
if expiry is not None:
159-
self.client.expire(name=name, time=expiry)
160-
161-
return n_set
162-
163-
def hget(
164-
self, key: str, name: Optional[str] = None
165-
) -> Union[REDIS_STORED_VALUE_TYPE, None]:
166-
"""Loads data from cache
167-
168-
params:
169-
key: key to load data from
170-
returns: stored data
171-
"""
172-
173-
name = name or self.default_name
174-
return self.client.hget(name=name, key=key)
175-
176-
def hgetall(
177-
self, name: Optional[str] = None
178-
) -> Dict[str, Union[REDIS_STORED_VALUE_TYPE]]:
179-
"""Loads all data from cache"""
180-
181-
name = name or self.default_name
182-
return self.client.hgetall(name=name)
183-
184-
def hdel(self, keys: List[str], name: Optional[str] = None) -> int:
185-
"""Deletes some data from cache
186-
187-
params:
188-
keys: list of keys to delete
189-
returns: number of deleted elements
190-
"""
191-
192-
name = name or self.default_name
193-
return self.client.hdel(name, *keys)
194-
195-
def delete(self, *names: List[str]) -> int:
196-
"""Deletes all data from cache"""
197-
198-
delete_names = names or [self.default_name]
199-
return self.client.delete(*delete_names)
200-
201-
def ttl(self, name: Optional[str] = None) -> int:
202-
"""Returns the number of seconds until expiration"""
203-
204-
name = name or self.default_name
205-
return self.client.ttl(name=name)
206-
207-
def pttl(self, name: Optional[str] = None) -> int:
208-
"""Returns the number of milliseconds until expiration"""
209-
210-
name = name or self.default_name
211-
return self.client.pttl(name=name)
212-
213-
def exists(self, *names: List[str]) -> int:
214-
"""Returns whether there is data in cache"""
215-
216-
exists_names = names or [self.default_name]
217-
return self.client.exists(*exists_names)

src/corva/service/cache_sdk.py

Lines changed: 2 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
import datetime
2-
import warnings
32
from typing import (
43
Dict,
5-
List,
64
Optional,
75
Protocol,
86
Sequence,
97
Tuple,
108
Union,
119
cast,
12-
overload,
1310
)
1411

1512
import fakeredis
@@ -76,9 +73,6 @@ def __init__(
7673
hash_name=hash_name,
7774
client=cast(redis.Redis, redis_client),
7875
)
79-
self.old_cache_repo = cache_adapter.DeprecatedRedisAdapter(
80-
hash_name=hash_name, client=cast(redis.Redis, redis_client)
81-
)
8276

8377
def set(self, key: str, value: str, ttl: int = SIXTY_DAYS) -> None:
8478
self.cache_repo.set(key=key, value=value, ttl=ttl)
@@ -103,103 +97,17 @@ def get_many(self, keys: Sequence[str]) -> Dict[str, Optional[str]]:
10397
def get_all(self) -> Dict[str, str]:
10498
return self.cache_repo.get_all()
10599

106-
@overload
107100
def delete(self, *, key: str) -> None:
108-
...
109-
110-
@overload
111-
def delete(self, keys: List[str], name: Optional[str] = ...) -> int:
112-
...
113-
114-
def delete(
115-
self,
116-
keys=None,
117-
name=None,
118-
*,
119-
key=None,
120-
):
121-
if keys is not None:
122-
warnings.warn(
123-
"The `keys` and `name` kwargs of `delete` cache method are deprecated "
124-
"and will be removed from corva in the next major version. "
125-
"Use `key` kwarg instead.",
126-
FutureWarning,
127-
)
128-
return self.old_cache_repo.hdel(keys=keys, name=name)
129-
130-
if key is not None:
131-
self.cache_repo.delete(key=key)
132-
return None
133-
134-
raise TypeError("Bad arguments")
101+
self.cache_repo.delete(key=key)
135102

136103
def delete_many(self, keys: Sequence[str]) -> None:
137104
self.cache_repo.delete_many(keys=keys)
138105

139-
@overload
140106
def delete_all(self) -> None:
141-
...
142-
143-
@overload
144-
def delete_all(self, *names: str):
145-
...
107+
self.cache_repo.delete_all()
146108

147-
def delete_all(self, *names):
148-
if names:
149-
warnings.warn(
150-
"`delete_all` with `*names` parameter cache method is deprecated and"
151-
" will be removed from corva in the next major version. Use "
152-
"`delete_many` cache method instead.",
153-
FutureWarning,
154-
)
155-
return self.old_cache_repo.delete(*names)
156-
else:
157-
self.cache_repo.delete_all()
158-
159-
def store(self, **kwargs):
160-
warnings.warn(
161-
"`store` cache method is deprecated and will be removed from corva in the"
162-
" next major version. Use `set` or `set_many` cache methods instead.",
163-
FutureWarning,
164-
)
165-
return self.old_cache_repo.hset(**kwargs)
166109

167-
def load(self, **kwargs):
168-
warnings.warn(
169-
"`load` cache method is deprecated and will be removed from corva in the"
170-
" next major version. Use `get` or `get_many` cache methods instead.",
171-
FutureWarning,
172-
)
173-
return self.old_cache_repo.hget(**kwargs)
174110

175-
def load_all(self, **kwargs):
176-
warnings.warn(
177-
"`load_all` cache method is deprecated and will be removed from corva in "
178-
"the next major version. Use `get_all` cache method instead.",
179-
FutureWarning,
180-
)
181-
return self.old_cache_repo.hgetall(**kwargs)
182111

183-
def ttl(self, **kwargs):
184-
warnings.warn(
185-
"`ttl` cache method is deprecated and will be removed from corva in the"
186-
" next major version.",
187-
FutureWarning,
188-
)
189-
return self.old_cache_repo.ttl(**kwargs)
190112

191-
def pttl(self, **kwargs):
192-
warnings.warn(
193-
"`pttl` cache method is deprecated and will be removed from corva in the"
194-
" next major version.",
195-
FutureWarning,
196-
)
197-
return self.old_cache_repo.pttl(**kwargs)
198113

199-
def exists(self, *names):
200-
warnings.warn(
201-
"`exists` cache method is deprecated and will be removed from corva in the"
202-
" next major version.",
203-
FutureWarning,
204-
)
205-
return self.old_cache_repo.exists(*names)

0 commit comments

Comments
 (0)