public override Task <Experiment> TryFindExperiment(int id) { ExperimentEntity entity; if (!storage.GetExperiments().TryGetValue(id, out entity)) { return(null); } ExperimentDefinition def = RowToDefinition(entity); ExperimentStatus status = GetStatus(id, entity); return(Task.FromResult(new Experiment { Definition = def, Status = status })); }
public override Task <IEnumerable <Experiment> > FindExperiments(ExperimentFilter?filter = default(ExperimentFilter?)) { IEnumerable <KeyValuePair <int, ExperimentEntity> > experiments = storage.GetExperiments() .ToArray(); if (filter.HasValue) { experiments = experiments .Where(q => { var id = q.Key; var e = q.Value; return((filter.Value.BenchmarkContainerEquals == null || e.BenchmarkDirectory == filter.Value.BenchmarkContainerEquals) && (filter.Value.CategoryEquals == null || e.Category == null || e.Category.Contains(filter.Value.CategoryEquals)) && (filter.Value.ExecutableEquals == null || e.Executable == null || e.Executable == filter.Value.ExecutableEquals) && (filter.Value.ParametersEquals == null || e.Parameters == null || e.Parameters == filter.Value.ParametersEquals) && (filter.Value.NotesEquals == null || e.Note == null || e.Note.Contains(filter.Value.NotesEquals)) && (filter.Value.CreatorEquals == null || e.Creator == null || e.Creator.Contains(filter.Value.CreatorEquals))); }) .OrderByDescending(q => q.Value.Submitted); } var results = experiments.Select(kvp => { int id = kvp.Key; ExperimentEntity expRow = kvp.Value; ExperimentDefinition def = RowToDefinition(expRow); ExperimentStatus status = GetStatus(id, expRow); return(new Experiment { Definition = def, Status = status }); }); return(Task.FromResult(results)); }