using InfluxDB.Client; using Microsoft.Extensions.Logging; using PARR.DAL.Settings; namespace PARR.DAL.InfluxDbServices { internal class InfluxDbService : IInfluxDbService { private readonly InfluxDbSettings settings; private readonly ILogger logger; public InfluxDbService(InfluxDbSettings settings, ILogger logger) { this.settings = settings; this.logger = logger; } public bool Write(Action action, string token) { try { //using var client = new InfluxDBClient(settings.Url, token); //using var write = client.GetWriteApi(); using var client = new InfluxDBClient(settings.Url, token); using (var write = client.GetWriteApi()) { action(write); } return true; } catch (Exception ex) { logger.LogError(ex, "Ошибка при записи в БД, InfluxDb"); return false; } } public async Task QueryAsync(Func> action, string token) { //TODO: throw new NotImplementedException(); //try //{ using var client = InfluxDBClientFactory.Create(settings.Url, token); var query = client.GetQueryApi(); return await action(query); //} //catch (Exception ex) //{ // logger.LogError(ex, "Ошибка при запросе данных из БД, InfuxDb"); // // return Task.FromResult(); // return Task.CompletedTask; //} } } }