using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;
using InfluxDB.Client;
using InfluxDB.Client.Api.Domain;
using InfluxDB.Client.Core.Flux.Domain;
using InfluxDB.Client.Writes;
namespace InfluxDB
{
public class FluxBase
{
public static string org = "orgname";
public static string token ="";
public static string bucket = "DBbucket";
public static string url ="http://127.0.0.1:8086/";
/// <summary>
/// 导入或修改数据
/// </summary>
/// <param name="points"></param>
/// <returns></returns>
public bool AddOrUpdate(List<PointData> points)
{
using var client = InfluxDBClientFactory.Create(url, token);
using (var writeApi = client.GetWriteApi())
{
writeApi.WritePoints(points, bucket, org);
writeApi.Dispose();
}
return true;
}
/// <summary>
/// 查询
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<FluxTable> Search(string query)
{
var options = new InfluxDBClientOptions.Builder()
.Url(url)
.AuthenticateToken(token)
.TimeOut(TimeSpan.FromMinutes(3)) //设置时限3分钟
.Build();
using var client = InfluxDBClientFactory.Create(options);
return client.GetQueryApiSync().QuerySync(query, org);//同步查询
}
/// <summary>
/// 真删
/// </summary>
/// <param name="starttime"></param>
/// <param name="endtime"></param>
/// <param name="query"></param>
/// <returns></returns>
///
public bool Delete(DateTime starttime, DateTime endtime, string query)
{
using var client = InfluxDBClientFactory.Create(url, token);
DeletePredicateRequest deletePredicateRequest = new DeletePredicateRequest(starttime, endtime, query);
var tables = client.GetDeleteApi().Delete(deletePredicateRequest, bucket, org);
client.Dispose();
return true;
}
/// <summary>
/// 转换RFC3339格式
时间
/// </summary>
/// <param name="time"></param>
/// <returns></returns>
public string FormatRFC3339
Time(DateTime time)
{
return time.Year.ToString().PadLeft(4, '0') + "-" +
time.Month.ToString().PadLeft(2, '0') + "-" +
time.Day.ToString().PadLeft(2, '0') +
"T" +
time.Hour.ToString().PadLeft(2, '0') + ":" +
time.Minute.ToString().PadLeft(2, '0') + ":" +
time.Second.ToString().PadLeft(2, '0') +
"Z";
}
}
}