PageRenderTime 260ms CodeModel.GetById 38ms RepoModel.GetById 10ms app.codeStats 0ms

/Raven.Database/Counters/Controllers/CounterStorageController.cs

https://github.com/nwendel/ravendb
C# | 43 lines | 39 code | 3 blank | 1 comment | 0 complexity | d91e9108d6f015f382ea9af2c3709b36 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, BSD-3-Clause, CC-BY-SA-3.0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net.Http;
  5. using System.Text;
  6. using System.Threading;
  7. using System.Threading.Tasks;
  8. using System.Web.Http;
  9. using Raven.Database.Server.Controllers;
  10. using Raven.Json.Linq;
  11. namespace Raven.Database.Counters.Controllers
  12. {
  13. public class CounterStorageController : RavenDbApiController
  14. {
  15. [Route("counterStorage/conterStorages")]
  16. [HttpGet]
  17. public HttpResponseMessage GetCounterStoragesNames()
  18. {
  19. var names = GetCounterStorages();
  20. return GetMessageWithObject(names);
  21. }
  22. [Route("counterStorage/stats")]
  23. [HttpGet]
  24. public HttpResponseMessage GetCounterStoragesStats()
  25. {
  26. //TODO: implement getting the stats about the counter storages
  27. return GetEmptyMessage();
  28. }
  29. private string[] GetCounterStorages()
  30. {
  31. var start = GetStart();
  32. var nextPageStart = start; // will trigger rapid pagination
  33. var counterStorages = Database.Documents.GetDocumentsWithIdStartingWith("Raven/Counters/", null, null, start, GetPageSize(Database.Configuration.MaxPageSize), CancellationToken.None, ref nextPageStart);
  34. var counterStoragesNames = counterStorages
  35. .Select(x => x.Value<RavenJObject>("@metadata").Value<string>("@id").Replace("Raven/Counters/", string.Empty))
  36. .ToArray();
  37. return counterStoragesNames;
  38. }
  39. }
  40. }