Adds expire and test.
This commit is contained in:
parent
f024b39c16
commit
b42e63606a
2 changed files with 27 additions and 0 deletions
|
@ -1130,6 +1130,15 @@ class RedisModel(BaseModel, abc.ABC, metaclass=ModelMeta):
|
|||
async def save(self, pipeline: Optional[Pipeline] = None) -> "RedisModel":
|
||||
raise NotImplementedError
|
||||
|
||||
async def expire(self, num_seconds: int, pipeline: Optional[Pipeline] = None):
|
||||
if pipeline is None:
|
||||
db = self.db()
|
||||
else:
|
||||
db = pipeline
|
||||
|
||||
# TODO: Wrap any Redis response errors in a custom exception?
|
||||
await db.expire(self.make_primary_key(self.pk), num_seconds)
|
||||
|
||||
@validator("pk", always=True, allow_reuse=True)
|
||||
def validate_pk(cls, v):
|
||||
if not v:
|
||||
|
|
|
@ -391,6 +391,24 @@ async def test_delete(m):
|
|||
assert response == 1
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_expire(m):
|
||||
member = m.Member(
|
||||
first_name="Expire",
|
||||
last_name="Test",
|
||||
email="e@example.com",
|
||||
join_date=today,
|
||||
age=93,
|
||||
bio="This is a test user for expiry",
|
||||
)
|
||||
|
||||
await member.save()
|
||||
await member.expire(60)
|
||||
|
||||
ttl = await m.Member.db().ttl(member.key())
|
||||
assert ttl > 0
|
||||
|
||||
|
||||
def test_raises_error_with_embedded_models(m):
|
||||
class Address(m.BaseHashModel):
|
||||
address_line_1: str
|
||||
|
|
Loading…
Reference in a new issue