From 2e6ec6ec85f453fac783f383132019c25ca51781 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Andr=C3=A9?= Date: Sun, 10 Nov 2019 20:03:03 +0100 Subject: [PATCH] Update IoC and the "GET" function in the repository (lock issue) --- .../AircraftRepository.cs | 33 +++++++++--------- .../DropZoneRepository.cs | 11 +----- Back/skydiveLogs-api.Ioc/IocService.cs | 12 +++++-- .../skydiveLogs-api.Ioc.csproj | 3 ++ Back/skydiveLogs-api.Model/DatabaseOptions.cs | 7 ++++ .../Data/{MyData.db => JumpsDb.db} | Bin Back/skydiveLogs-api/Startup.cs | 2 +- Back/skydiveLogs-api/appsettings.json | 2 +- Back/skydiveLogs-api/skydiveLogs-api.csproj | 4 +-- 9 files changed, 40 insertions(+), 34 deletions(-) create mode 100644 Back/skydiveLogs-api.Model/DatabaseOptions.cs rename Back/skydiveLogs-api/Data/{MyData.db => JumpsDb.db} (100%) diff --git a/Back/skydiveLogs-api.Data/AircraftRepository.cs b/Back/skydiveLogs-api.Data/AircraftRepository.cs index e9b345a..cfb27ca 100644 --- a/Back/skydiveLogs-api.Data/AircraftRepository.cs +++ b/Back/skydiveLogs-api.Data/AircraftRepository.cs @@ -11,32 +11,31 @@ namespace skydiveLogs_api.Data { public class AircraftRepository : IAircraftRepository { + public AircraftRepository(IDataProvider dataProvider) + { + _dataProvider = dataProvider; + _col = _dataProvider.GetCollection(); + } + public IEnumerable GetAll() { - IEnumerable result = new List(); + var results = _col.FindAll().ToList(); + _dataProvider.Close(); - using (var db = new LiteDatabase(@".\Data\MyData.db")) - { - var col = db.GetCollection("Aircraft"); - - result = col.FindAll().ToList(); - } - - return result; + return results; } public Aircraft GetById(int id) { - Aircraft result; - - using (var db = new LiteDatabase(@".\Data\MyData.db")) - { - var col = db.GetCollection("Aircraft"); - - result = col.FindById(new BsonValue(id)); - } + var result = _col.FindById(new BsonValue(id)); + _dataProvider.Close(); return result; } + + + private readonly IDataProvider _dataProvider; + + private readonly LiteCollection _col; } } diff --git a/Back/skydiveLogs-api.Data/DropZoneRepository.cs b/Back/skydiveLogs-api.Data/DropZoneRepository.cs index f9ff870..23f77e6 100644 --- a/Back/skydiveLogs-api.Data/DropZoneRepository.cs +++ b/Back/skydiveLogs-api.Data/DropZoneRepository.cs @@ -24,16 +24,7 @@ namespace skydiveLogs_api.Data public DropZone GetById(int id) { - DropZone result; - - using (var db = new LiteDatabase(@".\Data\MyData.db")) - { - var col = db.GetCollection("DropZone"); - - result = col.FindById(new BsonValue(id)); - } - - return result; + return _col.FindById(new BsonValue(id)); ; } private readonly IDataProvider _dataProvider; diff --git a/Back/skydiveLogs-api.Ioc/IocService.cs b/Back/skydiveLogs-api.Ioc/IocService.cs index e9b1ae3..497e665 100644 --- a/Back/skydiveLogs-api.Ioc/IocService.cs +++ b/Back/skydiveLogs-api.Ioc/IocService.cs @@ -1,12 +1,15 @@ -using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; namespace skydiveLogs_api.Ioc { public class IocService { - public IocService(IServiceCollection services) + public IocService(IServiceCollection services, + IConfiguration configuration) { _services = services; + _configuration = configuration; } public void Configure() @@ -28,9 +31,12 @@ namespace skydiveLogs_api.Ioc _services.AddScoped(); _services.AddScoped(); - _services.AddScoped(); + string connectionString = _configuration.GetConnectionString("DefaultConnection"); + _services.AddScoped(c => new Data.LiteDbProvider(connectionString)); } private readonly IServiceCollection _services; + + private readonly IConfiguration _configuration; } } diff --git a/Back/skydiveLogs-api.Ioc/skydiveLogs-api.Ioc.csproj b/Back/skydiveLogs-api.Ioc/skydiveLogs-api.Ioc.csproj index ecd3e84..e0c0316 100644 --- a/Back/skydiveLogs-api.Ioc/skydiveLogs-api.Ioc.csproj +++ b/Back/skydiveLogs-api.Ioc/skydiveLogs-api.Ioc.csproj @@ -11,6 +11,9 @@ + + ..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.configuration.abstractions\2.2.0\lib\netstandard2.0\Microsoft.Extensions.Configuration.Abstractions.dll + ..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.dependencyinjection.abstractions\2.2.0\lib\netstandard2.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll diff --git a/Back/skydiveLogs-api.Model/DatabaseOptions.cs b/Back/skydiveLogs-api.Model/DatabaseOptions.cs new file mode 100644 index 0000000..dd84ec8 --- /dev/null +++ b/Back/skydiveLogs-api.Model/DatabaseOptions.cs @@ -0,0 +1,7 @@ +namespace skydiveLogs_api.Model +{ + public class DatabaseOptions + { + public string ConnectionString { get; set; } + } +} diff --git a/Back/skydiveLogs-api/Data/MyData.db b/Back/skydiveLogs-api/Data/JumpsDb.db similarity index 100% rename from Back/skydiveLogs-api/Data/MyData.db rename to Back/skydiveLogs-api/Data/JumpsDb.db diff --git a/Back/skydiveLogs-api/Startup.cs b/Back/skydiveLogs-api/Startup.cs index b21532c..f73a97b 100644 --- a/Back/skydiveLogs-api/Startup.cs +++ b/Back/skydiveLogs-api/Startup.cs @@ -35,7 +35,7 @@ namespace skydiveLogs_api }); // IoC - var iocService = new IocService(services); + var iocService = new IocService(services, Configuration); iocService.Configure(); services.AddAutoMapper(typeof(Mapper.ModelProfile)); diff --git a/Back/skydiveLogs-api/appsettings.json b/Back/skydiveLogs-api/appsettings.json index faee0fb..42ae427 100644 --- a/Back/skydiveLogs-api/appsettings.json +++ b/Back/skydiveLogs-api/appsettings.json @@ -6,6 +6,6 @@ }, "AllowedHosts": "*", "ConnectionStrings": { - "JumpsDatabase": "Filename=./Data/JumpsDb.db" + "DefaultConnection": "Filename=./Data/JumpsDb.db" } } diff --git a/Back/skydiveLogs-api/skydiveLogs-api.csproj b/Back/skydiveLogs-api/skydiveLogs-api.csproj index d15947f..c995cc1 100644 --- a/Back/skydiveLogs-api/skydiveLogs-api.csproj +++ b/Back/skydiveLogs-api/skydiveLogs-api.csproj @@ -8,11 +8,11 @@ - + - + Always