mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-12-17 22:43:07 +03:00
Add tests for SqliteItemRepository.(De)SerializeImages
This commit is contained in:
@@ -502,7 +502,7 @@ namespace Emby.Server.Implementations.Data
|
||||
using (var saveImagesStatement = base.PrepareStatement(db, "Update TypedBaseItems set Images=@Images where guid=@Id"))
|
||||
{
|
||||
saveImagesStatement.TryBind("@Id", item.Id.ToByteArray());
|
||||
saveImagesStatement.TryBind("@Images", SerializeImages(item));
|
||||
saveImagesStatement.TryBind("@Images", SerializeImages(item.ImageInfos));
|
||||
|
||||
saveImagesStatement.MoveNext();
|
||||
}
|
||||
@@ -898,7 +898,7 @@ namespace Emby.Server.Implementations.Data
|
||||
saveItemStatement.TryBind("@Tagline", item.Tagline);
|
||||
|
||||
saveItemStatement.TryBind("@ProviderIds", SerializeProviderIds(item));
|
||||
saveItemStatement.TryBind("@Images", SerializeImages(item));
|
||||
saveItemStatement.TryBind("@Images", SerializeImages(item.ImageInfos));
|
||||
|
||||
if (item.ProductionLocations.Length > 0)
|
||||
{
|
||||
@@ -1020,10 +1020,8 @@ namespace Emby.Server.Implementations.Data
|
||||
}
|
||||
}
|
||||
|
||||
private string SerializeImages(BaseItem item)
|
||||
internal string SerializeImages(ItemImageInfo[] images)
|
||||
{
|
||||
var images = item.ImageInfos;
|
||||
|
||||
if (images.Length == 0)
|
||||
{
|
||||
return null;
|
||||
@@ -1045,16 +1043,11 @@ namespace Emby.Server.Implementations.Data
|
||||
return str.ToString();
|
||||
}
|
||||
|
||||
private void DeserializeImages(string value, BaseItem item)
|
||||
internal ItemImageInfo[] DeserializeImages(string value)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(value))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (item.ImageInfos.Length > 0)
|
||||
{
|
||||
return;
|
||||
return Array.Empty<ItemImageInfo>();
|
||||
}
|
||||
|
||||
var parts = value.Split('|' , StringSplitOptions.RemoveEmptyEntries);
|
||||
@@ -1069,15 +1062,14 @@ namespace Emby.Server.Implementations.Data
|
||||
}
|
||||
}
|
||||
|
||||
item.ImageInfos = list.ToArray();
|
||||
return list.ToArray();
|
||||
}
|
||||
|
||||
public void AppendItemImageInfo(StringBuilder bldr, ItemImageInfo image)
|
||||
private void AppendItemImageInfo(StringBuilder bldr, ItemImageInfo image)
|
||||
{
|
||||
const char Delimiter = '*';
|
||||
|
||||
var path = image.Path ?? string.Empty;
|
||||
var hash = image.BlurHash ?? string.Empty;
|
||||
|
||||
bldr.Append(GetPathToSave(path))
|
||||
.Append(Delimiter)
|
||||
@@ -1087,11 +1079,16 @@ namespace Emby.Server.Implementations.Data
|
||||
.Append(Delimiter)
|
||||
.Append(image.Width)
|
||||
.Append(Delimiter)
|
||||
.Append(image.Height)
|
||||
.Append(Delimiter)
|
||||
// Replace delimiters with other characters.
|
||||
// This can be removed when we migrate to a proper DB.
|
||||
.Append(hash.Replace('*', '/').Replace('|', '\\'));
|
||||
.Append(image.Height);
|
||||
|
||||
var hash = image.BlurHash;
|
||||
if (!string.IsNullOrEmpty(hash))
|
||||
{
|
||||
bldr.Append(Delimiter)
|
||||
// Replace delimiters with other characters.
|
||||
// This can be removed when we migrate to a proper DB.
|
||||
.Append(hash.Replace('*', '/').Replace('|', '\\'));
|
||||
}
|
||||
}
|
||||
|
||||
public ItemImageInfo ItemImageInfoFromValueString(string value)
|
||||
@@ -1797,11 +1794,11 @@ namespace Emby.Server.Implementations.Data
|
||||
|
||||
index++;
|
||||
|
||||
if (query.DtoOptions.EnableImages)
|
||||
if (query.DtoOptions.EnableImages && item.ImageInfos.Length == 0)
|
||||
{
|
||||
if (!reader.IsDBNull(index))
|
||||
{
|
||||
DeserializeImages(reader.GetString(index), item);
|
||||
item.ImageInfos = DeserializeImages(reader.GetString(index));
|
||||
}
|
||||
|
||||
index++;
|
||||
|
||||
Reference in New Issue
Block a user