mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-07-09 03:04:20 -04:00
Migrate to dotnet8 (#350)
This commit is contained in:
commit
6143125f7a
@ -1,4 +1,4 @@
|
|||||||
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:7.0 as builder
|
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0 as builder
|
||||||
ARG TARGETARCH
|
ARG TARGETARCH
|
||||||
WORKDIR /kyoo
|
WORKDIR /kyoo
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
FROM mcr.microsoft.com/dotnet/sdk:7.0
|
FROM mcr.microsoft.com/dotnet/sdk:8.0
|
||||||
RUN apt-get update && apt-get install -y curl
|
RUN apt-get update && apt-get install -y curl
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<Project>
|
<Project>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net7.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<LangVersion>preview</LangVersion>
|
<LangVersion>default</LangVersion>
|
||||||
<Company>Kyoo</Company>
|
<Company>Kyoo</Company>
|
||||||
<Authors>Kyoo</Authors>
|
<Authors>Kyoo</Authors>
|
||||||
<Copyright>Copyright (c) Kyoo</Copyright>
|
<Copyright>Copyright (c) Kyoo</Copyright>
|
||||||
|
@ -7,13 +7,13 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Autofac" Version="7.1.0" />
|
<PackageReference Include="Autofac" Version="8.0.0" />
|
||||||
<PackageReference Include="Dapper" Version="2.1.24" />
|
<PackageReference Include="Dapper" Version="2.1.35" />
|
||||||
<PackageReference Include="EntityFrameworkCore.Projectables" Version="4.1.4-prebeta" />
|
<PackageReference Include="EntityFrameworkCore.Projectables" Version="4.1.4-prebeta" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Abstractions" Version="2.2.0" />
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.Abstractions" Version="2.2.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.1" />
|
||||||
<PackageReference Include="Sprache" Version="2.3.1" />
|
<PackageReference Include="Sprache" Version="2.3.1" />
|
||||||
<PackageReference Include="System.ComponentModel.Composition" Version="7.0.0" />
|
<PackageReference Include="System.ComponentModel.Composition" Version="8.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
// along with Kyoo. If not, see <https://www.gnu.org/licenses/>.
|
// along with Kyoo. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Runtime.Serialization;
|
|
||||||
|
|
||||||
namespace Kyoo.Abstractions.Models.Exceptions;
|
namespace Kyoo.Abstractions.Models.Exceptions;
|
||||||
|
|
||||||
@ -25,28 +24,11 @@ namespace Kyoo.Abstractions.Models.Exceptions;
|
|||||||
/// An exception raised when an item already exists in the database.
|
/// An exception raised when an item already exists in the database.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class DuplicatedItemException : Exception
|
public class DuplicatedItemException(object? existing = null)
|
||||||
|
: Exception("Already exists in the database.")
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The existing object.
|
/// The existing object.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public object? Existing { get; }
|
public object? Existing { get; } = existing;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a new <see cref="DuplicatedItemException"/> with the default message.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="existing">The existing object.</param>
|
|
||||||
public DuplicatedItemException(object? existing = null)
|
|
||||||
: base("Already exists in the database.")
|
|
||||||
{
|
|
||||||
Existing = existing;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The serialization constructor.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="info">Serialization infos</param>
|
|
||||||
/// <param name="context">The serialization context</param>
|
|
||||||
protected DuplicatedItemException(SerializationInfo info, StreamingContext context)
|
|
||||||
: base(info, context) { }
|
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
// along with Kyoo. If not, see <https://www.gnu.org/licenses/>.
|
// along with Kyoo. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Runtime.Serialization;
|
|
||||||
|
|
||||||
namespace Kyoo.Abstractions.Models.Exceptions;
|
namespace Kyoo.Abstractions.Models.Exceptions;
|
||||||
|
|
||||||
@ -39,12 +38,4 @@ public class ItemNotFoundException : Exception
|
|||||||
/// <param name="message">The message of the exception</param>
|
/// <param name="message">The message of the exception</param>
|
||||||
public ItemNotFoundException(string message)
|
public ItemNotFoundException(string message)
|
||||||
: base(message) { }
|
: base(message) { }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The serialization constructor
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="info">Serialization infos</param>
|
|
||||||
/// <param name="context">The serialization context</param>
|
|
||||||
protected ItemNotFoundException(SerializationInfo info, StreamingContext context)
|
|
||||||
: base(info, context) { }
|
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
// along with Kyoo. If not, see <https://www.gnu.org/licenses/>.
|
// along with Kyoo. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Runtime.Serialization;
|
|
||||||
|
|
||||||
namespace Kyoo.Abstractions.Models.Exceptions;
|
namespace Kyoo.Abstractions.Models.Exceptions;
|
||||||
|
|
||||||
@ -29,7 +28,4 @@ public class UnauthorizedException : Exception
|
|||||||
|
|
||||||
public UnauthorizedException(string message)
|
public UnauthorizedException(string message)
|
||||||
: base(message) { }
|
: base(message) { }
|
||||||
|
|
||||||
protected UnauthorizedException(SerializationInfo info, StreamingContext context)
|
|
||||||
: base(info, context) { }
|
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="7.0.12" />
|
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.3" />
|
||||||
<PackageReference Include="BCrypt.Net-Next" Version="4.0.3" />
|
<PackageReference Include="BCrypt.Net-Next" Version="4.0.3" />
|
||||||
|
|
||||||
<ProjectReference Include="../Kyoo.Abstractions/Kyoo.Abstractions.csproj" />
|
<ProjectReference Include="../Kyoo.Abstractions/Kyoo.Abstractions.csproj" />
|
||||||
|
@ -446,7 +446,7 @@ public class AuthApi(
|
|||||||
{
|
{
|
||||||
Stream img = await thumbs.GetUserImage(User.GetIdOrThrow());
|
Stream img = await thumbs.GetUserImage(User.GetIdOrThrow());
|
||||||
// Allow clients to cache the image for 6 month.
|
// Allow clients to cache the image for 6 month.
|
||||||
Response.Headers.Add("Cache-Control", $"public, max-age={60 * 60 * 24 * 31 * 6}");
|
Response.Headers.CacheControl = $"public, max-age={60 * 60 * 24 * 31 * 6}";
|
||||||
return File(img, "image/webp", true);
|
return File(img, "image/webp", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,14 +6,14 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="AspNetCore.Proxy" Version="4.4.0" />
|
<PackageReference Include="AspNetCore.Proxy" Version="4.5.0" />
|
||||||
<PackageReference Include="Blurhash.SkiaSharp" Version="2.0.0" />
|
<PackageReference Include="Blurhash.SkiaSharp" Version="2.0.0" />
|
||||||
<PackageReference Include="Dapper" Version="2.1.24" />
|
<PackageReference Include="Dapper" Version="2.1.35" />
|
||||||
<PackageReference Include="InterpolatedSql.Dapper" Version="2.1.0" />
|
<PackageReference Include="InterpolatedSql.Dapper" Version="2.3.0" />
|
||||||
<PackageReference Include="FlexLabs.EntityFrameworkCore.Upsert" Version="7.0.0" />
|
<PackageReference Include="FlexLabs.EntityFrameworkCore.Upsert" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.9" />
|
<PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="6.0.0" />
|
||||||
<PackageReference Include="SkiaSharp" Version="2.88.6" />
|
<PackageReference Include="SkiaSharp" Version="2.88.7" />
|
||||||
<PackageReference Include="SkiaSharp.NativeAssets.Linux.NoDependencies" Version="2.88.6" />
|
<PackageReference Include="SkiaSharp.NativeAssets.Linux.NoDependencies" Version="2.88.7" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -74,10 +74,10 @@ public class CrudThumbsApi<T> : CrudApi<T>
|
|||||||
if (!identifier.Match(id => false, slug => slug == "random"))
|
if (!identifier.Match(id => false, slug => slug == "random"))
|
||||||
{
|
{
|
||||||
// Allow clients to cache the image for 6 month.
|
// Allow clients to cache the image for 6 month.
|
||||||
Response.Headers.Add("Cache-Control", $"public, max-age={60 * 60 * 24 * 31 * 6}");
|
Response.Headers.CacheControl = $"public, max-age={60 * 60 * 24 * 31 * 6}";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Response.Headers.Add("Cache-Control", $"public, no-store");
|
Response.Headers.CacheControl = $"public, no-store";
|
||||||
return PhysicalFile(Path.GetFullPath(path), "image/webp", true);
|
return PhysicalFile(Path.GetFullPath(path), "image/webp", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,11 +59,11 @@ public class UserApi(ILibraryManager libraryManager, IThumbnailsManager thumbs)
|
|||||||
);
|
);
|
||||||
Stream img = await thumbs.GetUserImage(gid);
|
Stream img = await thumbs.GetUserImage(gid);
|
||||||
if (identifier.Is("random"))
|
if (identifier.Is("random"))
|
||||||
Response.Headers.Add("Cache-Control", $"public, no-store");
|
Response.Headers.CacheControl = $"public, no-store";
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Allow clients to cache the image for 6 month.
|
// Allow clients to cache the image for 6 month.
|
||||||
Response.Headers.Add("Cache-Control", $"public, max-age={60 * 60 * 24 * 31 * 6}");
|
Response.Headers.CacheControl = $"public, max-age={60 * 60 * 24 * 31 * 6}";
|
||||||
}
|
}
|
||||||
return File(img, "image/webp", true);
|
return File(img, "image/webp", true);
|
||||||
}
|
}
|
||||||
|
@ -10,14 +10,14 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Serilog" Version="3.0.1" />
|
<PackageReference Include="Serilog" Version="3.1.1" />
|
||||||
<PackageReference Include="Serilog.AspNetCore" Version="7.0.0" />
|
<PackageReference Include="Serilog.AspNetCore" Version="8.0.1" />
|
||||||
<PackageReference Include="Serilog.Enrichers.Thread" Version="3.1.0" />
|
<PackageReference Include="Serilog.Enrichers.Thread" Version="3.1.0" />
|
||||||
<PackageReference Include="Serilog.Expressions" Version="3.4.1" />
|
<PackageReference Include="Serilog.Expressions" Version="4.0.0" />
|
||||||
<PackageReference Include="Serilog.Sinks.SyslogMessages" Version="3.0.1" />
|
<PackageReference Include="Serilog.Sinks.SyslogMessages" Version="3.0.1" />
|
||||||
<PackageReference Include="System.Collections.Immutable" Version="7.0.0" />
|
<PackageReference Include="System.Collections.Immutable" Version="8.0.0" />
|
||||||
<PackageReference Include="Autofac" Version="7.1.0" />
|
<PackageReference Include="Autofac" Version="8.0.0" />
|
||||||
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="8.0.0" />
|
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="9.0.0" />
|
||||||
<PackageReference Include="Autofac.Extras.AttributeMetadata" Version="6.0.0" />
|
<PackageReference Include="Autofac.Extras.AttributeMetadata" Version="6.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
@ -136,42 +136,12 @@ public class PluginsStartup
|
|||||||
/// A simple host service provider used to activate plugins instance.
|
/// A simple host service provider used to activate plugins instance.
|
||||||
/// The same services as a generic host are available and an <see cref="ILoggerFactory"/> has been added.
|
/// The same services as a generic host are available and an <see cref="ILoggerFactory"/> has been added.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private class HostServiceProvider : IServiceProvider
|
private class HostServiceProvider(
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// The host environment that could be used by plugins to configure themself.
|
|
||||||
/// </summary>
|
|
||||||
private readonly IWebHostEnvironment _hostEnvironment;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The configuration context.
|
|
||||||
/// </summary>
|
|
||||||
private readonly IConfiguration _configuration;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// A logger factory used to create a logger for the plugin manager.
|
|
||||||
/// </summary>
|
|
||||||
private readonly ILoggerFactory _loggerFactory;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Create a new <see cref="HostServiceProvider"/> that will return given services when asked.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="hostEnvironment">
|
|
||||||
/// The host environment that could be used by plugins to configure themself.
|
|
||||||
/// </param>
|
|
||||||
/// <param name="configuration">The configuration context</param>
|
|
||||||
/// <param name="loggerFactory">A logger factory used to create a logger for the plugin manager.</param>
|
|
||||||
public HostServiceProvider(
|
|
||||||
IWebHostEnvironment hostEnvironment,
|
IWebHostEnvironment hostEnvironment,
|
||||||
IConfiguration configuration,
|
IConfiguration configuration,
|
||||||
ILoggerFactory loggerFactory
|
ILoggerFactory loggerFactory
|
||||||
)
|
) : IServiceProvider
|
||||||
{
|
{
|
||||||
_hostEnvironment = hostEnvironment;
|
|
||||||
_configuration = configuration;
|
|
||||||
_loggerFactory = loggerFactory;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public object GetService(Type serviceType)
|
public object GetService(Type serviceType)
|
||||||
{
|
{
|
||||||
@ -179,20 +149,45 @@ public class PluginsStartup
|
|||||||
serviceType == typeof(IWebHostEnvironment)
|
serviceType == typeof(IWebHostEnvironment)
|
||||||
|| serviceType == typeof(IHostEnvironment)
|
|| serviceType == typeof(IHostEnvironment)
|
||||||
)
|
)
|
||||||
return _hostEnvironment;
|
return hostEnvironment;
|
||||||
if (serviceType == typeof(IConfiguration))
|
if (serviceType == typeof(IConfiguration))
|
||||||
return _configuration;
|
return configuration;
|
||||||
if (serviceType.GetGenericTypeDefinition() == typeof(ILogger<>))
|
if (serviceType == typeof(IServiceProviderIsService))
|
||||||
|
return new ProviderIsService();
|
||||||
|
if (
|
||||||
|
serviceType.IsGenericType
|
||||||
|
&& serviceType.GetGenericTypeDefinition() == typeof(ILogger<>)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
return Utility.RunGenericMethod<object>(
|
return Utility.RunGenericMethod<object>(
|
||||||
typeof(LoggerFactoryExtensions),
|
typeof(LoggerFactoryExtensions),
|
||||||
nameof(LoggerFactoryExtensions.CreateLogger),
|
nameof(LoggerFactoryExtensions.CreateLogger),
|
||||||
serviceType.GetGenericArguments().First(),
|
serviceType.GetGenericArguments().First(),
|
||||||
_loggerFactory
|
loggerFactory
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
throw new ArgumentException(
|
||||||
|
$"{serviceType.Name} is not available in configuration stpe"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ProviderIsService : IServiceProviderIsService
|
||||||
|
{
|
||||||
|
public bool IsService(Type serviceType)
|
||||||
|
{
|
||||||
|
Type[] supported =
|
||||||
|
[
|
||||||
|
typeof(IWebHostEnvironment),
|
||||||
|
typeof(IHostEnvironment),
|
||||||
|
typeof(IConfiguration),
|
||||||
|
typeof(IServiceProviderIsService),
|
||||||
|
];
|
||||||
|
if (supported.Contains(serviceType))
|
||||||
|
return true;
|
||||||
|
return serviceType.IsGenericType
|
||||||
|
&& serviceType.GetGenericTypeDefinition() == typeof(ILogger<>);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="MeiliSearch" Version="0.14.6" />
|
<PackageReference Include="MeiliSearch" Version="0.15.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -6,16 +6,16 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Dapper" Version="2.1.24" />
|
<PackageReference Include="Dapper" Version="2.1.35" />
|
||||||
<PackageReference Include="EFCore.NamingConventions" Version="7.0.2" />
|
<PackageReference Include="EFCore.NamingConventions" Version="8.0.3" />
|
||||||
<PackageReference Include="EntityFrameworkCore.Projectables" Version="4.1.4-prebeta" />
|
<PackageReference Include="EntityFrameworkCore.Projectables" Version="4.1.4-prebeta" />
|
||||||
<PackageReference Include="InterpolatedSql.Dapper" Version="2.1.0" />
|
<PackageReference Include="InterpolatedSql.Dapper" Version="2.3.0" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.12">
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.3">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="7.0.12" />
|
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="8.0.3" />
|
||||||
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.11" />
|
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.2" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -23,11 +23,11 @@ using Microsoft.EntityFrameworkCore.Migrations;
|
|||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
namespace Kyoo.Postgresql.Migrations
|
namespace Kyoo.Postgresql.Migrations;
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class Initial : Migration
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class Initial : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
{
|
{
|
||||||
@ -153,10 +153,7 @@ namespace Kyoo.Postgresql.Migrations
|
|||||||
status = table.Column<Status>(type: "status", nullable: false),
|
status = table.Column<Status>(type: "status", nullable: false),
|
||||||
rating = table.Column<int>(type: "integer", nullable: false),
|
rating = table.Column<int>(type: "integer", nullable: false),
|
||||||
runtime = table.Column<int>(type: "integer", nullable: false),
|
runtime = table.Column<int>(type: "integer", nullable: false),
|
||||||
air_date = table.Column<DateTime>(
|
air_date = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
|
||||||
type: "timestamp with time zone",
|
|
||||||
nullable: true
|
|
||||||
),
|
|
||||||
added_date = table.Column<DateTime>(
|
added_date = table.Column<DateTime>(
|
||||||
type: "timestamp with time zone",
|
type: "timestamp with time zone",
|
||||||
nullable: false,
|
nullable: false,
|
||||||
@ -219,10 +216,7 @@ namespace Kyoo.Postgresql.Migrations
|
|||||||
type: "timestamp with time zone",
|
type: "timestamp with time zone",
|
||||||
nullable: true
|
nullable: true
|
||||||
),
|
),
|
||||||
end_air = table.Column<DateTime>(
|
end_air = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
|
||||||
type: "timestamp with time zone",
|
|
||||||
nullable: true
|
|
||||||
),
|
|
||||||
added_date = table.Column<DateTime>(
|
added_date = table.Column<DateTime>(
|
||||||
type: "timestamp with time zone",
|
type: "timestamp with time zone",
|
||||||
nullable: false,
|
nullable: false,
|
||||||
@ -346,10 +340,7 @@ namespace Kyoo.Postgresql.Migrations
|
|||||||
nullable: false,
|
nullable: false,
|
||||||
defaultValueSql: "now() at time zone 'utc'"
|
defaultValueSql: "now() at time zone 'utc'"
|
||||||
),
|
),
|
||||||
end_date = table.Column<DateTime>(
|
end_date = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
|
||||||
type: "timestamp with time zone",
|
|
||||||
nullable: true
|
|
||||||
),
|
|
||||||
poster_source = table.Column<string>(type: "text", nullable: true),
|
poster_source = table.Column<string>(type: "text", nullable: true),
|
||||||
poster_blurhash = table.Column<string>(
|
poster_blurhash = table.Column<string>(
|
||||||
type: "character varying(32)",
|
type: "character varying(32)",
|
||||||
@ -566,5 +557,4 @@ namespace Kyoo.Postgresql.Migrations
|
|||||||
|
|
||||||
migrationBuilder.DropTable(name: "studios");
|
migrationBuilder.DropTable(name: "studios");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -22,11 +22,11 @@ using Microsoft.EntityFrameworkCore.Migrations;
|
|||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
namespace Kyoo.Postgresql.Migrations
|
namespace Kyoo.Postgresql.Migrations;
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class Watchlist : Migration
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class Watchlist : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
{
|
{
|
||||||
@ -65,10 +65,7 @@ namespace Kyoo.Postgresql.Migrations
|
|||||||
},
|
},
|
||||||
constraints: table =>
|
constraints: table =>
|
||||||
{
|
{
|
||||||
table.PrimaryKey(
|
table.PrimaryKey("pk_episode_watch_status", x => new { x.user_id, x.episode_id });
|
||||||
"pk_episode_watch_status",
|
|
||||||
x => new { x.user_id, x.episode_id }
|
|
||||||
);
|
|
||||||
table.ForeignKey(
|
table.ForeignKey(
|
||||||
name: "fk_episode_watch_status_episodes_episode_id",
|
name: "fk_episode_watch_status_episodes_episode_id",
|
||||||
column: x => x.episode_id,
|
column: x => x.episode_id,
|
||||||
@ -220,5 +217,4 @@ namespace Kyoo.Postgresql.Migrations
|
|||||||
.OldAnnotation("Npgsql:Enum:status", "unknown,finished,airing,planned")
|
.OldAnnotation("Npgsql:Enum:status", "unknown,finished,airing,planned")
|
||||||
.OldAnnotation("Npgsql:Enum:watch_status", "completed,watching,droped,planned");
|
.OldAnnotation("Npgsql:Enum:watch_status", "completed,watching,droped,planned");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,11 @@ using Microsoft.EntityFrameworkCore.Migrations;
|
|||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
namespace Kyoo.Postgresql.Migrations
|
namespace Kyoo.Postgresql.Migrations;
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class Settings : Migration
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class Settings : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
{
|
{
|
||||||
@ -24,5 +24,4 @@ namespace Kyoo.Postgresql.Migrations
|
|||||||
{
|
{
|
||||||
migrationBuilder.DropColumn(name: "settings", table: "users");
|
migrationBuilder.DropColumn(name: "settings", table: "users");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
namespace Kyoo.Postgresql.Migrations
|
namespace Kyoo.Postgresql.Migrations;
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class RuntimeNullable : Migration
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class RuntimeNullable : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
{
|
{
|
||||||
@ -54,5 +54,4 @@ namespace Kyoo.Postgresql.Migrations
|
|||||||
oldNullable: true
|
oldNullable: true
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
namespace Kyoo.Postgresql.Migrations
|
namespace Kyoo.Postgresql.Migrations;
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class RemoveUserLogo : Migration
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class RemoveUserLogo : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
{
|
{
|
||||||
@ -31,5 +31,4 @@ namespace Kyoo.Postgresql.Migrations
|
|||||||
nullable: true
|
nullable: true
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -3,11 +3,11 @@ using Microsoft.EntityFrameworkCore.Migrations;
|
|||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
namespace Kyoo.Postgresql.Migrations
|
namespace Kyoo.Postgresql.Migrations;
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class AddIssues : Migration
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class AddIssues : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
{
|
{
|
||||||
@ -64,5 +64,4 @@ namespace Kyoo.Postgresql.Migrations
|
|||||||
principalColumn: "id"
|
principalColumn: "id"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,11 @@ using Microsoft.EntityFrameworkCore.Migrations;
|
|||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
namespace Kyoo.Postgresql.Migrations
|
namespace Kyoo.Postgresql.Migrations;
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class AddPlayPermission : Migration
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class AddPlayPermission : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
{
|
{
|
||||||
@ -18,5 +18,4 @@ namespace Kyoo.Postgresql.Migrations
|
|||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void Down(MigrationBuilder migrationBuilder) { }
|
protected override void Down(MigrationBuilder migrationBuilder) { }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,11 @@ using Microsoft.EntityFrameworkCore.Migrations;
|
|||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
namespace Kyoo.Postgresql.Migrations
|
namespace Kyoo.Postgresql.Migrations;
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class AddUserExternalId : Migration
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class AddUserExternalId : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
{
|
{
|
||||||
@ -24,5 +24,4 @@ namespace Kyoo.Postgresql.Migrations
|
|||||||
{
|
{
|
||||||
migrationBuilder.DropColumn(name: "external_id", table: "users");
|
migrationBuilder.DropColumn(name: "external_id", table: "users");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,11 @@ using Microsoft.EntityFrameworkCore.Migrations;
|
|||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
namespace Kyoo.Postgresql.Migrations
|
namespace Kyoo.Postgresql.Migrations;
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class MakePasswordOptional : Migration
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class MakePasswordOptional : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
{
|
{
|
||||||
@ -34,5 +34,4 @@ namespace Kyoo.Postgresql.Migrations
|
|||||||
oldNullable: true
|
oldNullable: true
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="NSwag.AspNetCore" Version="13.20.0" />
|
<PackageReference Include="NSwag.AspNetCore" Version="14.0.3" />
|
||||||
<ProjectReference Include="../Kyoo.Abstractions/Kyoo.Abstractions.csproj" />
|
<ProjectReference Include="../Kyoo.Abstractions/Kyoo.Abstractions.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -51,7 +51,6 @@ public class SwaggerModule : IPlugin
|
|||||||
document.Version = Assembly.GetExecutingAssembly().GetName().Version!.ToString(3);
|
document.Version = Assembly.GetExecutingAssembly().GetName().Version!.ToString(3);
|
||||||
document.DocumentName = "v1";
|
document.DocumentName = "v1";
|
||||||
document.UseControllerSummaryAsTagDescription = true;
|
document.UseControllerSummaryAsTagDescription = true;
|
||||||
document.GenerateExamples = true;
|
|
||||||
document.PostProcess = options =>
|
document.PostProcess = options =>
|
||||||
{
|
{
|
||||||
options.Info.Contact = new OpenApiContact
|
options.Info.Contact = new OpenApiContact
|
||||||
@ -82,7 +81,7 @@ public class SwaggerModule : IPlugin
|
|||||||
!= AlternativeRoute;
|
!= AlternativeRoute;
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
document.SchemaGenerator.Settings.TypeMappers.Add(
|
document.SchemaSettings.TypeMappers.Add(
|
||||||
new PrimitiveTypeMapper(
|
new PrimitiveTypeMapper(
|
||||||
typeof(Identifier),
|
typeof(Identifier),
|
||||||
x =>
|
x =>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user