/// <summary> /// Delete all records from database /// </summary> public void Clear() { var records = BatchRetry.SelectMany(n => n.Value); TotalRecords = 0; TotalSize = 0; //clear all existing batches foreach (var batch in BatchRetry) { batch.Value.Clear(); } }
/// <summary> /// Get first record in in-cache BacktraceDatabase /// </summary> /// <returns>First database record</returns> private BacktraceDatabaseRecord GetFirstRecord() { //get all batches (from the beginning) for (int i = 0; i < _retryNumber; i++) { //if batch has any record that is not used //set lock to true //and return file if (BatchRetry.ContainsKey(i) && BatchRetry[i].Any(n => !n.Locked)) { var record = BatchRetry[i].FirstOrDefault(n => !n.Locked); if (record == null) { return(null); } record.Locked = true; return(record); } } return(null); }
/// <summary> /// Get first Backtrace database record by predicate funciton /// </summary> /// <param name="predicate">Filter function</param> /// <returns>Backtrace Database record</returns> public BacktraceDatabaseRecord FirstOrDefault(Func <BacktraceDatabaseRecord, bool> predicate) { return(BatchRetry .SelectMany(n => n.Value) .FirstOrDefault(predicate)); }
/// <summary> /// Dispose /// </summary> public void Dispose() { TotalRecords = 0; BatchRetry.Clear(); }
/// <summary> /// Get all database records /// </summary> /// <returns>all existing database records</returns> public IEnumerable <BacktraceDatabaseRecord> Get() { return(BatchRetry.SelectMany(n => n.Value)); }
/// <summary> /// Check if any record exists /// </summary> /// <param name="record"></param> /// <returns></returns> public bool Any(BacktraceDatabaseRecord record) { return(BatchRetry.SelectMany(n => n.Value).Any(n => n.Id == record.Id)); }