Skip to content

Commit 6504254

Browse files
authored
Merge pull request #532 from ipax77/dev
v2.0.8
2 parents 09d8ee4 + 1db7b22 commit 6504254

25 files changed

+191
-176
lines changed

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,14 @@ We really like people helping us with the project. Nevertheless, take your time
3030

3131
## ChangeLog
3232

33+
<details open="open"><summary>v2.0.8</summary>
34+
35+
>- dotnet update to 8.0.15
36+
>- Maui Replay Import improved
37+
>- Maui Import 'Robust Import' - saving replays one by one
38+
39+
</details>
40+
3341
<details open="open"><summary>v2.0.7</summary>
3442

3543
>- s2protocol 5.0.14.93333.0 (s2protocol.NET v0.8.4)

src/dsstats.db8services/IReplayRepository.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@ namespace dsstats.db8services;
55

66
public interface IReplayRepository
77
{
8-
Task SaveReplay(ReplayDto replayDto,
9-
HashSet<Unit> units,
10-
HashSet<Upgrade> upgrades);
8+
Task SaveReplay(ReplayDto replayDto);
119
Task<ReplayDto?> GetLatestReplay();
1210
Task<ReplayDto?> GetPreviousReplay(DateTime gameTime);
1311
Task<ReplayDto?> GetNextReplay(DateTime gameTime);

src/dsstats.db8services/Import/ImportService.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public async Task Init()
3838
await initSs.WaitAsync();
3939
if (IsInit)
4040
{
41+
initSs.Release();
4142
return;
4243
}
4344
try
@@ -181,7 +182,7 @@ private async Task<int> GetUnitIdAsync(string name)
181182
}
182183
}
183184

184-
private int GetUnitId(string name)
185+
public int GetUnitId(string name)
185186
{
186187
if (!Units.TryGetValue(name, out var unitId))
187188
{
@@ -236,7 +237,7 @@ private async Task<int> GetUpgradeIdAsync(string name)
236237
}
237238
}
238239

239-
private int GetUpgradeId(string name)
240+
public int GetUpgradeId(string name)
240241
{
241242
if (!Upgrades.TryGetValue(name, out var upgradeId))
242243
{

src/dsstats.db8services/ReplayRepository.cs

Lines changed: 13 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
using dsstats.db8;
55
using dsstats.shared;
66
using dsstats.shared.Extensions;
7+
using dsstats.shared.Interfaces;
78
using Microsoft.EntityFrameworkCore;
89
using Microsoft.Extensions.Logging;
910
using Microsoft.Extensions.Options;
10-
using System;
1111
using System.Diagnostics;
1212

1313
namespace dsstats.db8services;
@@ -18,20 +18,24 @@ public class ReplayRepository : IReplayRepository
1818
private readonly ReplayContext context;
1919
private readonly IOptions<DbImportOptions> dbImportOptions;
2020
private readonly IMapper mapper;
21+
private readonly IImportService importService;
2122

2223
public ReplayRepository(ILogger<ReplayRepository> logger,
2324
ReplayContext context,
2425
IOptions<DbImportOptions> dbImportOptions,
25-
IMapper mapper)
26+
IMapper mapper,
27+
IImportService importService)
2628
{
2729
this.logger = logger;
2830
this.context = context;
2931
this.dbImportOptions = dbImportOptions;
3032
this.mapper = mapper;
33+
this.importService = importService;
3134
}
3235

33-
public async Task SaveReplay(ReplayDto replayDto, HashSet<Unit> units, HashSet<Upgrade> upgrades)
36+
public async Task SaveReplay(ReplayDto replayDto)
3437
{
38+
await importService.Init();
3539
replayDto.SetDefaultFilter();
3640

3741
var dbReplay = mapper.Map<Replay>(replayDto);
@@ -80,10 +84,10 @@ public async Task SaveReplay(ReplayDto replayDto, HashSet<Unit> units, HashSet<U
8084

8185
foreach (var spawn in replayPlayer.Spawns)
8286
{
83-
spawn.Units = await GetMapedSpawnUnits(spawn, replayPlayer.Race, units);
87+
spawn.Units = GetMapedSpawnUnits(spawn, replayPlayer.Race);
8488
}
8589

86-
replayPlayer.Upgrades = await GetMapedPlayerUpgrades(replayPlayer, upgrades);
90+
replayPlayer.Upgrades = GetMapedPlayerUpgrades(replayPlayer);
8791

8892
}
8993

@@ -106,55 +110,31 @@ public async Task SaveReplay(ReplayDto replayDto, HashSet<Unit> units, HashSet<U
106110
}
107111
}
108112

109-
private async Task<ICollection<SpawnUnit>> GetMapedSpawnUnits(Spawn spawn, Commander commander, HashSet<Unit> units)
113+
private ICollection<SpawnUnit> GetMapedSpawnUnits(Spawn spawn, Commander commander)
110114
{
111115
List<SpawnUnit> spawnUnits = new();
112116
foreach (var spawnUnit in spawn.Units)
113117
{
114-
var listUnit = units.FirstOrDefault(f => f.Name.Equals(spawnUnit.Unit.Name));
115-
if (listUnit == null)
116-
{
117-
listUnit = new()
118-
{
119-
Name = spawnUnit.Unit.Name
120-
};
121-
context.Units.Add(listUnit);
122-
await context.SaveChangesAsync();
123-
units.Add(listUnit);
124-
}
125-
126118
spawnUnits.Add(new()
127119
{
128120
Count = spawnUnit.Count,
129121
Poss = spawnUnit.Poss,
130-
UnitId = listUnit.UnitId,
122+
UnitId = importService.GetUnitId(spawnUnit.Unit.Name),
131123
SpawnId = spawn.SpawnId
132124
});
133125
}
134126
return spawnUnits;
135127
}
136128

137-
private async Task<ICollection<PlayerUpgrade>> GetMapedPlayerUpgrades(ReplayPlayer player, HashSet<Upgrade> upgrades)
129+
private ICollection<PlayerUpgrade> GetMapedPlayerUpgrades(ReplayPlayer player)
138130
{
139131
List<PlayerUpgrade> playerUpgrades = new();
140132
foreach (var playerUpgrade in player.Upgrades)
141133
{
142-
var listUpgrade = upgrades.FirstOrDefault(f => f.Name.Equals(playerUpgrade.Upgrade.Name));
143-
if (listUpgrade == null)
144-
{
145-
listUpgrade = new()
146-
{
147-
Name = playerUpgrade.Upgrade.Name
148-
};
149-
context.Upgrades.Add(listUpgrade);
150-
await context.SaveChangesAsync();
151-
upgrades.Add(listUpgrade);
152-
}
153-
154134
playerUpgrades.Add(new()
155135
{
156136
Gameloop = playerUpgrade.Gameloop,
157-
UpgradeId = listUpgrade.UpgradeId,
137+
UpgradeId = importService.GetUpgradeId(playerUpgrade.Upgrade.Name),
158138
ReplayPlayerId = player.ReplayPlayerId
159139
});
160140
}

src/dsstats.maui/dsstats.localization/DsstatsLoc.de.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,4 +403,7 @@
403403
<data name="Please check if the settings are as expected." xml:space="preserve">
404404
<value>Bitte überprüfen Sie, ob die Einstellungen wie erwartet sind.</value>
405405
</data>
406+
<data name="NoBatchImport" xml:space="preserve">
407+
<value>Konservativer Wiederholungsimport (etwas langsamer, aber robuster)</value>
408+
</data>
406409
</root>

src/dsstats.maui/dsstats.localization/DsstatsLoc.en.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,4 +403,7 @@
403403
<data name="Please check if the settings are as expected." xml:space="preserve">
404404
<value>Please check if the settings are as expected.</value>
405405
</data>
406+
<data name="NoBatchImport" xml:space="preserve">
407+
<value>Conservative Replay Import (slightly slower, but more robust)</value>
408+
</data>
406409
</root>

src/dsstats.maui/dsstats.localization/DsstatsLoc.es.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,4 +403,7 @@
403403
<data name="Please check if the settings are as expected." xml:space="preserve">
404404
<value>Por favor, compruebe si la configuración es la esperada.</value>
405405
</data>
406+
<data name="NoBatchImport" xml:space="preserve">
407+
<value>Importación de repeticiones conservadora (ligeramente más lenta, pero más robusta)</value>
408+
</data>
406409
</root>

src/dsstats.maui/dsstats.localization/DsstatsLoc.fr.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,4 +403,7 @@
403403
<data name="Please check if the settings are as expected." xml:space="preserve">
404404
<value>Veuillez vérifier si les paramètres sont conformes aux attentes.</value>
405405
</data>
406+
<data name="NoBatchImport" xml:space="preserve">
407+
<value>Importation de rediffusions conservatrice (légèrement plus lente, mais plus robuste)</value>
408+
</data>
406409
</root>

src/dsstats.maui/dsstats.localization/DsstatsLoc.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,4 +403,7 @@
403403
<data name="Please check if the settings are as expected." xml:space="preserve">
404404
<value>Please check if the settings are as expected.</value>
405405
</data>
406+
<data name="NoBatchImport" xml:space="preserve">
407+
<value>Conservative Replay Import (slightly slower, but more robust)</value>
408+
</data>
406409
</root>

src/dsstats.maui/dsstats.localization/DsstatsLoc.ru.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,4 +403,7 @@
403403
<data name="Please check if the settings are as expected." xml:space="preserve">
404404
<value>Пожалуйста, проверьте, соответствуют ли настройки ожидаемым.</value>
405405
</data>
406+
<data name="NoBatchImport" xml:space="preserve">
407+
<value>Консервативный импорт повторов (немного медленнее, но более надежный)</value>
408+
</data>
406409
</root>

0 commit comments

Comments
 (0)