Skip to content

Commit 8a4cc5a

Browse files
committed
Add support for default TTL for custom date property
1 parent bfc68d4 commit 8a4cc5a

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

integration/test_collection_config.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1881,14 +1881,13 @@ def test_object_ttl_custom(collection_factory: CollectionFactory) -> None:
18811881
collection = collection_factory(
18821882
properties=[wvc.config.Property(name="customDate", data_type=DataType.DATE)],
18831883
object_ttl=Configure.ObjectTTL.delete_by_date_property(
1884-
date_property="customDate",
1885-
post_search_filter=False,
1884+
date_property="customDate", post_search_filter=False, time_to_live_after_date=-1
18861885
),
18871886
inverted_index_config=Configure.inverted_index(index_timestamps=True),
18881887
)
18891888

18901889
config = collection.config.get()
18911890
assert config.object_ttl_config is not None
18921891
assert config.object_ttl_config.delete_on == "customDate"
1893-
# assert config.object_ttl_config.time_to_live is None
1892+
assert config.object_ttl_config.time_to_live == datetime.timedelta(seconds=-1)
18941893
assert not config.object_ttl_config.post_search_filter

weaviate/collections/classes/config_object_ttl.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def delete_by_creation_time(
4141
"""Create an `ObjectTimeToLiveConfig` object to be used when defining the object time-to-live configuration of Weaviate.
4242
4343
Args:
44-
time_to_live: The time-to-live for objects in seconds.
44+
time_to_live: The time-to-live for objects in seconds. Must be a positive value.
4545
post_search_filter: If enabled search results will be filtered to remove expired objects that have not yet been deleted.
4646
"""
4747
if isinstance(time_to_live, datetime.timedelta):
@@ -55,16 +55,22 @@ def delete_by_creation_time(
5555
@staticmethod
5656
def delete_by_date_property(
5757
date_property: str,
58+
time_to_live_after_date: Optional[int | datetime.timedelta] = None,
5859
post_search_filter: Optional[bool] = None,
5960
) -> _ObjectTTLCreate:
6061
"""Create an Object ttl config for a custom date property.
6162
6263
Args:
6364
date_property: The name of the date property to use for object expiration.
65+
time_to_live_after_date: The time-to-live for objects in seconds after the date property value. Can be negative
6466
post_search_filter: If enabled search results will be filtered to remove expired objects that have not yet been deleted.
6567
"""
68+
if isinstance(time_to_live_after_date, datetime.timedelta):
69+
time_to_live_after_date = int(time_to_live_after_date.total_seconds())
70+
if time_to_live_after_date is None:
71+
time_to_live_after_date = 0
6672
return _ObjectTTLCreate(
6773
deleteOn=date_property,
6874
postSearchFilter=post_search_filter,
69-
defaultTtl=None,
75+
defaultTtl=time_to_live_after_date,
7076
)

0 commit comments

Comments
 (0)