// 
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Timeline.Entities;
namespace Timeline.Migrations
{
    [DbContext(typeof(DatabaseContext))]
    [Migration("20210212141443_PostData")]
    partial class PostData
    {
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("ProductVersion", "5.0.0");
            modelBuilder.Entity("Timeline.Entities.BookmarkTimelineEntity", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasColumnName("id");
                    b.Property("Rank")
                        .HasColumnType("INTEGER")
                        .HasColumnName("rank");
                    b.Property("TimelineId")
                        .HasColumnType("INTEGER")
                        .HasColumnName("timeline");
                    b.Property("UserId")
                        .HasColumnType("INTEGER")
                        .HasColumnName("user");
                    b.HasKey("Id");
                    b.HasIndex("TimelineId");
                    b.HasIndex("UserId");
                    b.ToTable("bookmark_timelines");
                });
            modelBuilder.Entity("Timeline.Entities.DataEntity", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasColumnName("id");
                    b.Property("Data")
                        .IsRequired()
                        .HasColumnType("BLOB")
                        .HasColumnName("data");
                    b.Property("Ref")
                        .HasColumnType("INTEGER")
                        .HasColumnName("ref");
                    b.Property("Tag")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("tag");
                    b.HasKey("Id");
                    b.HasIndex("Tag")
                        .IsUnique();
                    b.ToTable("data");
                });
            modelBuilder.Entity("Timeline.Entities.HighlightTimelineEntity", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasColumnName("id");
                    b.Property("AddTime")
                        .HasColumnType("TEXT")
                        .HasColumnName("add_time");
                    b.Property("OperatorId")
                        .HasColumnType("INTEGER")
                        .HasColumnName("operator_id");
                    b.Property("Order")
                        .HasColumnType("INTEGER")
                        .HasColumnName("order");
                    b.Property("TimelineId")
                        .HasColumnType("INTEGER")
                        .HasColumnName("timeline_id");
                    b.HasKey("Id");
                    b.HasIndex("OperatorId");
                    b.HasIndex("TimelineId");
                    b.ToTable("highlight_timelines");
                });
            modelBuilder.Entity("Timeline.Entities.JwtTokenEntity", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasColumnName("id");
                    b.Property("Key")
                        .IsRequired()
                        .HasColumnType("BLOB")
                        .HasColumnName("key");
                    b.HasKey("Id");
                    b.ToTable("jwt_token");
                });
            modelBuilder.Entity("Timeline.Entities.MigrationEntity", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasColumnName("id");
                    b.Property("Name")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("name");
                    b.HasKey("Id");
                    b.ToTable("migrations");
                });
            modelBuilder.Entity("Timeline.Entities.TimelineEntity", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasColumnName("id");
                    b.Property("Color")
                        .HasColumnType("TEXT")
                        .HasColumnName("color");
                    b.Property("CreateTime")
                        .HasColumnType("TEXT")
                        .HasColumnName("create_time");
                    b.Property("CurrentPostLocalId")
                        .HasColumnType("INTEGER")
                        .HasColumnName("current_post_local_id");
                    b.Property("Description")
                        .HasColumnType("TEXT")
                        .HasColumnName("description");
                    b.Property("LastModified")
                        .HasColumnType("TEXT")
                        .HasColumnName("last_modified");
                    b.Property("Name")
                        .HasColumnType("TEXT")
                        .HasColumnName("name");
                    b.Property("NameLastModified")
                        .HasColumnType("TEXT")
                        .HasColumnName("name_last_modified");
                    b.Property("OwnerId")
                        .HasColumnType("INTEGER")
                        .HasColumnName("owner");
                    b.Property("Title")
                        .HasColumnType("TEXT")
                        .HasColumnName("title");
                    b.Property("UniqueId")
                        .IsRequired()
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasColumnName("unique_id")
                        .HasDefaultValueSql("lower(hex(randomblob(16)))");
                    b.Property("Visibility")
                        .HasColumnType("INTEGER")
                        .HasColumnName("visibility");
                    b.HasKey("Id");
                    b.HasIndex("OwnerId");
                    b.ToTable("timelines");
                });
            modelBuilder.Entity("Timeline.Entities.TimelineMemberEntity", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasColumnName("id");
                    b.Property("TimelineId")
                        .HasColumnType("INTEGER")
                        .HasColumnName("timeline");
                    b.Property("UserId")
                        .HasColumnType("INTEGER")
                        .HasColumnName("user");
                    b.HasKey("Id");
                    b.HasIndex("TimelineId");
                    b.HasIndex("UserId");
                    b.ToTable("timeline_members");
                });
            modelBuilder.Entity("Timeline.Entities.TimelinePostDataEntity", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasColumnName("id");
                    b.Property("DataTag")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("data_tag");
                    b.Property("Index")
                        .HasColumnType("INTEGER")
                        .HasColumnName("index");
                    b.Property("Kind")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("kind");
                    b.Property("LastUpdated")
                        .HasColumnType("TEXT")
                        .HasColumnName("last_updated");
                    b.Property("PostId")
                        .HasColumnType("INTEGER")
                        .HasColumnName("post");
                    b.HasKey("Id");
                    b.HasIndex("PostId");
                    b.ToTable("timeline_post_data");
                });
            modelBuilder.Entity("Timeline.Entities.TimelinePostEntity", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasColumnName("id");
                    b.Property("AuthorId")
                        .HasColumnType("INTEGER")
                        .HasColumnName("author");
                    b.Property("Color")
                        .HasColumnType("TEXT")
                        .HasColumnName("color");
                    b.Property("Content")
                        .HasColumnType("TEXT")
                        .HasColumnName("content");
                    b.Property("ContentType")
                        .HasColumnType("TEXT")
                        .HasColumnName("content_type");
                    b.Property("Deleted")
                        .HasColumnType("INTEGER")
                        .HasColumnName("deleted");
                    b.Property("ExtraContent")
                        .HasColumnType("TEXT")
                        .HasColumnName("extra_content");
                    b.Property("LastUpdated")
                        .HasColumnType("TEXT")
                        .HasColumnName("last_updated");
                    b.Property("LocalId")
                        .HasColumnType("INTEGER")
                        .HasColumnName("local_id");
                    b.Property("Time")
                        .HasColumnType("TEXT")
                        .HasColumnName("time");
                    b.Property("TimelineId")
                        .HasColumnType("INTEGER")
                        .HasColumnName("timeline");
                    b.HasKey("Id");
                    b.HasIndex("AuthorId");
                    b.HasIndex("TimelineId");
                    b.ToTable("timeline_posts");
                });
            modelBuilder.Entity("Timeline.Entities.UserAvatarEntity", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasColumnName("id");
                    b.Property("DataTag")
                        .HasColumnType("TEXT")
                        .HasColumnName("data_tag");
                    b.Property("LastModified")
                        .HasColumnType("TEXT")
                        .HasColumnName("last_modified");
                    b.Property("Type")
                        .HasColumnType("TEXT")
                        .HasColumnName("type");
                    b.Property("UserId")
                        .HasColumnType("INTEGER")
                        .HasColumnName("user");
                    b.HasKey("Id");
                    b.HasIndex("UserId")
                        .IsUnique();
                    b.ToTable("user_avatars");
                });
            modelBuilder.Entity("Timeline.Entities.UserEntity", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasColumnName("id");
                    b.Property("CreateTime")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasColumnName("create_time")
                        .HasDefaultValueSql("datetime('now', 'utc')");
                    b.Property("LastModified")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasColumnName("last_modified")
                        .HasDefaultValueSql("datetime('now', 'utc')");
                    b.Property("Nickname")
                        .HasColumnType("TEXT")
                        .HasColumnName("nickname");
                    b.Property("Password")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("password");
                    b.Property("UniqueId")
                        .IsRequired()
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasColumnName("unique_id")
                        .HasDefaultValueSql("lower(hex(randomblob(16)))");
                    b.Property("Username")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("username");
                    b.Property("UsernameChangeTime")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("TEXT")
                        .HasColumnName("username_change_time")
                        .HasDefaultValueSql("datetime('now', 'utc')");
                    b.Property("Version")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(0L)
                        .HasColumnName("version");
                    b.HasKey("Id");
                    b.HasIndex("Username")
                        .IsUnique();
                    b.ToTable("users");
                });
            modelBuilder.Entity("Timeline.Entities.UserPermissionEntity", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("INTEGER")
                        .HasColumnName("id");
                    b.Property("Permission")
                        .IsRequired()
                        .HasColumnType("TEXT")
                        .HasColumnName("permission");
                    b.Property("UserId")
                        .HasColumnType("INTEGER")
                        .HasColumnName("user_id");
                    b.HasKey("Id");
                    b.HasIndex("UserId");
                    b.ToTable("user_permission");
                });
            modelBuilder.Entity("Timeline.Entities.BookmarkTimelineEntity", b =>
                {
                    b.HasOne("Timeline.Entities.TimelineEntity", "Timeline")
                        .WithMany()
                        .HasForeignKey("TimelineId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.HasOne("Timeline.Entities.UserEntity", "User")
                        .WithMany()
                        .HasForeignKey("UserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("Timeline");
                    b.Navigation("User");
                });
            modelBuilder.Entity("Timeline.Entities.HighlightTimelineEntity", b =>
                {
                    b.HasOne("Timeline.Entities.UserEntity", "Operator")
                        .WithMany()
                        .HasForeignKey("OperatorId");
                    b.HasOne("Timeline.Entities.TimelineEntity", "Timeline")
                        .WithMany()
                        .HasForeignKey("TimelineId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("Operator");
                    b.Navigation("Timeline");
                });
            modelBuilder.Entity("Timeline.Entities.TimelineEntity", b =>
                {
                    b.HasOne("Timeline.Entities.UserEntity", "Owner")
                        .WithMany("Timelines")
                        .HasForeignKey("OwnerId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("Owner");
                });
            modelBuilder.Entity("Timeline.Entities.TimelineMemberEntity", b =>
                {
                    b.HasOne("Timeline.Entities.TimelineEntity", "Timeline")
                        .WithMany("Members")
                        .HasForeignKey("TimelineId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.HasOne("Timeline.Entities.UserEntity", "User")
                        .WithMany("TimelinesJoined")
                        .HasForeignKey("UserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("Timeline");
                    b.Navigation("User");
                });
            modelBuilder.Entity("Timeline.Entities.TimelinePostDataEntity", b =>
                {
                    b.HasOne("Timeline.Entities.TimelinePostEntity", "Post")
                        .WithMany("DataList")
                        .HasForeignKey("PostId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("Post");
                });
            modelBuilder.Entity("Timeline.Entities.TimelinePostEntity", b =>
                {
                    b.HasOne("Timeline.Entities.UserEntity", "Author")
                        .WithMany("TimelinePosts")
                        .HasForeignKey("AuthorId");
                    b.HasOne("Timeline.Entities.TimelineEntity", "Timeline")
                        .WithMany("Posts")
                        .HasForeignKey("TimelineId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("Author");
                    b.Navigation("Timeline");
                });
            modelBuilder.Entity("Timeline.Entities.UserAvatarEntity", b =>
                {
                    b.HasOne("Timeline.Entities.UserEntity", "User")
                        .WithOne("Avatar")
                        .HasForeignKey("Timeline.Entities.UserAvatarEntity", "UserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("User");
                });
            modelBuilder.Entity("Timeline.Entities.UserPermissionEntity", b =>
                {
                    b.HasOne("Timeline.Entities.UserEntity", "User")
                        .WithMany("Permissions")
                        .HasForeignKey("UserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("User");
                });
            modelBuilder.Entity("Timeline.Entities.TimelineEntity", b =>
                {
                    b.Navigation("Members");
                    b.Navigation("Posts");
                });
            modelBuilder.Entity("Timeline.Entities.TimelinePostEntity", b =>
                {
                    b.Navigation("DataList");
                });
            modelBuilder.Entity("Timeline.Entities.UserEntity", b =>
                {
                    b.Navigation("Avatar");
                    b.Navigation("Permissions");
                    b.Navigation("TimelinePosts");
                    b.Navigation("Timelines");
                    b.Navigation("TimelinesJoined");
                });
#pragma warning restore 612, 618
        }
    }
}