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);
}
}
}