fix(assets): safeguard against null InstrumentCategory during ETF/Fund scans
This commit is contained in:
@@ -221,8 +221,10 @@ public class AssetsDbService : IAssetsDbService
|
||||
HasSubtypeChanges(existingEntity, dto))
|
||||
{
|
||||
existingEntity.Name = dto.Name;
|
||||
existingEntity.Type = dto.Type;
|
||||
existingEntity.InstrumentCategory = dto.InstrumentCategory;
|
||||
existingEntity.Type = dto.Type ?? existingEntity.Type ?? "stock";
|
||||
existingEntity.InstrumentCategory = !string.IsNullOrWhiteSpace(dto.InstrumentCategory)
|
||||
? dto.InstrumentCategory
|
||||
: (existingEntity.InstrumentCategory ?? dto.Type ?? "stock");
|
||||
existingEntity.HasCfd = dto.HasCfd;
|
||||
existingEntity.LastUpdatedAt = now;
|
||||
existingEntity.Tags = mappedTags;
|
||||
@@ -242,6 +244,13 @@ public class AssetsDbService : IAssetsDbService
|
||||
|
||||
private static AssetEntity MapDtoToEntity(TradeRepublicAsset dto)
|
||||
{
|
||||
static string ResolveCategory(string? category, string? fallbackType, string defaultCategory)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(category)) return category;
|
||||
if (!string.IsNullOrWhiteSpace(fallbackType)) return fallbackType;
|
||||
return defaultCategory;
|
||||
}
|
||||
|
||||
return dto switch
|
||||
{
|
||||
TradeRepublicStock stock => new StockEntity
|
||||
@@ -249,7 +258,7 @@ public class AssetsDbService : IAssetsDbService
|
||||
Isin = stock.Isin,
|
||||
Name = stock.Name,
|
||||
Type = stock.Type,
|
||||
InstrumentCategory = stock.InstrumentCategory,
|
||||
InstrumentCategory = ResolveCategory(stock.InstrumentCategory, stock.Type, "stock"),
|
||||
HasCfd = stock.HasCfd,
|
||||
DerivativeProductCategories = stock.DerivativeProductCategories?.ToList() ?? new List<string>()
|
||||
},
|
||||
@@ -258,7 +267,7 @@ public class AssetsDbService : IAssetsDbService
|
||||
Isin = etf.Isin,
|
||||
Name = etf.Name,
|
||||
Type = etf.Type,
|
||||
InstrumentCategory = etf.InstrumentCategory,
|
||||
InstrumentCategory = ResolveCategory(etf.InstrumentCategory, etf.Type, "fund"),
|
||||
HasCfd = etf.HasCfd,
|
||||
DerivativeProductCategories = etf.DerivativeProductCategories?.ToList() ?? new List<string>()
|
||||
},
|
||||
@@ -267,7 +276,7 @@ public class AssetsDbService : IAssetsDbService
|
||||
Isin = syn.Isin,
|
||||
Name = syn.Name,
|
||||
Type = syn.Type,
|
||||
InstrumentCategory = syn.InstrumentCategory,
|
||||
InstrumentCategory = ResolveCategory(syn.InstrumentCategory, syn.Type, "synthetic"),
|
||||
HasCfd = syn.HasCfd,
|
||||
DerivativeProductCategories = syn.DerivativeProductCategories?.ToList() ?? new List<string>()
|
||||
},
|
||||
@@ -276,7 +285,7 @@ public class AssetsDbService : IAssetsDbService
|
||||
Isin = dto.Isin,
|
||||
Name = dto.Name,
|
||||
Type = dto.Type,
|
||||
InstrumentCategory = dto.InstrumentCategory,
|
||||
InstrumentCategory = ResolveCategory(dto.InstrumentCategory, dto.Type, "stock"),
|
||||
HasCfd = dto.HasCfd
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user