From 1cb0583b671850ad477e2d924b6e244601884da0 Mon Sep 17 00:00:00 2001 From: Brock Richards Date: Mon, 11 Apr 2022 11:25:13 -0600 Subject: [PATCH 1/5] [SVC-1275] csv export --- ...Cortside.SqlReportApi.DomainService.csproj | Bin 952 -> 2068 bytes .../ISqlReportService.cs | 3 +++ .../SqlReportService.cs | 19 ++++++++++++++ .../Controllers/ReportController.cs | 24 ++++++++++++++++++ .../appsettings.json | 2 +- 5 files changed, 47 insertions(+), 1 deletion(-) diff --git a/src/Cortside.SqlReportApi.DomainService/Cortside.SqlReportApi.DomainService.csproj b/src/Cortside.SqlReportApi.DomainService/Cortside.SqlReportApi.DomainService.csproj index ced373f0a854329cad252fbcb8ea4b79509ee505..f852e09cb67141d576046013156ca63e7ba9f793 100644 GIT binary patch literal 2068 zcmd5-OHaaJ5S+7#|DoY-p%_sUgb+dHpdmm!d1-1vw3ONwAAeq*-47xL+JHerNYm1N z&F<{<`~0Y)jyH@Ez`_fB#7Hp01R>5)fCC#P-Yr@}czl0PYlxv*r${lt0lg~psiTH{ z?4gPdvrO>F7>^zndW?F~h-*fBYE9@dpw-3=TIlm`yb7}{7USlbBE^;B9hVwAMYP~$ zJo|8I8`3ky1)p5@{0odtMeOS4v~&>!1fsV*b*!hI#c#@b+Odh|ZZ@|?1@-XEDNBxsyu|FV!KV?u zo2nuAmr*uVEPNTHS=;kJeaJV$C~ngUd`Iq5KPj2ov=fQhogP{|XXPs&ao@}dn{3$8 Ssto!4W*cGJivqQvmjQXO}&8H8{ zg=pL(q^>bwad&5RW$K8FJ#f1MytTZ5H*MFk0vs?u^uEXIe(wMvoFNo#xCIw$zJdgn zV4Y4NGbQpWgNTl`#ZqR##=0o9a*wr;b98f2^0*%`V3+zojNnV*1RjX*CD_fCc?} zpG|-0b*wxz_G7<47|Ynxm$&I_o`7*qkBnp!j{KJt6QyyWEoc5g(RhB0q)DEI2K6xx d)aM|WZUvb7E0#xi_61$K&f1y-sjo2Zy#tl2KwSU; diff --git a/src/Cortside.SqlReportApi.DomainService/ISqlReportService.cs b/src/Cortside.SqlReportApi.DomainService/ISqlReportService.cs index b602dad..1835825 100644 --- a/src/Cortside.SqlReportApi.DomainService/ISqlReportService.cs +++ b/src/Cortside.SqlReportApi.DomainService/ISqlReportService.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Net.Http; using System.Threading.Tasks; using Cortside.SqlReportApi.Data; using Cortside.SqlReportApi.Domain; @@ -25,5 +26,7 @@ public interface ISqlReportService { ReportArgumentQuery GetReportArgumentQuery(int id); Task ExecuteReport(string name, IQueryCollection query, List permissions); + + Task ExportReport(string name, IQueryCollection query, List list); } } diff --git a/src/Cortside.SqlReportApi.DomainService/SqlReportService.cs b/src/Cortside.SqlReportApi.DomainService/SqlReportService.cs index cd78ebd..cda24e3 100644 --- a/src/Cortside.SqlReportApi.DomainService/SqlReportService.cs +++ b/src/Cortside.SqlReportApi.DomainService/SqlReportService.cs @@ -1,11 +1,16 @@ using System; using System.Collections.Generic; using System.Data; +using System.Globalization; +using System.IO; using System.Linq; +using System.Net.Http; +using System.Net.Http.Headers; using System.Threading.Tasks; using Cortside.SqlReportApi.Data; using Cortside.SqlReportApi.Domain; using Cortside.SqlReportApi.Exceptions; +using CsvHelper; using Microsoft.AspNetCore.Http; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; @@ -184,5 +189,19 @@ public async Task ExecuteReport(string name, IQueryCollection args } return result; } + + public async Task ExportReport(string name, IQueryCollection query, List list) { + var report = await ExecuteReport(name, query, list); + var stream = new MemoryStream(); + using (var writer = new StreamWriter(stream)) { + using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) { + csv.WriteRecord(report); + } + } + var result = new StreamContent(stream); + result.Headers.ContentType = new MediaTypeHeaderValue("text/csv"); + result.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = $"{name}.csv" }; + return result; + } } } diff --git a/src/Cortside.SqlReportApi.WebApi/Controllers/ReportController.cs b/src/Cortside.SqlReportApi.WebApi/Controllers/ReportController.cs index 9b543ce..55983d4 100644 --- a/src/Cortside.SqlReportApi.WebApi/Controllers/ReportController.cs +++ b/src/Cortside.SqlReportApi.WebApi/Controllers/ReportController.cs @@ -60,5 +60,29 @@ public async Task Get(string name) { return new UnauthorizedResult(); } } + + /// + /// Export report as csv + /// + /// + /// + [HttpGet] + [Route("{name}/export")] + public async Task Export(string name) { + var authProperties = await policyClient.EvaluateAsync(User); + AuthorizationModel responseModel = new AuthorizationModel() { + Permissions = authProperties.Permissions.ToList() + }; + var permissionsPrefix = "Sql Report"; + responseModel.Permissions = responseModel.Permissions.Select(p => $"{permissionsPrefix}.{p}").ToList(); + try { + var result = await svc.ExportReport(name, Request.Query, authProperties.Permissions.ToList()); + return new ObjectResult(result); + } catch (ResourceNotFoundMessage) { + return new NotFoundResult(); + } catch (NotAuthorizedMessage) { + return new UnauthorizedResult(); + } + } } } diff --git a/src/Cortside.SqlReportApi.WebApi/appsettings.json b/src/Cortside.SqlReportApi.WebApi/appsettings.json index 0b5f370..69e21f9 100644 --- a/src/Cortside.SqlReportApi.WebApi/appsettings.json +++ b/src/Cortside.SqlReportApi.WebApi/appsettings.json @@ -81,7 +81,7 @@ ] }, "SqlReport": { - "ConnectionString": "Data Source=localhost;Initial Catalog=SqlReport;Integrated Security=True" + "ConnectionString": "Data Source=sqltestonlineapp;Initial Catalog=SqlReportDev;Integrated Security=True" }, "ServiceBus": { "Protocol": "amqp", From 61ef0adbe14244da14f3b45efd3b2ec0df617729 Mon Sep 17 00:00:00 2001 From: mbrichards Date: Wed, 13 Apr 2022 16:30:43 -0600 Subject: [PATCH 2/5] [SVC-1275] export to csv --- .../ISqlReportService.cs | 3 ++- .../SqlReportService.cs | 22 ++++++++++++------- .../Controllers/AuthorizationController.cs | 3 ++- .../Controllers/ReportController.cs | 8 +++++-- 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/Cortside.SqlReportApi.DomainService/ISqlReportService.cs b/src/Cortside.SqlReportApi.DomainService/ISqlReportService.cs index 1835825..62cd9e7 100644 --- a/src/Cortside.SqlReportApi.DomainService/ISqlReportService.cs +++ b/src/Cortside.SqlReportApi.DomainService/ISqlReportService.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.IO; using System.Net.Http; using System.Threading.Tasks; using Cortside.SqlReportApi.Data; @@ -27,6 +28,6 @@ public interface ISqlReportService { Task ExecuteReport(string name, IQueryCollection query, List permissions); - Task ExportReport(string name, IQueryCollection query, List list); + Task ExportReport(string name, IQueryCollection query, List list); } } diff --git a/src/Cortside.SqlReportApi.DomainService/SqlReportService.cs b/src/Cortside.SqlReportApi.DomainService/SqlReportService.cs index cda24e3..be461bb 100644 --- a/src/Cortside.SqlReportApi.DomainService/SqlReportService.cs +++ b/src/Cortside.SqlReportApi.DomainService/SqlReportService.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Net.Http; using System.Net.Http.Headers; +using System.Text; using System.Threading.Tasks; using Cortside.SqlReportApi.Data; using Cortside.SqlReportApi.Domain; @@ -190,18 +191,23 @@ public async Task ExecuteReport(string name, IQueryCollection args return result; } - public async Task ExportReport(string name, IQueryCollection query, List list) { + public async Task ExportReport(string name, IQueryCollection query, List list) { var report = await ExecuteReport(name, query, list); var stream = new MemoryStream(); - using (var writer = new StreamWriter(stream)) { - using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) { - csv.WriteRecord(report); + var writer = new StreamWriter(stream); + foreach (var row in report.Rows) { + var writeRow = new StringBuilder(); + foreach (var column in row) { + if (column.ToString().Contains(',')) { + writeRow.Append($"\"{column}\","); + } else { + writeRow.Append($"{column},"); + } } + writer.WriteLine(writeRow); } - var result = new StreamContent(stream); - result.Headers.ContentType = new MediaTypeHeaderValue("text/csv"); - result.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = $"{name}.csv" }; - return result; + stream.Position = 0; + return stream; } } } diff --git a/src/Cortside.SqlReportApi.WebApi/Controllers/AuthorizationController.cs b/src/Cortside.SqlReportApi.WebApi/Controllers/AuthorizationController.cs index 0447dd8..19ac3c3 100644 --- a/src/Cortside.SqlReportApi.WebApi/Controllers/AuthorizationController.cs +++ b/src/Cortside.SqlReportApi.WebApi/Controllers/AuthorizationController.cs @@ -16,7 +16,7 @@ namespace Cortside.SqlReportApi.WebApi.Controllers { [ApiController] [ApiVersion("1")] [Produces("application/json")] - [Authorize] + //[Authorize] public class AuthorizationController : ControllerBase { private readonly ILogger logger; private readonly IPolicyServerRuntimeClient policyClient; @@ -41,6 +41,7 @@ public AuthorizationController(ILogger logger, IPolicyS [HttpGet("")] [ProducesResponseType(typeof(AuthorizationModel), (int)HttpStatusCode.OK)] public async Task GetPermissions() { + return Ok(new AuthorizationModel { Permissions = new System.Collections.Generic.List { "SqlReportApi.CanGetReports" } }); logger.LogInformation("Retrieving authorization permissions for user."); var authProperties = await policyClient.EvaluateAsync(User); AuthorizationModel responseModel = new AuthorizationModel() { diff --git a/src/Cortside.SqlReportApi.WebApi/Controllers/ReportController.cs b/src/Cortside.SqlReportApi.WebApi/Controllers/ReportController.cs index 55983d4..e633db6 100644 --- a/src/Cortside.SqlReportApi.WebApi/Controllers/ReportController.cs +++ b/src/Cortside.SqlReportApi.WebApi/Controllers/ReportController.cs @@ -1,4 +1,7 @@ +using System.IO; using System.Linq; +using System.Net.Http; +using System.Net.Http.Headers; using System.Threading.Tasks; using Cortside.SqlReportApi.Data; using Cortside.SqlReportApi.DomainService; @@ -76,8 +79,9 @@ public async Task Export(string name) { var permissionsPrefix = "Sql Report"; responseModel.Permissions = responseModel.Permissions.Select(p => $"{permissionsPrefix}.{p}").ToList(); try { - var result = await svc.ExportReport(name, Request.Query, authProperties.Permissions.ToList()); - return new ObjectResult(result); + Stream report = await svc.ExportReport(name, Request.Query, authProperties.Permissions.ToList()); + var file = File(report, "application/octet-stream"); + return file; } catch (ResourceNotFoundMessage) { return new NotFoundResult(); } catch (NotAuthorizedMessage) { From e498606fedcefc04e27882266acfefbdce52e8a3 Mon Sep 17 00:00:00 2001 From: mbrichards Date: Thu, 14 Apr 2022 16:37:15 -0600 Subject: [PATCH 3/5] [SVC-1275] unit tests --- .../SqlReportApiServiceTest.cs | 35 ++++++++++++ ...Cortside.SqlReportApi.DomainService.csproj | Bin 2068 -> 1942 bytes .../ISqlReportService.cs | 2 +- .../SqlReportService.cs | 25 +++++---- .../SqlReportApiControllerTest.cs | 53 ++++++++++++++++++ .../Controllers/ReportController.cs | 7 ++- 6 files changed, 107 insertions(+), 15 deletions(-) diff --git a/src/Cortside.SqlReportApi.DomainService.Tests/SqlReportApiServiceTest.cs b/src/Cortside.SqlReportApi.DomainService.Tests/SqlReportApiServiceTest.cs index a95831d..c5068ad 100644 --- a/src/Cortside.SqlReportApi.DomainService.Tests/SqlReportApiServiceTest.cs +++ b/src/Cortside.SqlReportApi.DomainService.Tests/SqlReportApiServiceTest.cs @@ -1,6 +1,8 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; +using System.Text; using System.Threading.Tasks; using Cortside.Common.DomainEvent; using Cortside.SqlReportApi.Data; @@ -199,5 +201,38 @@ public async Task ShouldExecuteReport() { result.Should().NotBeNull(); } } + + [Fact] + public async Task ShouldExportReport() { + //arrange + var report = new ReportResult("my report") { + Columns = new List { + new ReportColumn { + Name = "column1" + }, + new ReportColumn { + Name = "column2" + } + }, + Rows = new List { + new object[] { + "c1r1", + "c2,r1"}, + new object[] { + "c1r2", + "c2r2" + }, + } + }; + + //act + var result = service.ExportReport(report); + + //assert + result.CanRead.Should().BeTrue(); + var reader = new StreamReader(result); + var content = reader.ReadToEnd(); + content.Should().ContainAll("column1,", "column2,", "c1r1,", "\"c2,r1\",", "c1r2,", "c2r2,"); + } } } diff --git a/src/Cortside.SqlReportApi.DomainService/Cortside.SqlReportApi.DomainService.csproj b/src/Cortside.SqlReportApi.DomainService/Cortside.SqlReportApi.DomainService.csproj index f852e09cb67141d576046013156ca63e7ba9f793..0ebfd588eb2847c787029b407642c0e577f24c70 100644 GIT binary patch delta 12 TcmbOtFpYo1E2hmE%xhQxAcX|9 delta 54 zcmbQnKSf}}D<(l_hGK>?1`mc*h8%_hAXzkdBeOWS5ra8{9)l4O8%{1{lbl?@Xteni H(;5~4dYBEo diff --git a/src/Cortside.SqlReportApi.DomainService/ISqlReportService.cs b/src/Cortside.SqlReportApi.DomainService/ISqlReportService.cs index 62cd9e7..13e15d9 100644 --- a/src/Cortside.SqlReportApi.DomainService/ISqlReportService.cs +++ b/src/Cortside.SqlReportApi.DomainService/ISqlReportService.cs @@ -28,6 +28,6 @@ public interface ISqlReportService { Task ExecuteReport(string name, IQueryCollection query, List permissions); - Task ExportReport(string name, IQueryCollection query, List list); + Stream ExportReport(ReportResult report); } } diff --git a/src/Cortside.SqlReportApi.DomainService/SqlReportService.cs b/src/Cortside.SqlReportApi.DomainService/SqlReportService.cs index be461bb..3b84d6b 100644 --- a/src/Cortside.SqlReportApi.DomainService/SqlReportService.cs +++ b/src/Cortside.SqlReportApi.DomainService/SqlReportService.cs @@ -1,17 +1,13 @@ using System; using System.Collections.Generic; using System.Data; -using System.Globalization; using System.IO; using System.Linq; -using System.Net.Http; -using System.Net.Http.Headers; using System.Text; using System.Threading.Tasks; using Cortside.SqlReportApi.Data; using Cortside.SqlReportApi.Domain; using Cortside.SqlReportApi.Exceptions; -using CsvHelper; using Microsoft.AspNetCore.Http; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; @@ -191,21 +187,28 @@ public async Task ExecuteReport(string name, IQueryCollection args return result; } - public async Task ExportReport(string name, IQueryCollection query, List list) { - var report = await ExecuteReport(name, query, list); + public Stream ExportReport(ReportResult report) { var stream = new MemoryStream(); var writer = new StreamWriter(stream); + + // write header + foreach (var column in report.Columns) { + writer.Write($"{column.Name},"); + } + + // write body foreach (var row in report.Rows) { - var writeRow = new StringBuilder(); + writer.WriteLine(); foreach (var column in row) { if (column.ToString().Contains(',')) { - writeRow.Append($"\"{column}\","); + // handle commas + writer.Write($"\"{column}\","); } else { - writeRow.Append($"{column},"); + writer.Write($"{column},"); } } - writer.WriteLine(writeRow); - } + }; + writer.Flush(); stream.Position = 0; return stream; } diff --git a/src/Cortside.SqlReportApi.WebApi.Tests/SqlReportApiControllerTest.cs b/src/Cortside.SqlReportApi.WebApi.Tests/SqlReportApiControllerTest.cs index 0c11e67..755366c 100644 --- a/src/Cortside.SqlReportApi.WebApi.Tests/SqlReportApiControllerTest.cs +++ b/src/Cortside.SqlReportApi.WebApi.Tests/SqlReportApiControllerTest.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.IO; using System.Threading; using System.Threading.Tasks; using Cortside.SqlReportApi.Data; @@ -212,5 +213,57 @@ public void GetReportGroupsShouldReturnObject() { viewResult.Which.Value.Should().BeEquivalentTo(reportGroup); serviceMock.Verify(s => s.GetReportGroups(), Times.Once); } + + + [Fact] + public async void ExportReportShouldReturnObject() { + //arrange + var request = new Mock(); + var context = new Mock(); + var dictionary = new Dictionary(); + dictionary.Add("date", new StringValues("01/01/2000")); + var collection = new QueryCollection(dictionary); + + request.SetupGet(x => x.Query).Returns(collection); + context.SetupGet(x => x.Request).Returns(request.Object); + + + var report = new ReportResult("my report") { + Columns = new List { + new ReportColumn { + Name = "column1" + }, + new ReportColumn { + Name = "column2" + } + }, + Rows = new List { + new object[] { + "row1column1", + "row1column2"}, + new object[] { + "row2column1", + "row2column2" + }, + } + }; + + using MemoryStream stream = new MemoryStream(); + using StreamWriter writer = new StreamWriter(stream); + writer.WriteLine("column1", "column2"); + writer.WriteLine("row1column1", "row1column2"); + writer.WriteLine("row2column1", "row2column2"); + + reportController.ControllerContext = new ControllerContext(new ActionContext(context.Object, new RouteData(), new ControllerActionDescriptor())); + serviceMock.Setup(s => s.ExecuteReport(It.IsAny(), It.IsAny(), It.IsAny>())).Returns(Task.FromResult(report)); + serviceMock.Setup(s => s.ExportReport(It.IsAny())).Returns(stream); + + //act + var result = await reportController.Export("report"); + + //assert + var viewResult = result.Should().BeAssignableTo(); + viewResult.Which.Value.Should().BeOfType(); + } } } diff --git a/src/Cortside.SqlReportApi.WebApi/Controllers/ReportController.cs b/src/Cortside.SqlReportApi.WebApi/Controllers/ReportController.cs index e633db6..7de4005 100644 --- a/src/Cortside.SqlReportApi.WebApi/Controllers/ReportController.cs +++ b/src/Cortside.SqlReportApi.WebApi/Controllers/ReportController.cs @@ -79,9 +79,10 @@ public async Task Export(string name) { var permissionsPrefix = "Sql Report"; responseModel.Permissions = responseModel.Permissions.Select(p => $"{permissionsPrefix}.{p}").ToList(); try { - Stream report = await svc.ExportReport(name, Request.Query, authProperties.Permissions.ToList()); - var file = File(report, "application/octet-stream"); - return file; + var report = await svc.ExecuteReport(name, Request.Query, authProperties.Permissions.ToList()); + Stream result = svc.ExportReport(report); + var file = File(result, "application/octet-stream"); + return new ObjectResult(file); } catch (ResourceNotFoundMessage) { return new NotFoundResult(); } catch (NotAuthorizedMessage) { From 198aa628617602d76c534dcd6e9623651ac40ea4 Mon Sep 17 00:00:00 2001 From: mbrichards Date: Fri, 15 Apr 2022 12:13:14 -0600 Subject: [PATCH 4/5] [SVC-1275] fix return --- .../SqlReportApiControllerTest.cs | 3 +-- .../Controllers/AuthorizationController.cs | 3 +-- .../Controllers/ReportController.cs | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/Cortside.SqlReportApi.WebApi.Tests/SqlReportApiControllerTest.cs b/src/Cortside.SqlReportApi.WebApi.Tests/SqlReportApiControllerTest.cs index 755366c..e348c52 100644 --- a/src/Cortside.SqlReportApi.WebApi.Tests/SqlReportApiControllerTest.cs +++ b/src/Cortside.SqlReportApi.WebApi.Tests/SqlReportApiControllerTest.cs @@ -262,8 +262,7 @@ public async void ExportReportShouldReturnObject() { var result = await reportController.Export("report"); //assert - var viewResult = result.Should().BeAssignableTo(); - viewResult.Which.Value.Should().BeOfType(); + var viewResult = result.Should().BeAssignableTo(); } } } diff --git a/src/Cortside.SqlReportApi.WebApi/Controllers/AuthorizationController.cs b/src/Cortside.SqlReportApi.WebApi/Controllers/AuthorizationController.cs index 19ac3c3..0447dd8 100644 --- a/src/Cortside.SqlReportApi.WebApi/Controllers/AuthorizationController.cs +++ b/src/Cortside.SqlReportApi.WebApi/Controllers/AuthorizationController.cs @@ -16,7 +16,7 @@ namespace Cortside.SqlReportApi.WebApi.Controllers { [ApiController] [ApiVersion("1")] [Produces("application/json")] - //[Authorize] + [Authorize] public class AuthorizationController : ControllerBase { private readonly ILogger logger; private readonly IPolicyServerRuntimeClient policyClient; @@ -41,7 +41,6 @@ public AuthorizationController(ILogger logger, IPolicyS [HttpGet("")] [ProducesResponseType(typeof(AuthorizationModel), (int)HttpStatusCode.OK)] public async Task GetPermissions() { - return Ok(new AuthorizationModel { Permissions = new System.Collections.Generic.List { "SqlReportApi.CanGetReports" } }); logger.LogInformation("Retrieving authorization permissions for user."); var authProperties = await policyClient.EvaluateAsync(User); AuthorizationModel responseModel = new AuthorizationModel() { diff --git a/src/Cortside.SqlReportApi.WebApi/Controllers/ReportController.cs b/src/Cortside.SqlReportApi.WebApi/Controllers/ReportController.cs index 7de4005..b2dbfc6 100644 --- a/src/Cortside.SqlReportApi.WebApi/Controllers/ReportController.cs +++ b/src/Cortside.SqlReportApi.WebApi/Controllers/ReportController.cs @@ -81,8 +81,7 @@ public async Task Export(string name) { try { var report = await svc.ExecuteReport(name, Request.Query, authProperties.Permissions.ToList()); Stream result = svc.ExportReport(report); - var file = File(result, "application/octet-stream"); - return new ObjectResult(file); + return File(result, "application/octet-stream"); } catch (ResourceNotFoundMessage) { return new NotFoundResult(); } catch (NotAuthorizedMessage) { From 3b84ac43e90c59d7f9c4f5804c70ce07cd8219f1 Mon Sep 17 00:00:00 2001 From: mbrichards Date: Fri, 15 Apr 2022 12:56:59 -0600 Subject: [PATCH 5/5] [SVC-1275] revert appsettings --- src/Cortside.SqlReportApi.WebApi/appsettings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Cortside.SqlReportApi.WebApi/appsettings.json b/src/Cortside.SqlReportApi.WebApi/appsettings.json index 69e21f9..0b5f370 100644 --- a/src/Cortside.SqlReportApi.WebApi/appsettings.json +++ b/src/Cortside.SqlReportApi.WebApi/appsettings.json @@ -81,7 +81,7 @@ ] }, "SqlReport": { - "ConnectionString": "Data Source=sqltestonlineapp;Initial Catalog=SqlReportDev;Integrated Security=True" + "ConnectionString": "Data Source=localhost;Initial Catalog=SqlReport;Integrated Security=True" }, "ServiceBus": { "Protocol": "amqp",