mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-30 19:54:16 -04:00
Add value comparers for json columns and add user externalids on db
This commit is contained in:
parent
7df1a295f3
commit
35a69edfa2
@ -167,6 +167,14 @@ namespace Kyoo.Postgresql
|
|||||||
optionsBuilder.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
|
optionsBuilder.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static ValueComparer<Dictionary<string, T>> _GetComparer<T>()
|
||||||
|
{
|
||||||
|
return new(
|
||||||
|
(c1, c2) => c1!.SequenceEqual(c2!),
|
||||||
|
c => c.Aggregate(0, (a, v) => HashCode.Combine(a, v.GetHashCode()))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Build the metadata model for the given type.
|
/// Build the metadata model for the given type.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -193,6 +201,10 @@ namespace Kyoo.Postgresql
|
|||||||
)!
|
)!
|
||||||
)
|
)
|
||||||
.HasColumnType("json");
|
.HasColumnType("json");
|
||||||
|
modelBuilder
|
||||||
|
.Entity<T>()
|
||||||
|
.Property(x => x.ExternalId)
|
||||||
|
.Metadata.SetValueComparer(_GetComparer<MetadataId>());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void _HasImages<T>(ModelBuilder modelBuilder)
|
private static void _HasImages<T>(ModelBuilder modelBuilder)
|
||||||
@ -318,19 +330,6 @@ namespace Kyoo.Postgresql
|
|||||||
_HasAddedDate<User>(modelBuilder);
|
_HasAddedDate<User>(modelBuilder);
|
||||||
_HasAddedDate<Issue>(modelBuilder);
|
_HasAddedDate<Issue>(modelBuilder);
|
||||||
|
|
||||||
modelBuilder
|
|
||||||
.Entity<User>()
|
|
||||||
.Property(x => x.Settings)
|
|
||||||
.HasConversion(
|
|
||||||
v => JsonSerializer.Serialize(v, (JsonSerializerOptions?)null),
|
|
||||||
v =>
|
|
||||||
JsonSerializer.Deserialize<Dictionary<string, string>>(
|
|
||||||
v,
|
|
||||||
(JsonSerializerOptions?)null
|
|
||||||
)!
|
|
||||||
)
|
|
||||||
.HasColumnType("json");
|
|
||||||
|
|
||||||
modelBuilder
|
modelBuilder
|
||||||
.Entity<MovieWatchStatus>()
|
.Entity<MovieWatchStatus>()
|
||||||
.HasKey(x => new { User = x.UserId, Movie = x.MovieId });
|
.HasKey(x => new { User = x.UserId, Movie = x.MovieId });
|
||||||
@ -417,6 +416,40 @@ namespace Kyoo.Postgresql
|
|||||||
// {
|
// {
|
||||||
// x.ToJson();
|
// x.ToJson();
|
||||||
// });
|
// });
|
||||||
|
modelBuilder
|
||||||
|
.Entity<User>()
|
||||||
|
.Property(x => x.Settings)
|
||||||
|
.HasConversion(
|
||||||
|
v => JsonSerializer.Serialize(v, (JsonSerializerOptions?)null),
|
||||||
|
v =>
|
||||||
|
JsonSerializer.Deserialize<Dictionary<string, string>>(
|
||||||
|
v,
|
||||||
|
(JsonSerializerOptions?)null
|
||||||
|
)!
|
||||||
|
)
|
||||||
|
.HasColumnType("json");
|
||||||
|
modelBuilder
|
||||||
|
.Entity<User>()
|
||||||
|
.Property(x => x.Settings)
|
||||||
|
.Metadata.SetValueComparer(_GetComparer<string>());
|
||||||
|
|
||||||
|
modelBuilder
|
||||||
|
.Entity<User>()
|
||||||
|
.Property(x => x.ExternalId)
|
||||||
|
.HasConversion(
|
||||||
|
v => JsonSerializer.Serialize(v, (JsonSerializerOptions?)null),
|
||||||
|
v =>
|
||||||
|
JsonSerializer.Deserialize<Dictionary<string, ExternalToken>>(
|
||||||
|
v,
|
||||||
|
(JsonSerializerOptions?)null
|
||||||
|
)!
|
||||||
|
)
|
||||||
|
.HasColumnType("json");
|
||||||
|
modelBuilder
|
||||||
|
.Entity<User>()
|
||||||
|
.Property(x => x.ExternalId)
|
||||||
|
.Metadata.SetValueComparer(_GetComparer<ExternalToken>());
|
||||||
|
|
||||||
modelBuilder
|
modelBuilder
|
||||||
.Entity<Issue>()
|
.Entity<Issue>()
|
||||||
.Property(x => x.Extra)
|
.Property(x => x.Extra)
|
||||||
@ -429,6 +462,10 @@ namespace Kyoo.Postgresql
|
|||||||
)!
|
)!
|
||||||
)
|
)
|
||||||
.HasColumnType("json");
|
.HasColumnType("json");
|
||||||
|
modelBuilder
|
||||||
|
.Entity<Issue>()
|
||||||
|
.Property(x => x.Extra)
|
||||||
|
.Metadata.SetValueComparer(_GetComparer<object>());
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
1314
back/src/Kyoo.Postgresql/Migrations/20240229202049_AddUserExternalId.Designer.cs
generated
Normal file
1314
back/src/Kyoo.Postgresql/Migrations/20240229202049_AddUserExternalId.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,28 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Kyoo.Postgresql.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class AddUserExternalId : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "external_id",
|
||||||
|
table: "users",
|
||||||
|
type: "json",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: "{}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(name: "external_id", table: "users");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -614,6 +614,11 @@ namespace Kyoo.Postgresql.Migrations
|
|||||||
.HasColumnType("text")
|
.HasColumnType("text")
|
||||||
.HasColumnName("email");
|
.HasColumnName("email");
|
||||||
|
|
||||||
|
b.Property<string>("ExternalId")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("json")
|
||||||
|
.HasColumnName("external_id");
|
||||||
|
|
||||||
b.Property<string>("Password")
|
b.Property<string>("Password")
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
.HasColumnType("text")
|
.HasColumnType("text")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user