File tree Expand file tree Collapse file tree 2 files changed +27
-0
lines changed
Expand file tree Collapse file tree 2 files changed +27
-0
lines changed Original file line number Diff line number Diff line change @@ -1130,6 +1130,15 @@ async def update(self, **field_values):
11301130 async def save (self , pipeline : Optional [Pipeline ] = None ) -> "RedisModel" :
11311131 raise NotImplementedError
11321132
1133+ async def expire (self , num_seconds : int , pipeline : Optional [Pipeline ] = None ):
1134+ if pipeline is None :
1135+ db = self .db ()
1136+ else :
1137+ db = pipeline
1138+
1139+ # TODO: Wrap any Redis response errors in a custom exception?
1140+ await db .expire (self .make_primary_key (self .pk ), num_seconds )
1141+
11331142 @validator ("pk" , always = True , allow_reuse = True )
11341143 def validate_pk (cls , v ):
11351144 if not v :
Original file line number Diff line number Diff line change @@ -391,6 +391,24 @@ async def test_delete(m):
391391 assert response == 1
392392
393393
394+ @pytest .mark .asyncio
395+ async def test_expire (m ):
396+ member = m .Member (
397+ first_name = "Expire" ,
398+ last_name = "Test" ,
399+ email = "e@example.com" ,
400+ join_date = today ,
401+ age = 93 ,
402+ bio = "This is a test user for expiry" ,
403+ )
404+
405+ await member .save ()
406+ await member .expire (60 )
407+
408+ ttl = await m .Member .db ().ttl (member .key ())
409+ assert ttl > 0
410+
411+
394412def test_raises_error_with_embedded_models (m ):
395413 class Address (m .BaseHashModel ):
396414 address_line_1 : str
You can’t perform that action at this time.
0 commit comments