diff --git a/.gitignore b/.gitignore
index 8c7f0e8..e67f738 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,7 @@
*.suo
*.user
*.sln.docstates
+.idea/
# Build results
@@ -131,3 +132,6 @@ $RECYCLE.BIN/
.DS_Store
_NCrunch*
+
+# Local user appsettings
+appsettings.Local.json
\ No newline at end of file
diff --git a/FictionArchive.API/Program.cs b/FictionArchive.API/Program.cs
index 5426d26..cdf2123 100644
--- a/FictionArchive.API/Program.cs
+++ b/FictionArchive.API/Program.cs
@@ -15,14 +15,10 @@ public class Program
builder.Services.AddSwaggerGen();
builder.Services.AddMemoryCache();
-
-
builder.Services.AddHealthChecks();
var app = builder.Build();
-
-
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
diff --git a/FictionArchive.Common/Extensions/HostApplicationBuilderExtensions.cs b/FictionArchive.Common/Extensions/HostApplicationBuilderExtensions.cs
new file mode 100644
index 0000000..3400ff5
--- /dev/null
+++ b/FictionArchive.Common/Extensions/HostApplicationBuilderExtensions.cs
@@ -0,0 +1,13 @@
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Hosting;
+
+namespace FictionArchive.Common.Extensions;
+
+public static class HostApplicationBuilderExtensions
+{
+ public static IHostApplicationBuilder AddLocalAppsettings(this IHostApplicationBuilder builder)
+ {
+ builder.Configuration.AddJsonFile("appsettings.Local.json", true, true);
+ return builder;
+ }
+}
\ No newline at end of file
diff --git a/FictionArchive.Common/FictionArchive.Common.csproj b/FictionArchive.Common/FictionArchive.Common.csproj
index 1467768..a4cbc9a 100644
--- a/FictionArchive.Common/FictionArchive.Common.csproj
+++ b/FictionArchive.Common/FictionArchive.Common.csproj
@@ -7,8 +7,16 @@
-
-
+
+
+
+
+
+
+
+
+ ..\..\..\..\..\..\Program Files\dotnet\shared\Microsoft.AspNetCore.App\8.0.15\Microsoft.Extensions.Hosting.Abstractions.dll
+
diff --git a/FictionArchive.Service.NovelService/FictionArchive.Service.NovelService.csproj b/FictionArchive.Service.NovelService/FictionArchive.Service.NovelService.csproj
index 5ac6730..fae206f 100644
--- a/FictionArchive.Service.NovelService/FictionArchive.Service.NovelService.csproj
+++ b/FictionArchive.Service.NovelService/FictionArchive.Service.NovelService.csproj
@@ -8,19 +8,6 @@
-
-
-
-
-
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
@@ -36,7 +23,6 @@
-
diff --git a/FictionArchive.Service.NovelService/GraphQL/Mutation.cs b/FictionArchive.Service.NovelService/GraphQL/Mutation.cs
index ae2b0d0..0a1ac91 100644
--- a/FictionArchive.Service.NovelService/GraphQL/Mutation.cs
+++ b/FictionArchive.Service.NovelService/GraphQL/Mutation.cs
@@ -46,7 +46,7 @@ public class Mutation
{
Author = new Person()
{
- Name = metadata.AuthorName,
+ Name = LocalizationKey.CreateFromText(metadata.AuthorName, metadata.RawLanguage),
ExternalUrl = metadata.AuthorUrl,
},
RawLanguage = metadata.RawLanguage,
diff --git a/FictionArchive.Service.NovelService/GraphQL/Query.cs b/FictionArchive.Service.NovelService/GraphQL/Query.cs
index 27e3860..4539cfc 100644
--- a/FictionArchive.Service.NovelService/GraphQL/Query.cs
+++ b/FictionArchive.Service.NovelService/GraphQL/Query.cs
@@ -1,5 +1,7 @@
using FictionArchive.Service.NovelService.Models.Novels;
using FictionArchive.Service.NovelService.Services;
+using HotChocolate.Data;
+using HotChocolate.Types;
namespace FictionArchive.Service.NovelService.GraphQL;
diff --git a/FictionArchive.Service.NovelService/Migrations/20251118021857_Initial.Designer.cs b/FictionArchive.Service.NovelService/Migrations/20251118021857_Initial.Designer.cs
deleted file mode 100644
index 3893ff6..0000000
--- a/FictionArchive.Service.NovelService/Migrations/20251118021857_Initial.Designer.cs
+++ /dev/null
@@ -1,409 +0,0 @@
-//
-using System;
-using FictionArchive.Service.NovelService.Services;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-#nullable disable
-
-namespace FictionArchive.Service.NovelService.Migrations
-{
- [DbContext(typeof(NovelServiceDbContext))]
- [Migration("20251118021857_Initial")]
- partial class Initial
- {
- ///
- protected override void BuildTargetModel(ModelBuilder modelBuilder)
- {
-#pragma warning disable 612, 618
- modelBuilder
- .HasAnnotation("ProductVersion", "9.0.11")
- .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
- NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Localization.LocalizationKey", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("CreatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.HasKey("Id");
-
- b.ToTable("LocalizationKey");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Localization.LocalizationText", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("CreatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("Language")
- .HasColumnType("integer");
-
- b.Property("LocalizationKeyId")
- .HasColumnType("bigint");
-
- b.Property("Text")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("TranslationEngineId")
- .HasColumnType("bigint");
-
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.HasKey("Id");
-
- b.HasIndex("LocalizationKeyId");
-
- b.HasIndex("TranslationEngineId");
-
- b.ToTable("LocalizationText");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Novels.Chapter", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("BodyId")
- .HasColumnType("bigint");
-
- b.Property("CreatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("NameId")
- .HasColumnType("bigint");
-
- b.Property("NovelId")
- .HasColumnType("bigint");
-
- b.Property("Order")
- .HasColumnType("bigint");
-
- b.Property("Revision")
- .HasColumnType("bigint");
-
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("Url")
- .HasColumnType("text");
-
- b.HasKey("Id");
-
- b.HasIndex("BodyId");
-
- b.HasIndex("NameId");
-
- b.HasIndex("NovelId");
-
- b.ToTable("Chapter");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Novels.Novel", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("AuthorId")
- .HasColumnType("bigint");
-
- b.Property("CreatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("DescriptionId")
- .HasColumnType("bigint");
-
- b.Property("ExternalId")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("NameId")
- .HasColumnType("bigint");
-
- b.Property("RawLanguage")
- .HasColumnType("integer");
-
- b.Property("RawStatus")
- .HasColumnType("integer");
-
- b.Property("SourceId")
- .HasColumnType("bigint");
-
- b.Property("StatusOverride")
- .HasColumnType("integer");
-
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("Url")
- .IsRequired()
- .HasColumnType("text");
-
- b.HasKey("Id");
-
- b.HasIndex("AuthorId");
-
- b.HasIndex("DescriptionId");
-
- b.HasIndex("NameId");
-
- b.HasIndex("SourceId");
-
- b.ToTable("Novels");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Novels.NovelTag", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("CreatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("DisplayNameId")
- .HasColumnType("bigint");
-
- b.Property("Key")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("NovelId")
- .HasColumnType("bigint");
-
- b.Property("SourceId")
- .HasColumnType("bigint");
-
- b.Property("TagType")
- .HasColumnType("integer");
-
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.HasKey("Id");
-
- b.HasIndex("DisplayNameId");
-
- b.HasIndex("NovelId");
-
- b.HasIndex("SourceId");
-
- b.ToTable("Tags");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Novels.Person", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("CreatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("ExternalUrl")
- .HasColumnType("text");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.HasKey("Id");
-
- b.ToTable("Person");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Novels.Source", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("CreatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("Url")
- .IsRequired()
- .HasColumnType("text");
-
- b.HasKey("Id");
-
- b.ToTable("Sources");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Novels.TranslationEngine", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("CreatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("DisplayName")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Key")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.HasKey("Id");
-
- b.ToTable("TranslationEngines");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Localization.LocalizationText", b =>
- {
- b.HasOne("FictionArchive.Service.NovelService.Models.Localization.LocalizationKey", null)
- .WithMany("Texts")
- .HasForeignKey("LocalizationKeyId");
-
- b.HasOne("FictionArchive.Service.NovelService.Models.Novels.TranslationEngine", "TranslationEngine")
- .WithMany()
- .HasForeignKey("TranslationEngineId");
-
- b.Navigation("TranslationEngine");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Novels.Chapter", b =>
- {
- b.HasOne("FictionArchive.Service.NovelService.Models.Localization.LocalizationKey", "Body")
- .WithMany()
- .HasForeignKey("BodyId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.HasOne("FictionArchive.Service.NovelService.Models.Localization.LocalizationKey", "Name")
- .WithMany()
- .HasForeignKey("NameId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.HasOne("FictionArchive.Service.NovelService.Models.Novels.Novel", null)
- .WithMany("Chapters")
- .HasForeignKey("NovelId");
-
- b.Navigation("Body");
-
- b.Navigation("Name");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Novels.Novel", b =>
- {
- b.HasOne("FictionArchive.Service.NovelService.Models.Novels.Person", "Author")
- .WithMany()
- .HasForeignKey("AuthorId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.HasOne("FictionArchive.Service.NovelService.Models.Localization.LocalizationKey", "Description")
- .WithMany()
- .HasForeignKey("DescriptionId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.HasOne("FictionArchive.Service.NovelService.Models.Localization.LocalizationKey", "Name")
- .WithMany()
- .HasForeignKey("NameId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.HasOne("FictionArchive.Service.NovelService.Models.Novels.Source", "Source")
- .WithMany()
- .HasForeignKey("SourceId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.Navigation("Author");
-
- b.Navigation("Description");
-
- b.Navigation("Name");
-
- b.Navigation("Source");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Novels.NovelTag", b =>
- {
- b.HasOne("FictionArchive.Service.NovelService.Models.Localization.LocalizationKey", "DisplayName")
- .WithMany()
- .HasForeignKey("DisplayNameId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.HasOne("FictionArchive.Service.NovelService.Models.Novels.Novel", null)
- .WithMany("Tags")
- .HasForeignKey("NovelId");
-
- b.HasOne("FictionArchive.Service.NovelService.Models.Novels.Source", "Source")
- .WithMany()
- .HasForeignKey("SourceId");
-
- b.Navigation("DisplayName");
-
- b.Navigation("Source");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Localization.LocalizationKey", b =>
- {
- b.Navigation("Texts");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Novels.Novel", b =>
- {
- b.Navigation("Chapters");
-
- b.Navigation("Tags");
- });
-#pragma warning restore 612, 618
- }
- }
-}
diff --git a/FictionArchive.Service.NovelService/Migrations/20251118023157_AddSourceKey.Designer.cs b/FictionArchive.Service.NovelService/Migrations/20251118023157_AddSourceKey.Designer.cs
deleted file mode 100644
index 5a9570b..0000000
--- a/FictionArchive.Service.NovelService/Migrations/20251118023157_AddSourceKey.Designer.cs
+++ /dev/null
@@ -1,413 +0,0 @@
-//
-using System;
-using FictionArchive.Service.NovelService.Services;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-#nullable disable
-
-namespace FictionArchive.Service.NovelService.Migrations
-{
- [DbContext(typeof(NovelServiceDbContext))]
- [Migration("20251118023157_AddSourceKey")]
- partial class AddSourceKey
- {
- ///
- protected override void BuildTargetModel(ModelBuilder modelBuilder)
- {
-#pragma warning disable 612, 618
- modelBuilder
- .HasAnnotation("ProductVersion", "9.0.11")
- .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
- NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Localization.LocalizationKey", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("CreatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.HasKey("Id");
-
- b.ToTable("LocalizationKey");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Localization.LocalizationText", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("CreatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("Language")
- .HasColumnType("integer");
-
- b.Property("LocalizationKeyId")
- .HasColumnType("bigint");
-
- b.Property("Text")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("TranslationEngineId")
- .HasColumnType("bigint");
-
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.HasKey("Id");
-
- b.HasIndex("LocalizationKeyId");
-
- b.HasIndex("TranslationEngineId");
-
- b.ToTable("LocalizationText");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Novels.Chapter", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("BodyId")
- .HasColumnType("bigint");
-
- b.Property("CreatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("NameId")
- .HasColumnType("bigint");
-
- b.Property("NovelId")
- .HasColumnType("bigint");
-
- b.Property("Order")
- .HasColumnType("bigint");
-
- b.Property("Revision")
- .HasColumnType("bigint");
-
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("Url")
- .HasColumnType("text");
-
- b.HasKey("Id");
-
- b.HasIndex("BodyId");
-
- b.HasIndex("NameId");
-
- b.HasIndex("NovelId");
-
- b.ToTable("Chapter");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Novels.Novel", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("AuthorId")
- .HasColumnType("bigint");
-
- b.Property("CreatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("DescriptionId")
- .HasColumnType("bigint");
-
- b.Property("ExternalId")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("NameId")
- .HasColumnType("bigint");
-
- b.Property("RawLanguage")
- .HasColumnType("integer");
-
- b.Property("RawStatus")
- .HasColumnType("integer");
-
- b.Property("SourceId")
- .HasColumnType("bigint");
-
- b.Property("StatusOverride")
- .HasColumnType("integer");
-
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("Url")
- .IsRequired()
- .HasColumnType("text");
-
- b.HasKey("Id");
-
- b.HasIndex("AuthorId");
-
- b.HasIndex("DescriptionId");
-
- b.HasIndex("NameId");
-
- b.HasIndex("SourceId");
-
- b.ToTable("Novels");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Novels.NovelTag", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("CreatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("DisplayNameId")
- .HasColumnType("bigint");
-
- b.Property("Key")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("NovelId")
- .HasColumnType("bigint");
-
- b.Property("SourceId")
- .HasColumnType("bigint");
-
- b.Property("TagType")
- .HasColumnType("integer");
-
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.HasKey("Id");
-
- b.HasIndex("DisplayNameId");
-
- b.HasIndex("NovelId");
-
- b.HasIndex("SourceId");
-
- b.ToTable("Tags");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Novels.Person", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("CreatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("ExternalUrl")
- .HasColumnType("text");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.HasKey("Id");
-
- b.ToTable("Person");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Novels.Source", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("CreatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("Key")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("Url")
- .IsRequired()
- .HasColumnType("text");
-
- b.HasKey("Id");
-
- b.ToTable("Sources");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Novels.TranslationEngine", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("CreatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.Property("DisplayName")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Key")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
- b.HasKey("Id");
-
- b.ToTable("TranslationEngines");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Localization.LocalizationText", b =>
- {
- b.HasOne("FictionArchive.Service.NovelService.Models.Localization.LocalizationKey", null)
- .WithMany("Texts")
- .HasForeignKey("LocalizationKeyId");
-
- b.HasOne("FictionArchive.Service.NovelService.Models.Novels.TranslationEngine", "TranslationEngine")
- .WithMany()
- .HasForeignKey("TranslationEngineId");
-
- b.Navigation("TranslationEngine");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Novels.Chapter", b =>
- {
- b.HasOne("FictionArchive.Service.NovelService.Models.Localization.LocalizationKey", "Body")
- .WithMany()
- .HasForeignKey("BodyId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.HasOne("FictionArchive.Service.NovelService.Models.Localization.LocalizationKey", "Name")
- .WithMany()
- .HasForeignKey("NameId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.HasOne("FictionArchive.Service.NovelService.Models.Novels.Novel", null)
- .WithMany("Chapters")
- .HasForeignKey("NovelId");
-
- b.Navigation("Body");
-
- b.Navigation("Name");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Novels.Novel", b =>
- {
- b.HasOne("FictionArchive.Service.NovelService.Models.Novels.Person", "Author")
- .WithMany()
- .HasForeignKey("AuthorId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.HasOne("FictionArchive.Service.NovelService.Models.Localization.LocalizationKey", "Description")
- .WithMany()
- .HasForeignKey("DescriptionId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.HasOne("FictionArchive.Service.NovelService.Models.Localization.LocalizationKey", "Name")
- .WithMany()
- .HasForeignKey("NameId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.HasOne("FictionArchive.Service.NovelService.Models.Novels.Source", "Source")
- .WithMany()
- .HasForeignKey("SourceId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.Navigation("Author");
-
- b.Navigation("Description");
-
- b.Navigation("Name");
-
- b.Navigation("Source");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Novels.NovelTag", b =>
- {
- b.HasOne("FictionArchive.Service.NovelService.Models.Localization.LocalizationKey", "DisplayName")
- .WithMany()
- .HasForeignKey("DisplayNameId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.HasOne("FictionArchive.Service.NovelService.Models.Novels.Novel", null)
- .WithMany("Tags")
- .HasForeignKey("NovelId");
-
- b.HasOne("FictionArchive.Service.NovelService.Models.Novels.Source", "Source")
- .WithMany()
- .HasForeignKey("SourceId");
-
- b.Navigation("DisplayName");
-
- b.Navigation("Source");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Localization.LocalizationKey", b =>
- {
- b.Navigation("Texts");
- });
-
- modelBuilder.Entity("FictionArchive.Service.NovelService.Models.Novels.Novel", b =>
- {
- b.Navigation("Chapters");
-
- b.Navigation("Tags");
- });
-#pragma warning restore 612, 618
- }
- }
-}
diff --git a/FictionArchive.Service.NovelService/Migrations/20251118023157_AddSourceKey.cs b/FictionArchive.Service.NovelService/Migrations/20251118023157_AddSourceKey.cs
deleted file mode 100644
index 6f93508..0000000
--- a/FictionArchive.Service.NovelService/Migrations/20251118023157_AddSourceKey.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace FictionArchive.Service.NovelService.Migrations
-{
- ///
- public partial class AddSourceKey : Migration
- {
- ///
- protected override void Up(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.AddColumn(
- name: "Key",
- table: "Sources",
- type: "text",
- nullable: false,
- defaultValue: "");
- }
-
- ///
- protected override void Down(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.DropColumn(
- name: "Key",
- table: "Sources");
- }
- }
-}
diff --git a/FictionArchive.Service.NovelService/Migrations/20251118030953_FixTagAssociation.cs b/FictionArchive.Service.NovelService/Migrations/20251118030953_FixTagAssociation.cs
deleted file mode 100644
index d441835..0000000
--- a/FictionArchive.Service.NovelService/Migrations/20251118030953_FixTagAssociation.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace FictionArchive.Service.NovelService.Migrations
-{
- ///
- public partial class FixTagAssociation : Migration
- {
- ///
- protected override void Up(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.DropForeignKey(
- name: "FK_Tags_Novels_NovelId",
- table: "Tags");
-
- migrationBuilder.DropIndex(
- name: "IX_Tags_NovelId",
- table: "Tags");
-
- migrationBuilder.DropColumn(
- name: "NovelId",
- table: "Tags");
-
- migrationBuilder.CreateTable(
- name: "NovelNovelTag",
- columns: table => new
- {
- NovelsId = table.Column(type: "bigint", nullable: false),
- TagsId = table.Column(type: "bigint", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_NovelNovelTag", x => new { x.NovelsId, x.TagsId });
- table.ForeignKey(
- name: "FK_NovelNovelTag_Novels_NovelsId",
- column: x => x.NovelsId,
- principalTable: "Novels",
- principalColumn: "Id",
- onDelete: ReferentialAction.Cascade);
- table.ForeignKey(
- name: "FK_NovelNovelTag_Tags_TagsId",
- column: x => x.TagsId,
- principalTable: "Tags",
- principalColumn: "Id",
- onDelete: ReferentialAction.Cascade);
- });
-
- migrationBuilder.CreateIndex(
- name: "IX_NovelNovelTag_TagsId",
- table: "NovelNovelTag",
- column: "TagsId");
- }
-
- ///
- protected override void Down(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.DropTable(
- name: "NovelNovelTag");
-
- migrationBuilder.AddColumn(
- name: "NovelId",
- table: "Tags",
- type: "bigint",
- nullable: true);
-
- migrationBuilder.CreateIndex(
- name: "IX_Tags_NovelId",
- table: "Tags",
- column: "NovelId");
-
- migrationBuilder.AddForeignKey(
- name: "FK_Tags_Novels_NovelId",
- table: "Tags",
- column: "NovelId",
- principalTable: "Novels",
- principalColumn: "Id");
- }
- }
-}
diff --git a/FictionArchive.Service.NovelService/Migrations/20251118030953_FixTagAssociation.Designer.cs b/FictionArchive.Service.NovelService/Migrations/20251118045235_Initial.Designer.cs
similarity index 93%
rename from FictionArchive.Service.NovelService/Migrations/20251118030953_FixTagAssociation.Designer.cs
rename to FictionArchive.Service.NovelService/Migrations/20251118045235_Initial.Designer.cs
index bb3e3e3..800d85e 100644
--- a/FictionArchive.Service.NovelService/Migrations/20251118030953_FixTagAssociation.Designer.cs
+++ b/FictionArchive.Service.NovelService/Migrations/20251118045235_Initial.Designer.cs
@@ -1,10 +1,10 @@
//
-using System;
using FictionArchive.Service.NovelService.Services;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using NodaTime;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
@@ -12,8 +12,8 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
namespace FictionArchive.Service.NovelService.Migrations
{
[DbContext(typeof(NovelServiceDbContext))]
- [Migration("20251118030953_FixTagAssociation")]
- partial class FixTagAssociation
+ [Migration("20251118045235_Initial")]
+ partial class Initial
{
///
protected override void BuildTargetModel(ModelBuilder modelBuilder)
@@ -33,10 +33,10 @@ namespace FictionArchive.Service.NovelService.Migrations
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
- b.Property("CreatedUtc")
+ b.Property("CreatedTime")
.HasColumnType("timestamp with time zone");
- b.Property("UpdatedUtc")
+ b.Property("LastUpdatedTime")
.HasColumnType("timestamp with time zone");
b.HasKey("Id");
@@ -52,12 +52,15 @@ namespace FictionArchive.Service.NovelService.Migrations
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
- b.Property("CreatedUtc")
+ b.Property("CreatedTime")
.HasColumnType("timestamp with time zone");
b.Property("Language")
.HasColumnType("integer");
+ b.Property("LastUpdatedTime")
+ .HasColumnType("timestamp with time zone");
+
b.Property("LocalizationKeyId")
.HasColumnType("bigint");
@@ -68,9 +71,6 @@ namespace FictionArchive.Service.NovelService.Migrations
b.Property("TranslationEngineId")
.HasColumnType("bigint");
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
b.HasKey("Id");
b.HasIndex("LocalizationKeyId");
@@ -91,7 +91,10 @@ namespace FictionArchive.Service.NovelService.Migrations
b.Property("BodyId")
.HasColumnType("bigint");
- b.Property("CreatedUtc")
+ b.Property("CreatedTime")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("LastUpdatedTime")
.HasColumnType("timestamp with time zone");
b.Property("NameId")
@@ -106,9 +109,6 @@ namespace FictionArchive.Service.NovelService.Migrations
b.Property("Revision")
.HasColumnType("bigint");
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
b.Property("Url")
.HasColumnType("text");
@@ -134,7 +134,7 @@ namespace FictionArchive.Service.NovelService.Migrations
b.Property("AuthorId")
.HasColumnType("bigint");
- b.Property("CreatedUtc")
+ b.Property("CreatedTime")
.HasColumnType("timestamp with time zone");
b.Property("DescriptionId")
@@ -144,6 +144,9 @@ namespace FictionArchive.Service.NovelService.Migrations
.IsRequired()
.HasColumnType("text");
+ b.Property("LastUpdatedTime")
+ .HasColumnType("timestamp with time zone");
+
b.Property("NameId")
.HasColumnType("bigint");
@@ -159,9 +162,6 @@ namespace FictionArchive.Service.NovelService.Migrations
b.Property("StatusOverride")
.HasColumnType("integer");
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
b.Property("Url")
.IsRequired()
.HasColumnType("text");
@@ -187,7 +187,7 @@ namespace FictionArchive.Service.NovelService.Migrations
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
- b.Property("CreatedUtc")
+ b.Property("CreatedTime")
.HasColumnType("timestamp with time zone");
b.Property("DisplayNameId")
@@ -197,15 +197,15 @@ namespace FictionArchive.Service.NovelService.Migrations
.IsRequired()
.HasColumnType("text");
+ b.Property("LastUpdatedTime")
+ .HasColumnType("timestamp with time zone");
+
b.Property("SourceId")
.HasColumnType("bigint");
b.Property("TagType")
.HasColumnType("integer");
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
b.HasKey("Id");
b.HasIndex("DisplayNameId");
@@ -223,19 +223,19 @@ namespace FictionArchive.Service.NovelService.Migrations
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
- b.Property("CreatedUtc")
+ b.Property("CreatedTime")
.HasColumnType("timestamp with time zone");
b.Property("ExternalUrl")
.HasColumnType("text");
+ b.Property("LastUpdatedTime")
+ .HasColumnType("timestamp with time zone");
+
b.Property("Name")
.IsRequired()
.HasColumnType("text");
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
b.HasKey("Id");
b.ToTable("Person");
@@ -249,20 +249,20 @@ namespace FictionArchive.Service.NovelService.Migrations
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
- b.Property("CreatedUtc")
+ b.Property("CreatedTime")
.HasColumnType("timestamp with time zone");
b.Property("Key")
.IsRequired()
.HasColumnType("text");
+ b.Property("LastUpdatedTime")
+ .HasColumnType("timestamp with time zone");
+
b.Property("Name")
.IsRequired()
.HasColumnType("text");
- b.Property("UpdatedUtc")
- .HasColumnType("timestamp with time zone");
-
b.Property("Url")
.IsRequired()
.HasColumnType("text");
@@ -280,7 +280,7 @@ namespace FictionArchive.Service.NovelService.Migrations
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
- b.Property("CreatedUtc")
+ b.Property("CreatedTime")
.HasColumnType("timestamp with time zone");
b.Property("DisplayName")
@@ -291,7 +291,7 @@ namespace FictionArchive.Service.NovelService.Migrations
.IsRequired()
.HasColumnType("text");
- b.Property("UpdatedUtc")
+ b.Property("LastUpdatedTime")
.HasColumnType("timestamp with time zone");
b.HasKey("Id");
diff --git a/FictionArchive.Service.NovelService/Migrations/20251118021857_Initial.cs b/FictionArchive.Service.NovelService/Migrations/20251118045235_Initial.cs
similarity index 82%
rename from FictionArchive.Service.NovelService/Migrations/20251118021857_Initial.cs
rename to FictionArchive.Service.NovelService/Migrations/20251118045235_Initial.cs
index d99ce90..c003e82 100644
--- a/FictionArchive.Service.NovelService/Migrations/20251118021857_Initial.cs
+++ b/FictionArchive.Service.NovelService/Migrations/20251118045235_Initial.cs
@@ -1,5 +1,5 @@
-using System;
-using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Migrations;
+using NodaTime;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
@@ -18,8 +18,8 @@ namespace FictionArchive.Service.NovelService.Migrations
{
Id = table.Column(type: "bigint", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- CreatedUtc = table.Column(type: "timestamp with time zone", nullable: false),
- UpdatedUtc = table.Column(type: "timestamp with time zone", nullable: false)
+ CreatedTime = table.Column(type: "timestamp with time zone", nullable: false),
+ LastUpdatedTime = table.Column(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
@@ -34,8 +34,8 @@ namespace FictionArchive.Service.NovelService.Migrations
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
Name = table.Column(type: "text", nullable: false),
ExternalUrl = table.Column(type: "text", nullable: true),
- CreatedUtc = table.Column(type: "timestamp with time zone", nullable: false),
- UpdatedUtc = table.Column(type: "timestamp with time zone", nullable: false)
+ CreatedTime = table.Column(type: "timestamp with time zone", nullable: false),
+ LastUpdatedTime = table.Column(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
@@ -49,9 +49,10 @@ namespace FictionArchive.Service.NovelService.Migrations
Id = table.Column(type: "bigint", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
Name = table.Column(type: "text", nullable: false),
+ Key = table.Column(type: "text", nullable: false),
Url = table.Column(type: "text", nullable: false),
- CreatedUtc = table.Column(type: "timestamp with time zone", nullable: false),
- UpdatedUtc = table.Column(type: "timestamp with time zone", nullable: false)
+ CreatedTime = table.Column(type: "timestamp with time zone", nullable: false),
+ LastUpdatedTime = table.Column(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
@@ -66,8 +67,8 @@ namespace FictionArchive.Service.NovelService.Migrations
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
Key = table.Column(type: "text", nullable: false),
DisplayName = table.Column(type: "text", nullable: false),
- CreatedUtc = table.Column(type: "timestamp with time zone", nullable: false),
- UpdatedUtc = table.Column(type: "timestamp with time zone", nullable: false)
+ CreatedTime = table.Column(type: "timestamp with time zone", nullable: false),
+ LastUpdatedTime = table.Column(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
@@ -89,8 +90,8 @@ namespace FictionArchive.Service.NovelService.Migrations
ExternalId = table.Column(type: "text", nullable: false),
NameId = table.Column(type: "bigint", nullable: false),
DescriptionId = table.Column(type: "bigint", nullable: false),
- CreatedUtc = table.Column(type: "timestamp with time zone", nullable: false),
- UpdatedUtc = table.Column(type: "timestamp with time zone", nullable: false)
+ CreatedTime = table.Column(type: "timestamp with time zone", nullable: false),
+ LastUpdatedTime = table.Column(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
@@ -121,6 +122,35 @@ namespace FictionArchive.Service.NovelService.Migrations
onDelete: ReferentialAction.Cascade);
});
+ migrationBuilder.CreateTable(
+ name: "Tags",
+ columns: table => new
+ {
+ Id = table.Column(type: "bigint", nullable: false)
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+ Key = table.Column(type: "text", nullable: false),
+ DisplayNameId = table.Column(type: "bigint", nullable: false),
+ TagType = table.Column(type: "integer", nullable: false),
+ SourceId = table.Column(type: "bigint", nullable: true),
+ CreatedTime = table.Column(type: "timestamp with time zone", nullable: false),
+ LastUpdatedTime = table.Column(type: "timestamp with time zone", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Tags", x => x.Id);
+ table.ForeignKey(
+ name: "FK_Tags_LocalizationKey_DisplayNameId",
+ column: x => x.DisplayNameId,
+ principalTable: "LocalizationKey",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_Tags_Sources_SourceId",
+ column: x => x.SourceId,
+ principalTable: "Sources",
+ principalColumn: "Id");
+ });
+
migrationBuilder.CreateTable(
name: "LocalizationText",
columns: table => new
@@ -131,8 +161,8 @@ namespace FictionArchive.Service.NovelService.Migrations
Text = table.Column(type: "text", nullable: false),
TranslationEngineId = table.Column(type: "bigint", nullable: true),
LocalizationKeyId = table.Column(type: "bigint", nullable: true),
- CreatedUtc = table.Column(type: "timestamp with time zone", nullable: false),
- UpdatedUtc = table.Column(type: "timestamp with time zone", nullable: false)
+ CreatedTime = table.Column(type: "timestamp with time zone", nullable: false),
+ LastUpdatedTime = table.Column(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
@@ -161,8 +191,8 @@ namespace FictionArchive.Service.NovelService.Migrations
NameId = table.Column(type: "bigint", nullable: false),
BodyId = table.Column(type: "bigint", nullable: false),
NovelId = table.Column(type: "bigint", nullable: true),
- CreatedUtc = table.Column(type: "timestamp with time zone", nullable: false),
- UpdatedUtc = table.Column(type: "timestamp with time zone", nullable: false)
+ CreatedTime = table.Column(type: "timestamp with time zone", nullable: false),
+ LastUpdatedTime = table.Column(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
@@ -187,38 +217,27 @@ namespace FictionArchive.Service.NovelService.Migrations
});
migrationBuilder.CreateTable(
- name: "Tags",
+ name: "NovelNovelTag",
columns: table => new
{
- Id = table.Column(type: "bigint", nullable: false)
- .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- Key = table.Column(type: "text", nullable: false),
- DisplayNameId = table.Column(type: "bigint", nullable: false),
- TagType = table.Column(type: "integer", nullable: false),
- SourceId = table.Column(type: "bigint", nullable: true),
- NovelId = table.Column(type: "bigint", nullable: true),
- CreatedUtc = table.Column(type: "timestamp with time zone", nullable: false),
- UpdatedUtc = table.Column(type: "timestamp with time zone", nullable: false)
+ NovelsId = table.Column(type: "bigint", nullable: false),
+ TagsId = table.Column(type: "bigint", nullable: false)
},
constraints: table =>
{
- table.PrimaryKey("PK_Tags", x => x.Id);
+ table.PrimaryKey("PK_NovelNovelTag", x => new { x.NovelsId, x.TagsId });
table.ForeignKey(
- name: "FK_Tags_LocalizationKey_DisplayNameId",
- column: x => x.DisplayNameId,
- principalTable: "LocalizationKey",
+ name: "FK_NovelNovelTag_Novels_NovelsId",
+ column: x => x.NovelsId,
+ principalTable: "Novels",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
- name: "FK_Tags_Novels_NovelId",
- column: x => x.NovelId,
- principalTable: "Novels",
- principalColumn: "Id");
- table.ForeignKey(
- name: "FK_Tags_Sources_SourceId",
- column: x => x.SourceId,
- principalTable: "Sources",
- principalColumn: "Id");
+ name: "FK_NovelNovelTag_Tags_TagsId",
+ column: x => x.TagsId,
+ principalTable: "Tags",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
@@ -246,6 +265,11 @@ namespace FictionArchive.Service.NovelService.Migrations
table: "LocalizationText",
column: "TranslationEngineId");
+ migrationBuilder.CreateIndex(
+ name: "IX_NovelNovelTag_TagsId",
+ table: "NovelNovelTag",
+ column: "TagsId");
+
migrationBuilder.CreateIndex(
name: "IX_Novels_AuthorId",
table: "Novels",
@@ -271,11 +295,6 @@ namespace FictionArchive.Service.NovelService.Migrations
table: "Tags",
column: "DisplayNameId");
- migrationBuilder.CreateIndex(
- name: "IX_Tags_NovelId",
- table: "Tags",
- column: "NovelId");
-
migrationBuilder.CreateIndex(
name: "IX_Tags_SourceId",
table: "Tags",
@@ -292,7 +311,7 @@ namespace FictionArchive.Service.NovelService.Migrations
name: "LocalizationText");
migrationBuilder.DropTable(
- name: "Tags");
+ name: "NovelNovelTag");
migrationBuilder.DropTable(
name: "TranslationEngines");
@@ -301,11 +320,14 @@ namespace FictionArchive.Service.NovelService.Migrations
name: "Novels");
migrationBuilder.DropTable(
- name: "LocalizationKey");
+ name: "Tags");
migrationBuilder.DropTable(
name: "Person");
+ migrationBuilder.DropTable(
+ name: "LocalizationKey");
+
migrationBuilder.DropTable(
name: "Sources");
}
diff --git a/FictionArchive.Service.NovelService/Migrations/NovelServiceDbContextModelSnapshot.cs b/FictionArchive.Service.NovelService/Migrations/NovelServiceDbContextModelSnapshot.cs
index 745f440..e9fb627 100644
--- a/FictionArchive.Service.NovelService/Migrations/NovelServiceDbContextModelSnapshot.cs
+++ b/FictionArchive.Service.NovelService/Migrations/NovelServiceDbContextModelSnapshot.cs
@@ -1,9 +1,9 @@
//
-using System;
using FictionArchive.Service.NovelService.Services;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using NodaTime;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
@@ -30,10 +30,10 @@ namespace FictionArchive.Service.NovelService.Migrations
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
- b.Property("CreatedUtc")
+ b.Property("CreatedTime")
.HasColumnType("timestamp with time zone");
- b.Property