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()) { action(write); } return true; } catch (Exception ex) { logger.LogError(ex, "Ошибка при записи в БД, InfluxDb"); return false; } } public async Task QueryAsync(Func> action, string token) { try { using var client = new InfluxDBClient(settings.Url, token); var query = client.GetQueryApi(); return await action(query); } catch (Exception ex) { logger.LogError(ex, "Ошибка при запросе данных из БД, InfuxDb"); // return Task.FromResult(); // return Task.CompletedTask; //return default(T); return default(T); } } } }