private static QueryArchiveOptions GetLocalArchiveOptions(Action <QueryArchiveOptions> archive, ArchiveOptions archiveOptions) { if (archive == null) { return(null); } var result = new QueryArchiveOptions(archiveOptions?.Name ?? "Data"); result.GroupedBy(archiveOptions?.GroupName ?? "Perfion"); if (archiveOptions != null) { if (archiveOptions.Expires.HasValue) { result.ExpiresOn(archiveOptions.Expires.Value); } } else { result.ExpiresAfterMonths(1); } archive(result); return(result); }
public PerfionXml Query(string query, Action <QueryArchiveOptions> archive = null) { return(Client(client => { string xml = client.ExecuteQuery(new ExecuteQueryRequest { Body = new ExecuteQueryRequestBody(query) }).Body.ExecuteQueryResult; ArchiveCreated archiveCreated = null; ArchiveOptions globalArchiveOptions = _configuration.ArchiveOptions; QueryArchiveOptions localArchiveOptions = GetLocalArchiveOptions(archive, globalArchiveOptions); ArchiveOptions finalArchiveOptions = localArchiveOptions ?? globalArchiveOptions; if (localArchiveOptions != null && localArchiveOptions.Disabled) { finalArchiveOptions = null; } if (finalArchiveOptions != null) { archiveCreated = _kernel.Resolve <IArchiveService>().Archive(finalArchiveOptions.Name, newArchive => { newArchive.Options.GroupedBy(finalArchiveOptions.GroupName); if (finalArchiveOptions.Expires.HasValue) { newArchive.Options.ExpiresOn(finalArchiveOptions.Expires.Value); } if (finalArchiveOptions.CompressionLevel.HasValue) { newArchive.Options.Compression(finalArchiveOptions.CompressionLevel.Value); } newArchive .IncludeContent("Query.xml", query) .IncludeContent("Data.xml", xml); }); } return new PerfionXml(this, XDocument.Parse(xml)) { Archive = archiveCreated }; })); }