//
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Novelly.Api.Data;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace Novelly.Api.Migrations
{
[DbContext(typeof(NovelDbContext))]
partial class NovelDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder.HasAnnotation("ProductVersion", "10.0.10");
modelBuilder.Entity("BeatTag", b =>
{
b.Property("BeatsId")
.HasColumnType("TEXT");
b.Property("TagsId")
.HasColumnType("TEXT");
b.HasKey("BeatsId", "TagsId");
b.HasIndex("TagsId");
b.ToTable("BeatTags", (string)null);
});
modelBuilder.Entity("ChapterTag", b =>
{
b.Property("ChaptersId")
.HasColumnType("TEXT");
b.Property("TagsId")
.HasColumnType("TEXT");
b.HasKey("ChaptersId", "TagsId");
b.HasIndex("TagsId");
b.ToTable("ChapterTags", (string)null);
});
modelBuilder.Entity("CharacterTag", b =>
{
b.Property("CharactersId")
.HasColumnType("TEXT");
b.Property("TagsId")
.HasColumnType("TEXT");
b.HasKey("CharactersId", "TagsId");
b.HasIndex("TagsId");
b.ToTable("CharacterTags", (string)null);
});
modelBuilder.Entity("Novelly.Api.Agent.AgentConversation", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("TEXT");
b.Property("CreatedAt")
.HasColumnType("INTEGER");
b.Property("ProjectId")
.HasColumnType("TEXT");
b.Property("Title")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("TEXT");
b.Property("UpdatedAt")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("ProjectId");
b.ToTable("Conversations");
});
modelBuilder.Entity("Novelly.Api.Agent.AgentMessage", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("TEXT");
b.Property("Content")
.IsRequired()
.HasColumnType("TEXT");
b.Property("ConversationId")
.HasColumnType("TEXT");
b.Property("CreatedAt")
.HasColumnType("INTEGER");
b.Property("Role")
.IsRequired()
.HasMaxLength(16)
.HasColumnType("TEXT");
b.Property("Sequence")
.HasColumnType("INTEGER");
b.Property("ToolCallsJson")
.HasColumnType("TEXT");
b.HasKey("Id");
b.HasIndex("ConversationId", "Sequence")
.IsUnique();
b.ToTable("AgentMessages");
});
modelBuilder.Entity("Novelly.Api.Beats.Beat", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("TEXT");
b.Property("ChapterId")
.HasColumnType("TEXT");
b.Property("CharacterId")
.HasColumnType("TEXT");
b.Property("CreatedAt")
.HasColumnType("INTEGER");
b.Property("SceneId")
.HasColumnType("TEXT");
b.Property("SortOrder")
.HasColumnType("INTEGER");
b.Property("Title")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("TEXT");
b.Property("UpdatedAt")
.HasColumnType("INTEGER");
b.Property("WhatHappened")
.HasColumnType("TEXT");
b.Property("WhatsNext")
.HasColumnType("TEXT");
b.HasKey("Id");
b.HasIndex("CharacterId");
b.HasIndex("SceneId");
b.HasIndex("ChapterId", "SortOrder");
b.ToTable("Beats");
});
modelBuilder.Entity("Novelly.Api.Chapters.Chapter", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("TEXT");
b.Property("CreatedAt")
.HasColumnType("INTEGER");
b.Property("Notes")
.HasColumnType("TEXT");
b.Property("Number")
.HasColumnType("INTEGER");
b.Property("PovCharacterId")
.HasColumnType("TEXT");
b.Property("ProjectId")
.HasColumnType("TEXT");
b.Property("Setting")
.HasColumnType("TEXT");
b.Property("Status")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("TEXT");
b.Property("Summary")
.HasColumnType("TEXT");
b.Property("TargetWordCount")
.HasColumnType("INTEGER");
b.Property("Title")
.IsRequired()
.HasMaxLength(300)
.HasColumnType("TEXT");
b.Property("UpdatedAt")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("PovCharacterId");
b.HasIndex("ProjectId", "Number");
b.ToTable("Chapters");
});
modelBuilder.Entity("Novelly.Api.Characters.Character", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("TEXT");
b.Property("Age")
.HasColumnType("TEXT");
b.Property("Appearance")
.HasColumnType("TEXT");
b.Property("ArcSummary")
.HasColumnType("TEXT");
b.Property("Backstory")
.HasColumnType("TEXT");
b.Property("CreatedAt")
.HasColumnType("INTEGER");
b.Property("ExternalConflict")
.HasColumnType("TEXT");
b.Property("InternalConflict")
.HasColumnType("TEXT");
b.Property("Name")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("TEXT");
b.Property("Need")
.HasColumnType("TEXT");
b.Property("Notes")
.HasColumnType("TEXT");
b.Property("Occupation")
.HasColumnType("TEXT");
b.Property("Personality")
.HasColumnType("TEXT");
b.Property("ProjectId")
.HasColumnType("TEXT");
b.Property("Pronouns")
.HasColumnType("TEXT");
b.Property("Role")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("TEXT");
b.Property("UpdatedAt")
.HasColumnType("INTEGER");
b.Property("Voice")
.HasColumnType("TEXT");
b.Property("Want")
.HasColumnType("TEXT");
b.HasKey("Id");
b.HasIndex("ProjectId");
b.ToTable("Characters");
});
modelBuilder.Entity("Novelly.Api.Characters.CharacterRelationship", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("TEXT");
b.Property("CharacterId")
.HasColumnType("TEXT");
b.Property("Description")
.HasColumnType("TEXT");
b.Property("RelatedCharacterId")
.HasColumnType("TEXT");
b.Property("RelationshipType")
.IsRequired()
.HasMaxLength(120)
.HasColumnType("TEXT");
b.HasKey("Id");
b.HasIndex("CharacterId");
b.HasIndex("RelatedCharacterId");
b.ToTable("CharacterRelationships");
});
modelBuilder.Entity("Novelly.Api.Projects.Project", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("TEXT");
b.Property("Author")
.HasColumnType("TEXT");
b.Property("CreatedAt")
.HasColumnType("INTEGER");
b.Property("Genre")
.HasColumnType("TEXT");
b.Property("Logline")
.HasColumnType("TEXT");
b.Property("Notes")
.HasColumnType("TEXT");
b.Property("Synopsis")
.HasColumnType("TEXT");
b.Property("TargetWordCount")
.HasColumnType("INTEGER");
b.Property("Title")
.IsRequired()
.HasMaxLength(300)
.HasColumnType("TEXT");
b.Property("UpdatedAt")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.ToTable("Projects");
});
modelBuilder.Entity("Novelly.Api.Scenes.Scene", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("TEXT");
b.Property("ChapterId")
.HasColumnType("TEXT");
b.Property("Conflict")
.HasColumnType("TEXT");
b.Property("CreatedAt")
.HasColumnType("INTEGER");
b.Property("Goal")
.HasColumnType("TEXT");
b.Property("Location")
.HasColumnType("TEXT");
b.Property("Outcome")
.HasColumnType("TEXT");
b.Property("PovCharacterId")
.HasColumnType("TEXT");
b.Property("Prose")
.HasColumnType("TEXT");
b.Property("SortOrder")
.HasColumnType("INTEGER");
b.Property("Status")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("TEXT");
b.Property("Summary")
.HasColumnType("TEXT");
b.Property("Title")
.IsRequired()
.HasMaxLength(300)
.HasColumnType("TEXT");
b.Property("UpdatedAt")
.HasColumnType("INTEGER");
b.Property("WordCount")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("PovCharacterId");
b.HasIndex("ChapterId", "SortOrder");
b.ToTable("Scenes");
});
modelBuilder.Entity("Novelly.Api.Tags.Tag", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("TEXT");
b.Property("Color")
.HasMaxLength(16)
.HasColumnType("TEXT");
b.Property("CreatedAt")
.HasColumnType("INTEGER");
b.Property("Name")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("TEXT");
b.Property("ProjectId")
.HasColumnType("TEXT");
b.HasKey("Id");
b.HasIndex("ProjectId", "Name")
.IsUnique();
b.ToTable("Tags");
});
modelBuilder.Entity("BeatTag", b =>
{
b.HasOne("Novelly.Api.Beats.Beat", null)
.WithMany()
.HasForeignKey("BeatsId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Novelly.Api.Tags.Tag", null)
.WithMany()
.HasForeignKey("TagsId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("ChapterTag", b =>
{
b.HasOne("Novelly.Api.Chapters.Chapter", null)
.WithMany()
.HasForeignKey("ChaptersId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Novelly.Api.Tags.Tag", null)
.WithMany()
.HasForeignKey("TagsId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("CharacterTag", b =>
{
b.HasOne("Novelly.Api.Characters.Character", null)
.WithMany()
.HasForeignKey("CharactersId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Novelly.Api.Tags.Tag", null)
.WithMany()
.HasForeignKey("TagsId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("Novelly.Api.Agent.AgentConversation", b =>
{
b.HasOne("Novelly.Api.Projects.Project", "Project")
.WithMany("Conversations")
.HasForeignKey("ProjectId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Project");
});
modelBuilder.Entity("Novelly.Api.Agent.AgentMessage", b =>
{
b.HasOne("Novelly.Api.Agent.AgentConversation", "Conversation")
.WithMany("Messages")
.HasForeignKey("ConversationId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Conversation");
});
modelBuilder.Entity("Novelly.Api.Beats.Beat", b =>
{
b.HasOne("Novelly.Api.Chapters.Chapter", "Chapter")
.WithMany("Beats")
.HasForeignKey("ChapterId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Novelly.Api.Characters.Character", "Character")
.WithMany()
.HasForeignKey("CharacterId")
.OnDelete(DeleteBehavior.SetNull);
b.HasOne("Novelly.Api.Scenes.Scene", "Scene")
.WithMany()
.HasForeignKey("SceneId")
.OnDelete(DeleteBehavior.SetNull);
b.Navigation("Chapter");
b.Navigation("Character");
b.Navigation("Scene");
});
modelBuilder.Entity("Novelly.Api.Chapters.Chapter", b =>
{
b.HasOne("Novelly.Api.Characters.Character", "PovCharacter")
.WithMany()
.HasForeignKey("PovCharacterId")
.OnDelete(DeleteBehavior.SetNull);
b.HasOne("Novelly.Api.Projects.Project", "Project")
.WithMany("Chapters")
.HasForeignKey("ProjectId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("PovCharacter");
b.Navigation("Project");
});
modelBuilder.Entity("Novelly.Api.Characters.Character", b =>
{
b.HasOne("Novelly.Api.Projects.Project", "Project")
.WithMany("Characters")
.HasForeignKey("ProjectId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Project");
});
modelBuilder.Entity("Novelly.Api.Characters.CharacterRelationship", b =>
{
b.HasOne("Novelly.Api.Characters.Character", "Character")
.WithMany("Relationships")
.HasForeignKey("CharacterId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Novelly.Api.Characters.Character", "RelatedCharacter")
.WithMany()
.HasForeignKey("RelatedCharacterId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Character");
b.Navigation("RelatedCharacter");
});
modelBuilder.Entity("Novelly.Api.Scenes.Scene", b =>
{
b.HasOne("Novelly.Api.Chapters.Chapter", "Chapter")
.WithMany("Scenes")
.HasForeignKey("ChapterId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Novelly.Api.Characters.Character", "PovCharacter")
.WithMany()
.HasForeignKey("PovCharacterId")
.OnDelete(DeleteBehavior.SetNull);
b.Navigation("Chapter");
b.Navigation("PovCharacter");
});
modelBuilder.Entity("Novelly.Api.Tags.Tag", b =>
{
b.HasOne("Novelly.Api.Projects.Project", "Project")
.WithMany("Tags")
.HasForeignKey("ProjectId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Project");
});
modelBuilder.Entity("Novelly.Api.Agent.AgentConversation", b =>
{
b.Navigation("Messages");
});
modelBuilder.Entity("Novelly.Api.Chapters.Chapter", b =>
{
b.Navigation("Beats");
b.Navigation("Scenes");
});
modelBuilder.Entity("Novelly.Api.Characters.Character", b =>
{
b.Navigation("Relationships");
});
modelBuilder.Entity("Novelly.Api.Projects.Project", b =>
{
b.Navigation("Chapters");
b.Navigation("Characters");
b.Navigation("Conversations");
b.Navigation("Tags");
});
#pragma warning restore 612, 618
}
}
}