Skip to content

Commit d2aa0af

Browse files
authored
feat: delete_api also accept datetime as a value for start and stop (#317)
1 parent 8539a9b commit d2aa0af

File tree

3 files changed

+29
-8
lines changed

3 files changed

+29
-8
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
### Features
44
1. [#319](https://github.com/influxdata/influxdb-client-python/pull/319): Add supports for array expressions in query parameters
55
2. [#320](https://github.com/influxdata/influxdb-client-python/pull/320): Add JSONEncoder to encode query results to JSON
6+
1. [#317](https://github.com/influxdata/influxdb-client-python/pull/317): `delete_api` also accept `datetime` as a value for `start` and `stop`
67

78
### Bug Fixes
89
1. [#321](https://github.com/influxdata/influxdb-client-python/pull/321): Fixes return type for dashboard when `include=properties` is used

influxdb_client/client/delete_api.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
"""Delete time series data from InfluxDB."""
22

3-
import datetime
3+
from datetime import datetime
44

55
from influxdb_client import DeleteService, DeletePredicateRequest
6+
from influxdb_client.client.util.date_utils import get_date_helper
67

78

89
class DeleteApi(object):
@@ -24,5 +25,11 @@ def delete(self, start: datetime, stop: object, predicate: object, bucket: str,
2425
:param org: organization id or name
2526
:return:
2627
"""
28+
date_helper = get_date_helper()
29+
if isinstance(start, datetime):
30+
start = date_helper.to_utc(start)
31+
if isinstance(stop, datetime):
32+
stop = date_helper.to_utc(stop)
33+
2734
predicate_request = DeletePredicateRequest(start=start, stop=stop, predicate=predicate)
2835
return self._service.post_delete(delete_predicate_request=predicate_request, bucket=bucket, org=org)

tests/test_DeleteApi.py

+20-7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
from datetime import datetime
2+
3+
from pytz import UTC
4+
15
from influxdb_client import PermissionResource, Permission, InfluxDBClient, Point
26
from influxdb_client.client.write_api import SYNCHRONOUS
37
from tests.base_test import BaseTest
@@ -11,7 +15,6 @@ def setUp(self) -> None:
1115

1216
for bucket in response.buckets:
1317
if bucket.name.endswith("_IT"):
14-
print("Delete bucket: ", bucket.name)
1518
self.buckets_api.delete_bucket(bucket)
1619

1720
self.bucket = self.create_test_bucket()
@@ -25,15 +28,14 @@ def setUp(self) -> None:
2528
permissions=[read_bucket, write_bucket])
2629
self.auth_token = authorization.token
2730
self.client.close()
28-
self.client = InfluxDBClient(url=self.host, token=self.auth_token, debug=True, org=self.org)
31+
self.client = InfluxDBClient(url=self.host, token=self.auth_token, org=self.org)
2932
self.delete_api = self.client.delete_api()
3033

3134
def test_delete_buckets(self):
3235

3336
self._write_data()
3437

3538
q = f'from(bucket:\"{self.bucket.name}\") |> range(start: 1970-01-01T00:00:00.000000001Z)'
36-
print(q)
3739
flux_tables = self.client.query_api().query(query=q, org=self.organization.id)
3840
self.assertEqual(len(flux_tables), 1)
3941
self.assertEqual(len(flux_tables[0].records), 12)
@@ -52,19 +54,30 @@ def test_delete_buckets_by_name(self):
5254
self._write_data()
5355

5456
q = f'from(bucket:\"{self.bucket.name}\") |> range(start: 1970-01-01T00:00:00.000000001Z)'
55-
print(q)
5657
flux_tables = self.client.query_api().query(query=q, org=self.organization.id)
5758
self.assertEqual(len(flux_tables), 1)
5859
self.assertEqual(len(flux_tables[0].records), 12)
5960

6061
start = "1970-01-01T00:00:00.000000001Z"
6162
stop = "1970-01-01T00:00:00.000000012Z"
63+
self._delete_and_verify(start, stop)
64+
65+
def test_start_stop_types(self):
66+
starts_stops = [
67+
("1970-01-01T00:00:00.000000001Z", "1970-01-01T00:00:00.000000012Z"),
68+
(datetime(1970, 1, 1, 0, 0, 0, 0, UTC), datetime(1970, 1, 1, 0, 0, 0, 1, UTC)),
69+
(datetime(1970, 1, 1, 0, 0, 0, 0), datetime(1970, 1, 1, 0, 0, 0, 1))
70+
]
71+
for start_stop in starts_stops:
72+
self._write_data()
73+
self._delete_and_verify(start_stop[0], start_stop[1])
74+
75+
def _delete_and_verify(self, start, stop):
6276
self.delete_api.delete(start, stop, "", bucket=self.bucket.name, org=self.organization.name)
63-
64-
flux_tables2 = self.client.query_api().query(
77+
flux_tables = self.client.query_api().query(
6578
f'from(bucket:"{self.bucket.name}") |> range(start: 1970-01-01T00:00:00.000000001Z)',
6679
org=self.organization.id)
67-
self.assertEqual(len(flux_tables2), 0)
80+
self.assertEqual(len(flux_tables), 0)
6881

6982
def _write_data(self):
7083

0 commit comments

Comments
 (0)