Cleaning up the serializer

This commit is contained in:
Zoe Roux 2020-02-11 23:51:38 +01:00
parent 84f8d545a6
commit 2f53f2bc67
6 changed files with 14 additions and 7 deletions

@ -1 +1 @@
Subproject commit 1831074c9d21ccc238409b6c21520780ca666bea Subproject commit 3d9e34fe7bd7dfe969053412e27776c565bdfcd8

View File

@ -67,7 +67,6 @@ namespace Kyoo.Controllers
public IEnumerable<Show> GetShows(string searchQuery) public IEnumerable<Show> GetShows(string searchQuery)
{ {
// TODO use case insensitive queries.
return (from show in _database.Shows from l in _database.CollectionLinks.DefaultIfEmpty() return (from show in _database.Shows from l in _database.CollectionLinks.DefaultIfEmpty()
where l.CollectionID == null select show).AsEnumerable().Union( where l.CollectionID == null select show).AsEnumerable().Union(
from collection in _database.Collections select collection.AsShow()) from collection in _database.Collections select collection.AsShow())

View File

@ -53,6 +53,12 @@ namespace Kyoo
.Property(t => t.IsForced) .Property(t => t.IsForced)
.ValueGeneratedNever(); .ValueGeneratedNever();
modelBuilder.Entity<Show>().Property(x => x.Title).HasColumnType("TEXT COLLATE NOCASE");
modelBuilder.Entity<Collection>().Property(x => x.Name).HasColumnType("TEXT COLLATE NOCASE");
modelBuilder.Entity<Episode>().Property(x => x.Title).HasColumnType("TEXT COLLATE NOCASE");
modelBuilder.Entity<People>().Property(x => x.Name).HasColumnType("TEXT COLLATE NOCASE");
modelBuilder.Entity<Genre>().Property(x => x.Name).HasColumnType("TEXT COLLATE NOCASE");
modelBuilder.Entity<Studio>().Property(x => x.Name).HasColumnType("TEXT COLLATE NOCASE");
modelBuilder.Entity<GenreLink>() modelBuilder.Entity<GenreLink>()
.HasKey(x => new {x.ShowID, x.GenreID}); .HasKey(x => new {x.ShowID, x.GenreID});

View File

@ -13,7 +13,7 @@ using Newtonsoft.Json.Serialization;
namespace Kyoo.Controllers namespace Kyoo.Controllers
{ {
public class JsonPropertySelector : DefaultContractResolver public class JsonPropertySelector : CamelCasePropertyNamesContractResolver
{ {
private readonly Dictionary<Type, HashSet<string>> _ignored; private readonly Dictionary<Type, HashSet<string>> _ignored;
private readonly Dictionary<Type, HashSet<string>> _forceSerialize; private readonly Dictionary<Type, HashSet<string>> _forceSerialize;
@ -77,8 +77,8 @@ namespace Kyoo.Controllers
{ {
ContractResolver = new JsonPropertySelector(null, new Dictionary<Type, HashSet<string>>() ContractResolver = new JsonPropertySelector(null, new Dictionary<Type, HashSet<string>>()
{ {
{typeof(Show), new HashSet<string> {"Genres", "Studio", "People", "Seasons"}}, {typeof(Show), new HashSet<string> {"genres", "studio", "people", "seasons"}},
{typeof(Episode), new HashSet<string> {"Tracks"}} {typeof(Episode), new HashSet<string> {"tracks"}}
}) })
}, },
context.HttpContext.RequestServices.GetRequiredService<ArrayPool<char>>(), context.HttpContext.RequestServices.GetRequiredService<ArrayPool<char>>(),

View File

@ -6,6 +6,7 @@ using Kyoo.Controllers;
namespace Kyoo.Api namespace Kyoo.Api
{ {
[Route("api/shows")] [Route("api/shows")]
[Route("api/show")]
[ApiController] [ApiController]
public class ShowsController : ControllerBase public class ShowsController : ControllerBase
{ {

View File

@ -19,6 +19,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="IdentityServer4" Version="3.0.2" /> <PackageReference Include="IdentityServer4" Version="3.0.2" />
<PackageReference Include="IdentityServer4.AspNetIdentity" Version="3.0.2" /> <PackageReference Include="IdentityServer4.AspNetIdentity" Version="3.0.2" />
<PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.7" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="3.0.2" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="3.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.0.0" /> <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.0.0" />
<PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="3.0.0" /> <PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="3.0.0" />