// 
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("20200221064341_AddJwtToken")]
    partial class AddJwtToken
    {
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("ProductVersion", "3.1.2");
            modelBuilder.Entity("Timeline.Entities.JwtTokenEntity", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnName("id")
                        .HasColumnType("INTEGER");
                    b.Property("Key")
                        .IsRequired()
                        .HasColumnName("key")
                        .HasColumnType("BLOB");
                    b.HasKey("Id");
                    b.ToTable("jwt_token");
                });
            modelBuilder.Entity("Timeline.Entities.TimelineEntity", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnName("id")
                        .HasColumnType("INTEGER");
                    b.Property("CreateTime")
                        .HasColumnName("create_time")
                        .HasColumnType("TEXT");
                    b.Property("Description")
                        .HasColumnName("description")
                        .HasColumnType("TEXT");
                    b.Property("Name")
                        .HasColumnName("name")
                        .HasColumnType("TEXT");
                    b.Property("OwnerId")
                        .HasColumnName("owner")
                        .HasColumnType("INTEGER");
                    b.Property("Visibility")
                        .HasColumnName("visibility")
                        .HasColumnType("INTEGER");
                    b.HasKey("Id");
                    b.HasIndex("OwnerId");
                    b.ToTable("timelines");
                });
            modelBuilder.Entity("Timeline.Entities.TimelineMemberEntity", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnName("id")
                        .HasColumnType("INTEGER");
                    b.Property("TimelineId")
                        .HasColumnName("timeline")
                        .HasColumnType("INTEGER");
                    b.Property("UserId")
                        .HasColumnName("user")
                        .HasColumnType("INTEGER");
                    b.HasKey("Id");
                    b.HasIndex("TimelineId");
                    b.HasIndex("UserId");
                    b.ToTable("timeline_members");
                });
            modelBuilder.Entity("Timeline.Entities.TimelinePostEntity", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnName("id")
                        .HasColumnType("INTEGER");
                    b.Property("AuthorId")
                        .HasColumnName("author")
                        .HasColumnType("INTEGER");
                    b.Property("Content")
                        .HasColumnName("content")
                        .HasColumnType("TEXT");
                    b.Property("LastUpdated")
                        .HasColumnName("last_updated")
                        .HasColumnType("TEXT");
                    b.Property("Time")
                        .HasColumnName("time")
                        .HasColumnType("TEXT");
                    b.Property("TimelineId")
                        .HasColumnName("timeline")
                        .HasColumnType("INTEGER");
                    b.HasKey("Id");
                    b.HasIndex("AuthorId");
                    b.HasIndex("TimelineId");
                    b.ToTable("timeline_posts");
                });
            modelBuilder.Entity("Timeline.Entities.UserAvatarEntity", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnName("id")
                        .HasColumnType("INTEGER");
                    b.Property("Data")
                        .HasColumnName("data")
                        .HasColumnType("BLOB");
                    b.Property("ETag")
                        .HasColumnName("etag")
                        .HasColumnType("TEXT");
                    b.Property("LastModified")
                        .HasColumnName("last_modified")
                        .HasColumnType("TEXT");
                    b.Property("Type")
                        .HasColumnName("type")
                        .HasColumnType("TEXT");
                    b.Property("UserId")
                        .HasColumnName("user")
                        .HasColumnType("INTEGER");
                    b.HasKey("Id");
                    b.HasIndex("UserId")
                        .IsUnique();
                    b.ToTable("user_avatars");
                });
            modelBuilder.Entity("Timeline.Entities.UserEntity", b =>
                {
                    b.Property("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnName("id")
                        .HasColumnType("INTEGER");
                    b.Property("Nickname")
                        .HasColumnName("nickname")
                        .HasColumnType("TEXT");
                    b.Property("Password")
                        .IsRequired()
                        .HasColumnName("password")
                        .HasColumnType("TEXT");
                    b.Property("Roles")
                        .IsRequired()
                        .HasColumnName("roles")
                        .HasColumnType("TEXT");
                    b.Property("Username")
                        .IsRequired()
                        .HasColumnName("username")
                        .HasColumnType("TEXT");
                    b.Property("Version")
                        .ValueGeneratedOnAdd()
                        .HasColumnName("version")
                        .HasColumnType("INTEGER")
                        .HasDefaultValue(0L);
                    b.HasKey("Id");
                    b.HasIndex("Username")
                        .IsUnique();
                    b.ToTable("users");
                });
            modelBuilder.Entity("Timeline.Entities.TimelineEntity", b =>
                {
                    b.HasOne("Timeline.Entities.UserEntity", "Owner")
                        .WithMany("Timelines")
                        .HasForeignKey("OwnerId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });
            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();
                });
            modelBuilder.Entity("Timeline.Entities.TimelinePostEntity", b =>
                {
                    b.HasOne("Timeline.Entities.UserEntity", "Author")
                        .WithMany("TimelinePosts")
                        .HasForeignKey("AuthorId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.HasOne("Timeline.Entities.TimelineEntity", "Timeline")
                        .WithMany("Posts")
                        .HasForeignKey("TimelineId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });
            modelBuilder.Entity("Timeline.Entities.UserAvatarEntity", b =>
                {
                    b.HasOne("Timeline.Entities.UserEntity", "User")
                        .WithOne("Avatar")
                        .HasForeignKey("Timeline.Entities.UserAvatarEntity", "UserId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                });
#pragma warning restore 612, 618
        }
    }
}