public async Task SaveLogPosition(ExtendedEventsPosition position)
 {
     using (var context = new ClickHouseContext(_connectionString))
     {
         await context.SaveLogPosition(_xEventsLog, position);
     }
 }
 public async Task Save(List <XEventData> eventsData)
 {
     using (var context = new ClickHouseContext(_connectionString))
     {
         await context.SaveRowsData(_xEventsLog, eventsData);
     }
 }
 public async Task <ExtendedEventsPosition> GetLastPosition(string fileName)
 {
     using (var context = new ClickHouseContext(_connectionString))
     {
         return(await context.GetLogFilePosition(_xEventsLog, fileName));
     }
 }
 public async Task <bool> LogFileLoaded(string fileName)
 {
     using (var context = new ClickHouseContext(_connectionString))
     {
         return(await context.LogFileLoaded(fileName));
     }
 }
        public async Task SaveLogPosition(FileInfo logFileInfo, ExtendedEventsPosition position, bool finishReadFile)
        {
            using (var context = new ClickHouseContext(_connectionString))
            {
                if (await LogFileLoaded(logFileInfo.FullName))
                {
                    return;
                }
                ;

                await context.SaveLogPosition(logFileInfo, position, finishReadFile);

                if (_currentStepToClearLogFiles == 0 || _currentStepToClearLogFiles >= _stepsToClearLogFiles)
                {
                    await context.RemoveArchiveLogFileRecords(logFileInfo.Name);

                    _currentStepToClearLogFiles = 0;
                }
                _currentStepToClearLogFiles += 1;
            }
        }
        public async Task Save(IList <XEventData> eventsData)
        {
            using (var context = new ClickHouseContext(_connectionString))
            {
                List <XEventData> newEntities = new List <XEventData>();
                foreach (var itemRow in eventsData)
                {
                    if (itemRow == null)
                    {
                        continue;
                    }

                    if (!_maxPeriodsByFiles.TryGetValue(itemRow.FileName, out var maxPeriod))
                    {
                        maxPeriod = await context.GetRowsDataMaxPeriod(itemRow.FileName);

                        _maxPeriodsByFiles.Add(itemRow.FileName, maxPeriod);
                    }

                    if (maxPeriod != DateTime.MinValue)
                    {
                        if (itemRow.Timestamp.DateTime < maxPeriod)
                        {
                            continue;
                        }

                        if (itemRow.Timestamp.DateTime == maxPeriod)
                        {
                            if (await context.RowDataExistOnDatabase(itemRow.FileName, itemRow))
                            {
                                continue;
                            }
                        }
                    }

                    newEntities.Add(itemRow);
                }
                await context.SaveRowsData(newEntities);
            }
        }