using System; using System.Threading; using System.Threading.Tasks; using InfluxDB.Client.Api.Domain; using InfluxDB.Client.Api.Service; using InfluxDB.Client.Core; namespace InfluxDB.Client { public interface IDeleteApi { /// /// Delete Time series data from InfluxDB. /// /// Start time /// Stop time /// Sql where like delete statement /// The bucket from which data will be deleted /// The organization of the above bucket /// Cancellation token Task Delete(DateTime start, DateTime stop, string predicate, Bucket bucket, Organization org, CancellationToken cancellationToken = default); /// /// Delete Time series data from InfluxDB. /// /// Start time /// Stop time /// Sql where like delete statement /// The bucket from which data will be deleted /// The organization of the above bucket /// Cancellation token Task Delete(DateTime start, DateTime stop, string predicate, string bucket, string org, CancellationToken cancellationToken = default); /// /// Delete Time series data from InfluxDB. /// /// Predicate delete request /// The bucket from which data will be deleted /// The organization of the above bucket /// Cancellation token Task Delete(DeletePredicateRequest predicate, string bucket, string org, CancellationToken cancellationToken = default); } public class DeleteApi : IDeleteApi { private readonly DeleteService _service; protected internal DeleteApi(DeleteService service) { Arguments.CheckNotNull(service, nameof(service)); _service = service; } /// /// Delete Time series data from InfluxDB. /// /// Start time /// Stop time /// Sql where like delete statement /// The bucket from which data will be deleted /// The organization of the above bucket /// Cancellation token public Task Delete(DateTime start, DateTime stop, string predicate, Bucket bucket, Organization org, CancellationToken cancellationToken = default) { Arguments.CheckNotNull(start, "Start is required"); Arguments.CheckNotNull(stop, "Stop is required"); Arguments.CheckNotNull(predicate, "Predicate is required"); Arguments.CheckNotNull(bucket, "Bucket is required"); Arguments.CheckNotNull(org, "Organization is required"); return Delete(start, stop, predicate, bucket.Id, org.Id, cancellationToken); } /// /// Delete Time series data from InfluxDB. /// /// Start time /// Stop time /// Sql where like delete statement /// The bucket from which data will be deleted /// The organization of the above bucket /// Cancellation token public Task Delete(DateTime start, DateTime stop, string predicate, string bucket, string org, CancellationToken cancellationToken = default) { Arguments.CheckNotNull(start, "Start is required"); Arguments.CheckNotNull(stop, "Stop is required"); Arguments.CheckNotNull(predicate, "Predicate is required"); Arguments.CheckNonEmptyString(bucket, "Bucket is required"); Arguments.CheckNonEmptyString(org, "Organization is required"); var predicateRequest = new DeletePredicateRequest(start, stop, predicate); return Delete(predicateRequest, bucket, org, cancellationToken); } /// /// Delete Time series data from InfluxDB. /// /// Predicate delete request /// The bucket from which data will be deleted /// The organization of the above bucket /// Cancellation token public Task Delete(DeletePredicateRequest predicate, string bucket, string org, CancellationToken cancellationToken = default) { Arguments.CheckNotNull(predicate, "Predicate is required"); Arguments.CheckNonEmptyString(bucket, "Bucket is required"); Arguments.CheckNonEmptyString(org, "Organization is required"); return _service.PostDeleteAsync(predicate, null, org, bucket, null, null, cancellationToken); } } }