/src/Raven.Client/Documents/Operations/Migration/SqlMigrationSchemaOperation.cs

https://github.com/fitzchak/ravendb · C# · 62 lines · 50 code · 12 blank · 0 comment · 4 complexity · 3c406bd30b0683f6f295c837e36737f5 MD5 · raw file

  1. using System;
  2. using System.Net.Http;
  3. using Raven.Client.Documents.Conventions;
  4. using Raven.Client.Http;
  5. using Raven.Client.Json.Converters;
  6. using Raven.Client.Util;
  7. using Sparrow.Json;
  8. namespace Raven.Client.Documents.Operations.Migration
  9. {
  10. public class SqlMigrationSchemaOperation : IMaintenanceOperation<SqlMigrationSchemaResult>
  11. {
  12. private readonly string _connectionStringName;
  13. public SqlMigrationSchemaOperation(string connectionStringName)
  14. {
  15. if (string.IsNullOrWhiteSpace(connectionStringName))
  16. throw new ArgumentNullException(nameof(connectionStringName));
  17. _connectionStringName = connectionStringName;
  18. }
  19. public RavenCommand<SqlMigrationSchemaResult> GetCommand(DocumentConventions conventions, JsonOperationContext context)
  20. {
  21. return new SqlMigrationSchemaCommand(_connectionStringName);
  22. }
  23. private class SqlMigrationSchemaCommand : RavenCommand<SqlMigrationSchemaResult>
  24. {
  25. protected readonly string ConnectionStringName;
  26. public override bool IsReadRequest => false;
  27. public SqlMigrationSchemaCommand(string connectionStringName)
  28. {
  29. if (string.IsNullOrWhiteSpace(connectionStringName))
  30. throw new ArgumentNullException(nameof(connectionStringName));
  31. ConnectionStringName = connectionStringName;
  32. }
  33. public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url)
  34. {
  35. url = $"{node.Url}/databases/{node.Database}/admin/sql-migration/schema?{nameof(ConnectionStringName)}={ConnectionStringName}";
  36. var request = new HttpRequestMessage
  37. {
  38. Method = HttpMethods.Get
  39. };
  40. return request;
  41. }
  42. public override void SetResponse(JsonOperationContext context, BlittableJsonReaderObject response, bool fromCache)
  43. {
  44. if (response == null)
  45. return;
  46. Result = JsonDeserializationClient.SqlSchemaResult(response);
  47. }
  48. }
  49. }
  50. }