mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-24 02:02:36 -04:00
Migrate images
This commit is contained in:
parent
f15b92aae1
commit
c576babde8
@ -88,6 +88,7 @@ public class Image
|
||||
Blurhash = blurhash ?? "000000";
|
||||
}
|
||||
|
||||
//
|
||||
public class ImageConvertor : JsonConverter<Image>
|
||||
{
|
||||
/// <inheritdoc />
|
||||
@ -100,7 +101,13 @@ public class Image
|
||||
if (reader.TokenType == JsonTokenType.String && reader.GetString() is string source)
|
||||
return new Image(source);
|
||||
using JsonDocument document = JsonDocument.ParseValue(ref reader);
|
||||
return document.RootElement.Deserialize<Image>();
|
||||
string? src = document.RootElement.GetProperty("Source").GetString();
|
||||
string? blurhash = document.RootElement.GetProperty("Blurhash").GetString();
|
||||
Guid? id = document.RootElement.GetProperty("Id").GetGuid();
|
||||
return new Image(src ?? string.Empty, blurhash)
|
||||
{
|
||||
Id = id ?? Guid.Empty
|
||||
};
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
@ -23,7 +23,6 @@ using System.Linq.Expressions;
|
||||
using System.Text.Json;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Kyoo.Abstractions.Controllers;
|
||||
using Kyoo.Abstractions.Models;
|
||||
using Kyoo.Abstractions.Models.Exceptions;
|
||||
using Kyoo.Authentication;
|
||||
@ -33,13 +32,6 @@ using Microsoft.EntityFrameworkCore.ChangeTracking;
|
||||
|
||||
namespace Kyoo.Postgresql;
|
||||
|
||||
/// <summary>
|
||||
/// The database handle used for all local repositories.
|
||||
/// This is an abstract class. It is meant to be implemented by plugins. This allow the core to be database agnostic.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// It should not be used directly, to access the database use a <see cref="ILibraryManager"/> or repositories.
|
||||
/// </remarks>
|
||||
public abstract class DatabaseContext : DbContext
|
||||
{
|
||||
private readonly IHttpContextAccessor _accessor;
|
||||
@ -53,39 +45,18 @@ public abstract class DatabaseContext : DbContext
|
||||
|
||||
public Guid? CurrentUserId => _accessor.HttpContext?.User.GetId();
|
||||
|
||||
/// <summary>
|
||||
/// All collections of Kyoo. See <see cref="Collection"/>.
|
||||
/// </summary>
|
||||
public DbSet<Collection> Collections { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// All movies of Kyoo. See <see cref="Movie"/>.
|
||||
/// </summary>
|
||||
public DbSet<Movie> Movies { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// All shows of Kyoo. See <see cref="Show"/>.
|
||||
/// </summary>
|
||||
public DbSet<Show> Shows { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// All seasons of Kyoo. See <see cref="Season"/>.
|
||||
/// </summary>
|
||||
public DbSet<Season> Seasons { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// All episodes of Kyoo. See <see cref="Episode"/>.
|
||||
/// </summary>
|
||||
public DbSet<Episode> Episodes { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// All studios of Kyoo. See <see cref="Studio"/>.
|
||||
/// </summary>
|
||||
public DbSet<Studio> Studios { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The list of registered users.
|
||||
/// </summary>
|
||||
public DbSet<User> Users { get; set; }
|
||||
|
||||
public DbSet<MovieWatchStatus> MovieWatchStatus { get; set; }
|
||||
@ -129,28 +100,13 @@ public abstract class DatabaseContext : DbContext
|
||||
_accessor = accessor;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the name of the link table of the two given types.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The owner type of the relation</typeparam>
|
||||
/// <typeparam name="T2">The child type of the relation</typeparam>
|
||||
/// <returns>The name of the table containing the links.</returns>
|
||||
protected abstract string LinkName<T, T2>()
|
||||
where T : IResource
|
||||
where T2 : IResource;
|
||||
|
||||
/// <summary>
|
||||
/// Get the name of a link's foreign key.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type that will be accessible via the navigation</typeparam>
|
||||
/// <returns>The name of the foreign key for the given resource.</returns>
|
||||
protected abstract string LinkNameFk<T>()
|
||||
where T : IResource;
|
||||
|
||||
/// <summary>
|
||||
/// Set basic configurations (like preventing query tracking)
|
||||
/// </summary>
|
||||
/// <param name="optionsBuilder">An option builder to fill.</param>
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
{
|
||||
base.OnConfiguring(optionsBuilder);
|
||||
@ -227,15 +183,6 @@ public abstract class DatabaseContext : DbContext
|
||||
.ValueGeneratedOnAdd();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create a many to many relationship between the two entities.
|
||||
/// The resulting relationship will have an available <see cref="AddLinks{T1,T2}"/> method.
|
||||
/// </summary>
|
||||
/// <param name="modelBuilder">The database model builder</param>
|
||||
/// <param name="firstNavigation">The first navigation expression from T to T2</param>
|
||||
/// <param name="secondNavigation">The second navigation expression from T2 to T</param>
|
||||
/// <typeparam name="T">The owning type of the relationship</typeparam>
|
||||
/// <typeparam name="T2">The owned type of the relationship</typeparam>
|
||||
private void _HasManyToMany<T, T2>(
|
||||
ModelBuilder modelBuilder,
|
||||
Expression<Func<T, IEnumerable<T2>?>> firstNavigation,
|
||||
@ -263,10 +210,6 @@ public abstract class DatabaseContext : DbContext
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set database parameters to support every types of Kyoo.
|
||||
/// </summary>
|
||||
/// <param name="modelBuilder">The database's model builder.</param>
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
base.OnModelCreating(modelBuilder);
|
||||
@ -412,28 +355,6 @@ public abstract class DatabaseContext : DbContext
|
||||
_HasJson<Issue, object>(modelBuilder, x => x.Extra);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Return a new or an in cache temporary object wih the same ID as the one given
|
||||
/// </summary>
|
||||
/// <param name="model">If a resource with the same ID is found in the database, it will be used.
|
||||
/// <paramref name="model"/> will be used otherwise</param>
|
||||
/// <typeparam name="T">The type of the resource</typeparam>
|
||||
/// <returns>A resource that is now tracked by this context.</returns>
|
||||
public T GetTemporaryObject<T>(T model)
|
||||
where T : class, IResource
|
||||
{
|
||||
T? tmp = Set<T>().Local.FirstOrDefault(x => x.Id == model.Id);
|
||||
if (tmp != null)
|
||||
return tmp;
|
||||
Entry(model).State = EntityState.Unchanged;
|
||||
return model;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Save changes that are applied to this context.
|
||||
/// </summary>
|
||||
/// <exception cref="DuplicatedItemException">A duplicated item has been found.</exception>
|
||||
/// <returns>The number of state entries written to the database.</returns>
|
||||
public override int SaveChanges()
|
||||
{
|
||||
try
|
||||
@ -449,13 +370,6 @@ public abstract class DatabaseContext : DbContext
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Save changes that are applied to this context.
|
||||
/// </summary>
|
||||
/// <param name="acceptAllChangesOnSuccess">Indicates whether AcceptAllChanges() is called after the changes
|
||||
/// have been sent successfully to the database.</param>
|
||||
/// <exception cref="DuplicatedItemException">A duplicated item has been found.</exception>
|
||||
/// <returns>The number of state entries written to the database.</returns>
|
||||
public override int SaveChanges(bool acceptAllChangesOnSuccess)
|
||||
{
|
||||
try
|
||||
@ -471,14 +385,6 @@ public abstract class DatabaseContext : DbContext
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Save changes that are applied to this context.
|
||||
/// </summary>
|
||||
/// <param name="acceptAllChangesOnSuccess">Indicates whether AcceptAllChanges() is called after the changes
|
||||
/// have been sent successfully to the database.</param>
|
||||
/// <param name="cancellationToken">A <see cref="CancellationToken"/> to observe while waiting for the task to complete</param>
|
||||
/// <exception cref="DuplicatedItemException">A duplicated item has been found.</exception>
|
||||
/// <returns>The number of state entries written to the database.</returns>
|
||||
public override async Task<int> SaveChangesAsync(
|
||||
bool acceptAllChangesOnSuccess,
|
||||
CancellationToken cancellationToken = default
|
||||
@ -497,12 +403,6 @@ public abstract class DatabaseContext : DbContext
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Save changes that are applied to this context.
|
||||
/// </summary>
|
||||
/// <param name="cancellationToken">A <see cref="CancellationToken"/> to observe while waiting for the task to complete</param>
|
||||
/// <exception cref="DuplicatedItemException">A duplicated item has been found.</exception>
|
||||
/// <returns>The number of state entries written to the database.</returns>
|
||||
public override async Task<int> SaveChangesAsync(CancellationToken cancellationToken = default)
|
||||
{
|
||||
try
|
||||
@ -518,14 +418,6 @@ public abstract class DatabaseContext : DbContext
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Save changes that are applied to this context.
|
||||
/// </summary>
|
||||
/// <param name="getExisting">How to retrieve the conflicting item.</param>
|
||||
/// <param name="cancellationToken">A <see cref="CancellationToken"/> to observe while waiting for the task to complete</param>
|
||||
/// <exception cref="DuplicatedItemException">A duplicated item has been found.</exception>
|
||||
/// <typeparam name="T">The type of the potential duplicate (this is unused).</typeparam>
|
||||
/// <returns>The number of state entries written to the database.</returns>
|
||||
public async Task<int> SaveChangesAsync<T>(
|
||||
Func<Task<T>> getExisting,
|
||||
CancellationToken cancellationToken = default
|
||||
@ -548,12 +440,6 @@ public abstract class DatabaseContext : DbContext
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Save changes if no duplicates are found. If one is found, no change are saved but the current changes are no discarded.
|
||||
/// The current context will still hold those invalid changes.
|
||||
/// </summary>
|
||||
/// <param name="cancellationToken">A <see cref="CancellationToken"/> to observe while waiting for the task to complete</param>
|
||||
/// <returns>The number of state entries written to the database or -1 if a duplicate exist.</returns>
|
||||
public async Task<int> SaveIfNoDuplicates(CancellationToken cancellationToken = default)
|
||||
{
|
||||
try
|
||||
@ -566,30 +452,14 @@ public abstract class DatabaseContext : DbContext
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Return the first resource with the given slug that is currently tracked by this context.
|
||||
/// This allow one to limit redundant calls to <see cref="IRepository{T}.CreateIfNotExists"/> during the
|
||||
/// same transaction and prevent fails from EF when two same entities are being tracked.
|
||||
/// </summary>
|
||||
/// <param name="slug">The slug of the resource to check</param>
|
||||
/// <typeparam name="T">The type of entity to check</typeparam>
|
||||
/// <returns>The local entity representing the resource with the given slug if it exists or null.</returns>
|
||||
public T? LocalEntity<T>(string slug)
|
||||
where T : class, IResource
|
||||
{
|
||||
return ChangeTracker.Entries<T>().FirstOrDefault(x => x.Entity.Slug == slug)?.Entity;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check if the exception is a duplicated exception.
|
||||
/// </summary>
|
||||
/// <param name="ex">The exception to check</param>
|
||||
/// <returns>True if the exception is a duplicate exception. False otherwise</returns>
|
||||
protected abstract bool IsDuplicateException(Exception ex);
|
||||
|
||||
/// <summary>
|
||||
/// Delete every changes that are on this context.
|
||||
/// </summary>
|
||||
public void DiscardChanges()
|
||||
{
|
||||
foreach (
|
||||
|
1375
back/src/Kyoo.Postgresql/Migrations/20240420124608_ReworkImages.Designer.cs
generated
Normal file
1375
back/src/Kyoo.Postgresql/Migrations/20240420124608_ReworkImages.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,460 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace Kyoo.Postgresql.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class ReworkImages : Migration
|
||||
{
|
||||
private void MigrateImage(MigrationBuilder migrationBuilder, string table, string type)
|
||||
{
|
||||
migrationBuilder.Sql($"""
|
||||
update {table} as r set {type} = json_build_object(
|
||||
'Id', gen_random_uuid(),
|
||||
'Source', r.{type}_source,
|
||||
'Blurhash', r.{type}_blurhash
|
||||
)
|
||||
where r.{type}_source is not null
|
||||
""");
|
||||
}
|
||||
|
||||
private void UnMigrateImage(MigrationBuilder migrationBuilder, string table, string type)
|
||||
{
|
||||
migrationBuilder.Sql($"""
|
||||
update {table} as r
|
||||
set {type}_source = r.{type}->>'Source',
|
||||
{type}_blurhash = r.{type}->>'Blurhash'
|
||||
""");
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "logo",
|
||||
table: "shows",
|
||||
type: "jsonb",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "poster",
|
||||
table: "shows",
|
||||
type: "jsonb",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "thumbnail",
|
||||
table: "shows",
|
||||
type: "jsonb",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "logo",
|
||||
table: "seasons",
|
||||
type: "jsonb",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "poster",
|
||||
table: "seasons",
|
||||
type: "jsonb",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "thumbnail",
|
||||
table: "seasons",
|
||||
type: "jsonb",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "logo",
|
||||
table: "movies",
|
||||
type: "jsonb",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "poster",
|
||||
table: "movies",
|
||||
type: "jsonb",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "thumbnail",
|
||||
table: "movies",
|
||||
type: "jsonb",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "logo",
|
||||
table: "episodes",
|
||||
type: "jsonb",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "poster",
|
||||
table: "episodes",
|
||||
type: "jsonb",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "thumbnail",
|
||||
table: "episodes",
|
||||
type: "jsonb",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "logo",
|
||||
table: "collections",
|
||||
type: "jsonb",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "poster",
|
||||
table: "collections",
|
||||
type: "jsonb",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "thumbnail",
|
||||
table: "collections",
|
||||
type: "jsonb",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
MigrateImage(migrationBuilder, "shows", "logo");
|
||||
MigrateImage(migrationBuilder, "shows", "poster");
|
||||
MigrateImage(migrationBuilder, "shows", "thumbnail");
|
||||
|
||||
MigrateImage(migrationBuilder, "seasons", "logo");
|
||||
MigrateImage(migrationBuilder, "seasons", "poster");
|
||||
MigrateImage(migrationBuilder, "seasons", "thumbnail");
|
||||
|
||||
MigrateImage(migrationBuilder, "movies", "logo");
|
||||
MigrateImage(migrationBuilder, "movies", "poster");
|
||||
MigrateImage(migrationBuilder, "movies", "thumbnail");
|
||||
|
||||
MigrateImage(migrationBuilder, "episodes", "logo");
|
||||
MigrateImage(migrationBuilder, "episodes", "poster");
|
||||
MigrateImage(migrationBuilder, "episodes", "thumbnail");
|
||||
|
||||
MigrateImage(migrationBuilder, "collections", "logo");
|
||||
MigrateImage(migrationBuilder, "collections", "poster");
|
||||
MigrateImage(migrationBuilder, "collections", "thumbnail");
|
||||
|
||||
migrationBuilder.DropColumn(name: "logo_blurhash", table: "shows");
|
||||
migrationBuilder.DropColumn(name: "logo_source", table: "shows");
|
||||
migrationBuilder.DropColumn(name: "poster_blurhash", table: "shows");
|
||||
migrationBuilder.DropColumn(name: "poster_source", table: "shows");
|
||||
migrationBuilder.DropColumn(name: "thumbnail_blurhash", table: "shows");
|
||||
migrationBuilder.DropColumn(name: "thumbnail_source", table: "shows");
|
||||
|
||||
migrationBuilder.DropColumn(name: "logo_blurhash", table: "seasons");
|
||||
migrationBuilder.DropColumn(name: "logo_source", table: "seasons");
|
||||
migrationBuilder.DropColumn(name: "poster_blurhash", table: "seasons");
|
||||
migrationBuilder.DropColumn(name: "poster_source", table: "seasons");
|
||||
migrationBuilder.DropColumn(name: "thumbnail_blurhash", table: "seasons");
|
||||
migrationBuilder.DropColumn(name: "thumbnail_source", table: "seasons");
|
||||
|
||||
migrationBuilder.DropColumn(name: "logo_blurhash", table: "movies");
|
||||
migrationBuilder.DropColumn(name: "logo_source", table: "movies");
|
||||
migrationBuilder.DropColumn(name: "poster_blurhash", table: "movies");
|
||||
migrationBuilder.DropColumn(name: "poster_source", table: "movies");
|
||||
migrationBuilder.DropColumn(name: "thumbnail_blurhash", table: "movies");
|
||||
migrationBuilder.DropColumn(name: "thumbnail_source", table: "movies");
|
||||
|
||||
migrationBuilder.DropColumn(name: "logo_blurhash", table: "episodes");
|
||||
migrationBuilder.DropColumn(name: "logo_source", table: "episodes");
|
||||
migrationBuilder.DropColumn(name: "poster_blurhash", table: "episodes");
|
||||
migrationBuilder.DropColumn(name: "poster_source", table: "episodes");
|
||||
migrationBuilder.DropColumn(name: "thumbnail_blurhash", table: "episodes");
|
||||
migrationBuilder.DropColumn(name: "thumbnail_source", table: "episodes");
|
||||
|
||||
migrationBuilder.DropColumn(name: "logo_blurhash", table: "collections");
|
||||
migrationBuilder.DropColumn(name: "logo_source", table: "collections");
|
||||
migrationBuilder.DropColumn(name: "poster_blurhash", table: "collections");
|
||||
migrationBuilder.DropColumn(name: "poster_source", table: "collections");
|
||||
migrationBuilder.DropColumn(name: "thumbnail_blurhash", table: "collections");
|
||||
migrationBuilder.DropColumn(name: "thumbnail_source", table: "collections");
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "logo_blurhash",
|
||||
table: "shows",
|
||||
type: "character varying(32)",
|
||||
maxLength: 32,
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "logo_source",
|
||||
table: "shows",
|
||||
type: "text",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "poster_blurhash",
|
||||
table: "shows",
|
||||
type: "character varying(32)",
|
||||
maxLength: 32,
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "poster_source",
|
||||
table: "shows",
|
||||
type: "text",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "thumbnail_blurhash",
|
||||
table: "shows",
|
||||
type: "character varying(32)",
|
||||
maxLength: 32,
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "thumbnail_source",
|
||||
table: "shows",
|
||||
type: "text",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "logo_blurhash",
|
||||
table: "seasons",
|
||||
type: "character varying(32)",
|
||||
maxLength: 32,
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "logo_source",
|
||||
table: "seasons",
|
||||
type: "text",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "poster_blurhash",
|
||||
table: "seasons",
|
||||
type: "character varying(32)",
|
||||
maxLength: 32,
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "poster_source",
|
||||
table: "seasons",
|
||||
type: "text",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "thumbnail_blurhash",
|
||||
table: "seasons",
|
||||
type: "character varying(32)",
|
||||
maxLength: 32,
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "thumbnail_source",
|
||||
table: "seasons",
|
||||
type: "text",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "logo_blurhash",
|
||||
table: "movies",
|
||||
type: "character varying(32)",
|
||||
maxLength: 32,
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "logo_source",
|
||||
table: "movies",
|
||||
type: "text",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "poster_blurhash",
|
||||
table: "movies",
|
||||
type: "character varying(32)",
|
||||
maxLength: 32,
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "poster_source",
|
||||
table: "movies",
|
||||
type: "text",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "thumbnail_blurhash",
|
||||
table: "movies",
|
||||
type: "character varying(32)",
|
||||
maxLength: 32,
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "thumbnail_source",
|
||||
table: "movies",
|
||||
type: "text",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "logo_blurhash",
|
||||
table: "episodes",
|
||||
type: "character varying(32)",
|
||||
maxLength: 32,
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "logo_source",
|
||||
table: "episodes",
|
||||
type: "text",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "poster_blurhash",
|
||||
table: "episodes",
|
||||
type: "character varying(32)",
|
||||
maxLength: 32,
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "poster_source",
|
||||
table: "episodes",
|
||||
type: "text",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "thumbnail_blurhash",
|
||||
table: "episodes",
|
||||
type: "character varying(32)",
|
||||
maxLength: 32,
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "thumbnail_source",
|
||||
table: "episodes",
|
||||
type: "text",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "logo_blurhash",
|
||||
table: "collections",
|
||||
type: "character varying(32)",
|
||||
maxLength: 32,
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "logo_source",
|
||||
table: "collections",
|
||||
type: "text",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "poster_blurhash",
|
||||
table: "collections",
|
||||
type: "character varying(32)",
|
||||
maxLength: 32,
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "poster_source",
|
||||
table: "collections",
|
||||
type: "text",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "thumbnail_blurhash",
|
||||
table: "collections",
|
||||
type: "character varying(32)",
|
||||
maxLength: 32,
|
||||
nullable: true
|
||||
);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "thumbnail_source",
|
||||
table: "collections",
|
||||
type: "text",
|
||||
nullable: true
|
||||
);
|
||||
|
||||
UnMigrateImage(migrationBuilder, "shows", "logo");
|
||||
UnMigrateImage(migrationBuilder, "shows", "poster");
|
||||
UnMigrateImage(migrationBuilder, "shows", "thumbnail");
|
||||
|
||||
UnMigrateImage(migrationBuilder, "seasons", "logo");
|
||||
UnMigrateImage(migrationBuilder, "seasons", "poster");
|
||||
UnMigrateImage(migrationBuilder, "seasons", "thumbnail");
|
||||
|
||||
UnMigrateImage(migrationBuilder, "movies", "logo");
|
||||
UnMigrateImage(migrationBuilder, "movies", "poster");
|
||||
UnMigrateImage(migrationBuilder, "movies", "thumbnail");
|
||||
|
||||
UnMigrateImage(migrationBuilder, "episodes", "logo");
|
||||
UnMigrateImage(migrationBuilder, "episodes", "poster");
|
||||
UnMigrateImage(migrationBuilder, "episodes", "thumbnail");
|
||||
|
||||
UnMigrateImage(migrationBuilder, "collections", "logo");
|
||||
UnMigrateImage(migrationBuilder, "collections", "poster");
|
||||
UnMigrateImage(migrationBuilder, "collections", "thumbnail");
|
||||
|
||||
migrationBuilder.DropColumn(name: "logo", table: "shows");
|
||||
migrationBuilder.DropColumn(name: "poster", table: "shows");
|
||||
migrationBuilder.DropColumn(name: "thumbnail", table: "shows");
|
||||
migrationBuilder.DropColumn(name: "logo", table: "seasons");
|
||||
migrationBuilder.DropColumn(name: "poster", table: "seasons");
|
||||
migrationBuilder.DropColumn(name: "thumbnail", table: "seasons");
|
||||
migrationBuilder.DropColumn(name: "logo", table: "movies");
|
||||
migrationBuilder.DropColumn(name: "poster", table: "movies");
|
||||
migrationBuilder.DropColumn(name: "thumbnail", table: "movies");
|
||||
migrationBuilder.DropColumn(name: "logo", table: "episodes");
|
||||
migrationBuilder.DropColumn(name: "poster", table: "episodes");
|
||||
migrationBuilder.DropColumn(name: "thumbnail", table: "episodes");
|
||||
migrationBuilder.DropColumn(name: "logo", table: "collections");
|
||||
migrationBuilder.DropColumn(name: "poster", table: "collections");
|
||||
migrationBuilder.DropColumn(name: "thumbnail", table: "collections");
|
||||
}
|
||||
}
|
||||
}
|
@ -731,24 +731,26 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 =>
|
||||
{
|
||||
b1.Property<Guid>("CollectionId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("id");
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Blurhash")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("logo_blurhash");
|
||||
.HasColumnType("character varying(32)");
|
||||
|
||||
b1.Property<Guid>("Id")
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Source")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("logo_source");
|
||||
.HasColumnType("text");
|
||||
|
||||
b1.HasKey("CollectionId");
|
||||
|
||||
b1.ToTable("collections");
|
||||
|
||||
b1.ToJson("logo");
|
||||
|
||||
b1.WithOwner()
|
||||
.HasForeignKey("CollectionId")
|
||||
.HasConstraintName("fk_collections_collections_id");
|
||||
@ -757,50 +759,55 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 =>
|
||||
{
|
||||
b1.Property<Guid>("CollectionId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("id");
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Blurhash")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("poster_blurhash");
|
||||
.HasColumnType("character varying(32)");
|
||||
|
||||
b1.Property<Guid>("Id")
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Source")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("poster_source");
|
||||
.HasColumnType("text");
|
||||
|
||||
b1.HasKey("CollectionId");
|
||||
b1.HasKey("CollectionId")
|
||||
.HasName("pk_collections");
|
||||
|
||||
b1.ToTable("collections");
|
||||
|
||||
b1.ToJson("poster");
|
||||
|
||||
b1.WithOwner()
|
||||
.HasForeignKey("CollectionId")
|
||||
.HasConstraintName("fk_collections_collections_id");
|
||||
.HasConstraintName("fk_collections_collections_collection_id");
|
||||
});
|
||||
|
||||
b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 =>
|
||||
{
|
||||
b1.Property<Guid>("CollectionId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("id");
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Blurhash")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("thumbnail_blurhash");
|
||||
.HasColumnType("character varying(32)");
|
||||
|
||||
b1.Property<Guid>("Id")
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Source")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("thumbnail_source");
|
||||
.HasColumnType("text");
|
||||
|
||||
b1.HasKey("CollectionId");
|
||||
|
||||
b1.ToTable("collections");
|
||||
|
||||
b1.ToJson("thumbnail");
|
||||
|
||||
b1.WithOwner()
|
||||
.HasForeignKey("CollectionId")
|
||||
.HasConstraintName("fk_collections_collections_id");
|
||||
@ -831,24 +838,26 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 =>
|
||||
{
|
||||
b1.Property<Guid>("EpisodeId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("id");
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Blurhash")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("logo_blurhash");
|
||||
.HasColumnType("character varying(32)");
|
||||
|
||||
b1.Property<Guid>("Id")
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Source")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("logo_source");
|
||||
.HasColumnType("text");
|
||||
|
||||
b1.HasKey("EpisodeId");
|
||||
|
||||
b1.ToTable("episodes");
|
||||
|
||||
b1.ToJson("logo");
|
||||
|
||||
b1.WithOwner()
|
||||
.HasForeignKey("EpisodeId")
|
||||
.HasConstraintName("fk_episodes_episodes_id");
|
||||
@ -857,24 +866,26 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 =>
|
||||
{
|
||||
b1.Property<Guid>("EpisodeId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("id");
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Blurhash")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("poster_blurhash");
|
||||
.HasColumnType("character varying(32)");
|
||||
|
||||
b1.Property<Guid>("Id")
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Source")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("poster_source");
|
||||
.HasColumnType("text");
|
||||
|
||||
b1.HasKey("EpisodeId");
|
||||
|
||||
b1.ToTable("episodes");
|
||||
|
||||
b1.ToJson("poster");
|
||||
|
||||
b1.WithOwner()
|
||||
.HasForeignKey("EpisodeId")
|
||||
.HasConstraintName("fk_episodes_episodes_id");
|
||||
@ -883,24 +894,26 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 =>
|
||||
{
|
||||
b1.Property<Guid>("EpisodeId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("id");
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Blurhash")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("thumbnail_blurhash");
|
||||
.HasColumnType("character varying(32)");
|
||||
|
||||
b1.Property<Guid>("Id")
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Source")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("thumbnail_source");
|
||||
.HasColumnType("text");
|
||||
|
||||
b1.HasKey("EpisodeId");
|
||||
|
||||
b1.ToTable("episodes");
|
||||
|
||||
b1.ToJson("thumbnail");
|
||||
|
||||
b1.WithOwner()
|
||||
.HasForeignKey("EpisodeId")
|
||||
.HasConstraintName("fk_episodes_episodes_id");
|
||||
@ -949,24 +962,26 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 =>
|
||||
{
|
||||
b1.Property<Guid>("MovieId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("id");
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Blurhash")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("logo_blurhash");
|
||||
.HasColumnType("character varying(32)");
|
||||
|
||||
b1.Property<Guid>("Id")
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Source")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("logo_source");
|
||||
.HasColumnType("text");
|
||||
|
||||
b1.HasKey("MovieId");
|
||||
|
||||
b1.ToTable("movies");
|
||||
|
||||
b1.ToJson("logo");
|
||||
|
||||
b1.WithOwner()
|
||||
.HasForeignKey("MovieId")
|
||||
.HasConstraintName("fk_movies_movies_id");
|
||||
@ -975,24 +990,26 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 =>
|
||||
{
|
||||
b1.Property<Guid>("MovieId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("id");
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Blurhash")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("poster_blurhash");
|
||||
.HasColumnType("character varying(32)");
|
||||
|
||||
b1.Property<Guid>("Id")
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Source")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("poster_source");
|
||||
.HasColumnType("text");
|
||||
|
||||
b1.HasKey("MovieId");
|
||||
|
||||
b1.ToTable("movies");
|
||||
|
||||
b1.ToJson("poster");
|
||||
|
||||
b1.WithOwner()
|
||||
.HasForeignKey("MovieId")
|
||||
.HasConstraintName("fk_movies_movies_id");
|
||||
@ -1001,24 +1018,26 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 =>
|
||||
{
|
||||
b1.Property<Guid>("MovieId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("id");
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Blurhash")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("thumbnail_blurhash");
|
||||
.HasColumnType("character varying(32)");
|
||||
|
||||
b1.Property<Guid>("Id")
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Source")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("thumbnail_source");
|
||||
.HasColumnType("text");
|
||||
|
||||
b1.HasKey("MovieId");
|
||||
|
||||
b1.ToTable("movies");
|
||||
|
||||
b1.ToJson("thumbnail");
|
||||
|
||||
b1.WithOwner()
|
||||
.HasForeignKey("MovieId")
|
||||
.HasConstraintName("fk_movies_movies_id");
|
||||
@ -1066,24 +1085,26 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 =>
|
||||
{
|
||||
b1.Property<Guid>("SeasonId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("id");
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Blurhash")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("logo_blurhash");
|
||||
.HasColumnType("character varying(32)");
|
||||
|
||||
b1.Property<Guid>("Id")
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Source")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("logo_source");
|
||||
.HasColumnType("text");
|
||||
|
||||
b1.HasKey("SeasonId");
|
||||
|
||||
b1.ToTable("seasons");
|
||||
|
||||
b1.ToJson("logo");
|
||||
|
||||
b1.WithOwner()
|
||||
.HasForeignKey("SeasonId")
|
||||
.HasConstraintName("fk_seasons_seasons_id");
|
||||
@ -1092,24 +1113,26 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 =>
|
||||
{
|
||||
b1.Property<Guid>("SeasonId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("id");
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Blurhash")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("poster_blurhash");
|
||||
.HasColumnType("character varying(32)");
|
||||
|
||||
b1.Property<Guid>("Id")
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Source")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("poster_source");
|
||||
.HasColumnType("text");
|
||||
|
||||
b1.HasKey("SeasonId");
|
||||
|
||||
b1.ToTable("seasons");
|
||||
|
||||
b1.ToJson("poster");
|
||||
|
||||
b1.WithOwner()
|
||||
.HasForeignKey("SeasonId")
|
||||
.HasConstraintName("fk_seasons_seasons_id");
|
||||
@ -1118,24 +1141,26 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 =>
|
||||
{
|
||||
b1.Property<Guid>("SeasonId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("id");
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Blurhash")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("thumbnail_blurhash");
|
||||
.HasColumnType("character varying(32)");
|
||||
|
||||
b1.Property<Guid>("Id")
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Source")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("thumbnail_source");
|
||||
.HasColumnType("text");
|
||||
|
||||
b1.HasKey("SeasonId");
|
||||
|
||||
b1.ToTable("seasons");
|
||||
|
||||
b1.ToJson("thumbnail");
|
||||
|
||||
b1.WithOwner()
|
||||
.HasForeignKey("SeasonId")
|
||||
.HasConstraintName("fk_seasons_seasons_id");
|
||||
@ -1161,24 +1186,26 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.OwnsOne("Kyoo.Abstractions.Models.Image", "Logo", b1 =>
|
||||
{
|
||||
b1.Property<Guid>("ShowId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("id");
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Blurhash")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("logo_blurhash");
|
||||
.HasColumnType("character varying(32)");
|
||||
|
||||
b1.Property<Guid>("Id")
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Source")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("logo_source");
|
||||
.HasColumnType("text");
|
||||
|
||||
b1.HasKey("ShowId");
|
||||
|
||||
b1.ToTable("shows");
|
||||
|
||||
b1.ToJson("logo");
|
||||
|
||||
b1.WithOwner()
|
||||
.HasForeignKey("ShowId")
|
||||
.HasConstraintName("fk_shows_shows_id");
|
||||
@ -1187,24 +1214,26 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.OwnsOne("Kyoo.Abstractions.Models.Image", "Poster", b1 =>
|
||||
{
|
||||
b1.Property<Guid>("ShowId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("id");
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Blurhash")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("poster_blurhash");
|
||||
.HasColumnType("character varying(32)");
|
||||
|
||||
b1.Property<Guid>("Id")
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Source")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("poster_source");
|
||||
.HasColumnType("text");
|
||||
|
||||
b1.HasKey("ShowId");
|
||||
|
||||
b1.ToTable("shows");
|
||||
|
||||
b1.ToJson("poster");
|
||||
|
||||
b1.WithOwner()
|
||||
.HasForeignKey("ShowId")
|
||||
.HasConstraintName("fk_shows_shows_id");
|
||||
@ -1213,24 +1242,26 @@ namespace Kyoo.Postgresql.Migrations
|
||||
b.OwnsOne("Kyoo.Abstractions.Models.Image", "Thumbnail", b1 =>
|
||||
{
|
||||
b1.Property<Guid>("ShowId")
|
||||
.HasColumnType("uuid")
|
||||
.HasColumnName("id");
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Blurhash")
|
||||
.IsRequired()
|
||||
.HasMaxLength(32)
|
||||
.HasColumnType("character varying(32)")
|
||||
.HasColumnName("thumbnail_blurhash");
|
||||
.HasColumnType("character varying(32)");
|
||||
|
||||
b1.Property<Guid>("Id")
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b1.Property<string>("Source")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("thumbnail_source");
|
||||
.HasColumnType("text");
|
||||
|
||||
b1.HasKey("ShowId");
|
||||
|
||||
b1.ToTable("shows");
|
||||
|
||||
b1.ToJson("thumbnail");
|
||||
|
||||
b1.WithOwner()
|
||||
.HasForeignKey("ShowId")
|
||||
.HasConstraintName("fk_shows_shows_id");
|
||||
|
Loading…
x
Reference in New Issue
Block a user