Manage the update of some data at the
start of the database
This commit is contained in:
65
.gitignore
vendored
65
.gitignore
vendored
@@ -2,45 +2,28 @@
|
|||||||
# This .gitignore file was automatically created by Microsoft(R) Visual Studio.
|
# This .gitignore file was automatically created by Microsoft(R) Visual Studio.
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
/Back/skydiveLogs-api/obj
|
/Back/.vs/
|
||||||
/Back/.vs/skydiveLogs-api/v15
|
/Back/skydiveLogs-api/obj/
|
||||||
/Back/skydiveLogs-api/bin
|
/Back/skydiveLogs-api/bin/
|
||||||
/Back/.vs
|
/Back/skydiveLogs-api.Model/obj/
|
||||||
/Back/skydiveLogs-api.DomainBusiness/obj
|
/Back/skydiveLogs-api.Model/bin/
|
||||||
/Back/skydiveLogs-api.Infrastructure/obj
|
/Back/skydiveLogs-api.Ioc/bin/
|
||||||
/Back/skydiveLogs-api.Model/obj
|
/Back/skydiveLogs-api.Ioc/obj/
|
||||||
/Back/skydiveLogs-api.Model/bin
|
/Back/skydiveLogs-api.Infrastructure/bin/
|
||||||
/Back/skydiveLogs-api.Ioc/bin
|
/Back/skydiveLogs-api.Infrastructure/obj/
|
||||||
/Back/skydiveLogs-api.Ioc/obj
|
/Back/dist/
|
||||||
/Back/skydiveLogs-api.Infrastructure/bin
|
|
||||||
/Back/skydiveLogs-api.DomainBusiness/bin
|
|
||||||
/Back/dist
|
|
||||||
/Back/skydiveLogs-api.v3.ncrunchsolution.user
|
/Back/skydiveLogs-api.v3.ncrunchsolution.user
|
||||||
/Back/skydiveLogs-api/Init/twinOtter.jpg
|
/Back/skydiveLogs-api/Init/*.jpg
|
||||||
/Back/skydiveLogs-api/Init/skyvan.jpg
|
/Back/skydiveLogs-api/Update/
|
||||||
/Back/skydiveLogs-api/Init/Pilatus.png
|
/Back/skydiveLogs-api.DomainService/bin/
|
||||||
/Back/skydiveLogs-api/Init/pac.jpg
|
/Back/skydiveLogs-api.DomainService/obj/
|
||||||
/Back/skydiveLogs-api/Init/dornier.jpg
|
/Back/skydiveLogs-api.Business/bin/
|
||||||
/Back/skydiveLogs-api/Init/casa.jpg
|
/Back/skydiveLogs-api.Business/obj/
|
||||||
/Back/skydiveLogs-api/Init/caravan.jpg
|
/Back/skydiveLogs-api.Data/bin/
|
||||||
/Back/skydiveLogs-api/Init/206.jpg
|
/Back/skydiveLogs-api.Data/obj/
|
||||||
/Back/skydiveLogs-api/Data
|
/Back/skydiveLogs-api.Domain/bin/
|
||||||
/Back/skydiveLogs-api.DomainService/bin
|
/Back/skydiveLogs-api.Domain/obj/
|
||||||
/Back/skydiveLogs-api.DomainService/obj
|
/Back/skydiveLogs-api/Data/
|
||||||
/Back/skydiveLogs-api.Data/obj
|
/Back/skydiveLogs-api/users.txt
|
||||||
/Back/skydiveLogs-api.Business/obj
|
/Back/skydiveLogs-api.DomainBusiness/bin/
|
||||||
/Back/skydiveLogs-api.Domain/obj
|
/Back/skydiveLogs-api.DomainBusiness/obj/
|
||||||
/Back/skydiveLogs-api.Domain/bin/Debug/net5.0
|
|
||||||
/Back/skydiveLogs-api.Data/bin/Debug/net5.0
|
|
||||||
/Back/skydiveLogs-api.Domain/bin/Release/net5.0/ref/skydiveLogs-api.Domain.dll
|
|
||||||
/Back/skydiveLogs-api.Domain/bin/Release/net5.0/skydiveLogs-api.Domain.dll
|
|
||||||
/Back/skydiveLogs-api.Domain/bin/Release/net5.0/skydiveLogs-api.Domain.pdb
|
|
||||||
/Back/skydiveLogs-api/Data/JumpsDb-log.db
|
|
||||||
/Back/skydiveLogs-api/Data/JumpsDb.db
|
|
||||||
Back/skydiveLogs-api/Data/JumpsDb.db
|
|
||||||
Back/skydiveLogs-api/Data/JumpsDb-log.db
|
|
||||||
/Back/skydiveLogs-api.Domain/bin/Release/net5.0/skydiveLogs-api.Domain.deps.json
|
|
||||||
/Back/skydiveLogs-api.Domain/bin/Debug/net6.0
|
|
||||||
/Back/skydiveLogs-api.Domain/bin/Debug/net7.0
|
|
||||||
Back/skydiveLogs-api/Data/JumpsDb.db
|
|
||||||
/Back/skydiveLogs-api/Data/JumpsDb.db
|
|
||||||
|
|||||||
@@ -49,9 +49,15 @@ namespace skydiveLogs_api.DomainBusiness
|
|||||||
return _cacheService.Get<IEnumerable<Aircraft>>(CacheType.Aircraft);
|
return _cacheService.Get<IEnumerable<Aircraft>>(CacheType.Aircraft);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateAircraft(int id, Aircraft aircraft)
|
public bool UpdateAircraft(int id, Aircraft aircraft, bool resetCache = true)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
aircraft.Id = id;
|
||||||
|
|
||||||
|
var result = _aircraftRepository.Update(aircraft);
|
||||||
|
if (resetCache && result)
|
||||||
|
_cacheService.Delete(CacheType.JumpType);
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Methods
|
#endregion Public Methods
|
||||||
|
|||||||
@@ -92,12 +92,12 @@ namespace skydiveLogs_api.DomainBusiness
|
|||||||
return result > 0;
|
return result > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool UpdateDz(int id, DropZone dropZone)
|
public bool UpdateDz(int id, DropZone dropZone, bool resetCache = true)
|
||||||
{
|
{
|
||||||
dropZone.Id = id;
|
dropZone.Id = id;
|
||||||
|
|
||||||
var result = _dropZoneRepository.Update(dropZone);
|
var result = _dropZoneRepository.Update(dropZone);
|
||||||
if (result)
|
if (resetCache && result)
|
||||||
_cacheService.Delete(CacheType.DropZone);
|
_cacheService.Delete(CacheType.DropZone);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -13,18 +13,31 @@ namespace skydiveLogs_api.DomainBusiness
|
|||||||
public InitDbService(IAircraftService aircraftService,
|
public InitDbService(IAircraftService aircraftService,
|
||||||
IJumpTypeService jumpTypeService,
|
IJumpTypeService jumpTypeService,
|
||||||
IDropZoneService dropZoneService,
|
IDropZoneService dropZoneService,
|
||||||
IUserService userService)
|
IUserService userService,
|
||||||
|
ICacheService cacheService)
|
||||||
{
|
{
|
||||||
_aircraftService = aircraftService;
|
_aircraftService = aircraftService;
|
||||||
_jumpTypeService = jumpTypeService;
|
_jumpTypeService = jumpTypeService;
|
||||||
_dropZoneService = dropZoneService;
|
_dropZoneService = dropZoneService;
|
||||||
_userService = userService;
|
_userService = userService;
|
||||||
|
_cacheService = cacheService;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Constructors
|
#endregion Public Constructors
|
||||||
|
|
||||||
#region Public Methods
|
#region Public Methods
|
||||||
|
|
||||||
|
public void Update()
|
||||||
|
{
|
||||||
|
UpdateAircrafts();
|
||||||
|
UpdateDropZones();
|
||||||
|
UpdateJumpTypes();
|
||||||
|
|
||||||
|
_cacheService.Delete(CacheType.Aircraft);
|
||||||
|
_cacheService.Delete(CacheType.DropZone);
|
||||||
|
_cacheService.Delete(CacheType.JumpType);
|
||||||
|
}
|
||||||
|
|
||||||
public void GenerateDb()
|
public void GenerateDb()
|
||||||
{
|
{
|
||||||
LoadAircrafts();
|
LoadAircrafts();
|
||||||
@@ -50,6 +63,7 @@ namespace skydiveLogs_api.DomainBusiness
|
|||||||
_userService.AddNewUser(adminUser, true);
|
_userService.AddNewUser(adminUser, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region Init tables and informations
|
||||||
private void LoadAircrafts()
|
private void LoadAircrafts()
|
||||||
{
|
{
|
||||||
var jsonString = File.ReadAllText("Init/aircraft.json");
|
var jsonString = File.ReadAllText("Init/aircraft.json");
|
||||||
@@ -97,16 +111,85 @@ namespace skydiveLogs_api.DomainBusiness
|
|||||||
_jumpTypeService.AddNewJumpType(item);
|
_jumpTypeService.AddNewJumpType(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Update the existing data
|
||||||
|
private void UpdateAircrafts()
|
||||||
|
{
|
||||||
|
var file = "Update/aircraft.json";
|
||||||
|
if (File.Exists(file))
|
||||||
|
{
|
||||||
|
var jsonString = File.ReadAllText(file);
|
||||||
|
var options = new JsonSerializerOptions
|
||||||
|
{
|
||||||
|
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
|
||||||
|
WriteIndented = true
|
||||||
|
};
|
||||||
|
var jsonModel = JsonSerializer.Deserialize<List<Aircraft>>(jsonString, options);
|
||||||
|
|
||||||
|
foreach (var item in jsonModel)
|
||||||
|
{
|
||||||
|
_aircraftService.UpdateAircraft(item.Id, item, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
File.Delete(file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateDropZones()
|
||||||
|
{
|
||||||
|
var file = "Update/dropZone.json";
|
||||||
|
if (File.Exists(file))
|
||||||
|
{
|
||||||
|
var jsonString = File.ReadAllText("Update/dropZone.json");
|
||||||
|
var options = new JsonSerializerOptions
|
||||||
|
{
|
||||||
|
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
|
||||||
|
WriteIndented = true
|
||||||
|
};
|
||||||
|
var jsonModel = JsonSerializer.Deserialize<List<DropZone>>(jsonString, options);
|
||||||
|
|
||||||
|
foreach (var item in jsonModel)
|
||||||
|
{
|
||||||
|
_dropZoneService.UpdateDz(item.Id, item, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
File.Delete(file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateJumpTypes()
|
||||||
|
{
|
||||||
|
var file = "Update/jumpType.json";
|
||||||
|
if (File.Exists(file))
|
||||||
|
{
|
||||||
|
var jsonString = File.ReadAllText("Update/jumpType.json");
|
||||||
|
var options = new JsonSerializerOptions
|
||||||
|
{
|
||||||
|
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
|
||||||
|
WriteIndented = true
|
||||||
|
};
|
||||||
|
var jsonModel = JsonSerializer.Deserialize<List<JumpType>>(jsonString, options);
|
||||||
|
|
||||||
|
foreach (var item in jsonModel)
|
||||||
|
{
|
||||||
|
_jumpTypeService.UpdateJumpType(item.Id, item, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
File.Delete(file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
#endregion Private Methods
|
#endregion Private Methods
|
||||||
|
|
||||||
#region Private Fields
|
#region Private Fields
|
||||||
|
|
||||||
private readonly IAircraftService _aircraftService;
|
private readonly IAircraftService _aircraftService;
|
||||||
|
|
||||||
private readonly IDropZoneService _dropZoneService;
|
private readonly IDropZoneService _dropZoneService;
|
||||||
private readonly IJumpTypeService _jumpTypeService;
|
private readonly IJumpTypeService _jumpTypeService;
|
||||||
private readonly IUserService _userService;
|
private readonly IUserService _userService;
|
||||||
|
private readonly ICacheService _cacheService;
|
||||||
|
|
||||||
#endregion Private Fields
|
#endregion Private Fields
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces
|
|||||||
|
|
||||||
IEnumerable<Aircraft> GetAllAircrafts();
|
IEnumerable<Aircraft> GetAllAircrafts();
|
||||||
|
|
||||||
void UpdateAircraft(int id, Aircraft aircraft);
|
bool UpdateAircraft(int id, Aircraft aircraft, bool resetCache = true);
|
||||||
|
|
||||||
#endregion Public Methods
|
#endregion Public Methods
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces
|
|||||||
|
|
||||||
bool RemoveToFavorite(int dzId);
|
bool RemoveToFavorite(int dzId);
|
||||||
|
|
||||||
bool UpdateDz(int id, DropZone dropZone);
|
bool UpdateDz(int id, DropZone dropZone, bool resetCache = true);
|
||||||
|
|
||||||
#endregion Public Methods
|
#endregion Public Methods
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
#region Public Methods
|
#region Public Methods
|
||||||
|
|
||||||
public void GenerateDb();
|
public void GenerateDb();
|
||||||
|
public void Update();
|
||||||
|
|
||||||
#endregion Public Methods
|
#endregion Public Methods
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces
|
|||||||
|
|
||||||
JumpType GetJumpTypeById(int id);
|
JumpType GetJumpTypeById(int id);
|
||||||
|
|
||||||
bool UpdateJumpType(int id, JumpType value);
|
bool UpdateJumpType(int id, JumpType value, bool resetCache = true);
|
||||||
|
|
||||||
#endregion Public Methods
|
#endregion Public Methods
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
using skydiveLogs_api.Domain;
|
using skydiveLogs_api.Domain;
|
||||||
using skydiveLogs_api.DomainBusiness.Interfaces;
|
using skydiveLogs_api.DomainBusiness.Interfaces;
|
||||||
using skydiveLogs_api.DomainService.Repositories;
|
using skydiveLogs_api.DomainService.Repositories;
|
||||||
using skydiveLogs_api.Infrastructure;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -55,12 +54,12 @@ namespace skydiveLogs_api.DomainBusiness
|
|||||||
return allJumpTypes.Single(g => g.Id == id);
|
return allJumpTypes.Single(g => g.Id == id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool UpdateJumpType(int id, JumpType jumpType)
|
public bool UpdateJumpType(int id, JumpType jumpType, bool resetCache = true)
|
||||||
{
|
{
|
||||||
jumpType.Id = id;
|
jumpType.Id = id;
|
||||||
|
|
||||||
var result = _jumpTypeRepository.Update(jumpType);
|
var result = _jumpTypeRepository.Update(jumpType);
|
||||||
if (result)
|
if (resetCache && result)
|
||||||
_cacheService.Delete(CacheType.JumpType);
|
_cacheService.Delete(CacheType.JumpType);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ namespace skydiveLogs_api.Ioc
|
|||||||
_services.AddSingleton<ICacheService, CacheService>();
|
_services.AddSingleton<ICacheService, CacheService>();
|
||||||
_services.AddScoped<IIdentityService, IdentityService>();
|
_services.AddScoped<IIdentityService, IdentityService>();
|
||||||
|
|
||||||
_services.AddScoped<ClaimsPrincipal>(s => s.GetService<IHttpContextAccessor>()?.HttpContext.User);
|
_services.AddScoped<ClaimsPrincipal>(s => s.GetService<IHttpContextAccessor>()?.HttpContext?.User);
|
||||||
|
|
||||||
_services.AddScoped<IAircraftRepository, AircraftRepository>();
|
_services.AddScoped<IAircraftRepository, AircraftRepository>();
|
||||||
_services.AddScoped<IDropZoneRepository, DropZoneRepository>();
|
_services.AddScoped<IDropZoneRepository, DropZoneRepository>();
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ using skydiveLogs_api.DomainBusiness.Interfaces;
|
|||||||
using skydiveLogs_api.Ioc;
|
using skydiveLogs_api.Ioc;
|
||||||
using skydiveLogs_api.Settings;
|
using skydiveLogs_api.Settings;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace skydiveLogs_api
|
namespace skydiveLogs_api
|
||||||
@@ -106,14 +107,21 @@ namespace skydiveLogs_api
|
|||||||
private void CheckAndInitDb(IServiceCollection services)
|
private void CheckAndInitDb(IServiceCollection services)
|
||||||
{
|
{
|
||||||
string connectionString = Configuration.GetConnectionString("DefaultConnection");
|
string connectionString = Configuration.GetConnectionString("DefaultConnection");
|
||||||
string dbFile = connectionString.Replace("Filename=", string.Empty);
|
var dictionary = connectionString.Split(';')
|
||||||
|
.Select(part => part.Split('='))
|
||||||
|
.Where(part => part.Length == 2)
|
||||||
|
.ToDictionary(sp => sp[0], sp => sp[1]);
|
||||||
|
|
||||||
|
string dbFile = dictionary["Filename"]; //connectionString.Replace("Filename=", string.Empty);
|
||||||
|
|
||||||
|
|
||||||
|
var serviceProvider = services.BuildServiceProvider();
|
||||||
|
var initDbService = serviceProvider.GetRequiredService<IInitDbService>();
|
||||||
|
|
||||||
if (!File.Exists(dbFile))
|
if (!File.Exists(dbFile))
|
||||||
{
|
|
||||||
var serviceProvider = services.BuildServiceProvider();
|
|
||||||
var initDbService = serviceProvider.GetRequiredService<IInitDbService>();
|
|
||||||
initDbService.GenerateDb();
|
initDbService.GenerateDb();
|
||||||
}
|
else
|
||||||
|
initDbService.Update();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Private Methods
|
#endregion Private Methods
|
||||||
|
|||||||
@@ -15,6 +15,6 @@
|
|||||||
},
|
},
|
||||||
"AllowedHosts": "*",
|
"AllowedHosts": "*",
|
||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
"DefaultConnection": "Filename=./Data/JumpsDb.db"
|
"DefaultConnection": "Filename=./Data/JumpsDb.db;connection=shared"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -13,6 +13,6 @@
|
|||||||
},
|
},
|
||||||
"AllowedHosts": "*",
|
"AllowedHosts": "*",
|
||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
"DefaultConnection": "Filename=./Data/JumpsDb.db"
|
"DefaultConnection": "Filename=./Data/JumpsDb.db;connection=shared"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -15,6 +15,6 @@
|
|||||||
},
|
},
|
||||||
"AllowedHosts": "*",
|
"AllowedHosts": "*",
|
||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
"DefaultConnection": "Filename=./Data/JumpsDb.db"
|
"DefaultConnection": "Filename=./Data/JumpsDb.db;connection=shared"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,4 +31,12 @@
|
|||||||
<ProjectReference Include="..\skydiveLogs-api.Domain\skydiveLogs-api.Domain.csproj" />
|
<ProjectReference Include="..\skydiveLogs-api.Domain\skydiveLogs-api.Domain.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Update="Update\jumpType.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
|
||||||
|
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
|
||||||
|
</Content>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
Reference in New Issue
Block a user