protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
            .HasDefaultSchema("PermissionModule")
            .HasAnnotation("ProductVersion", "6.0.0")
            .HasAnnotation("Relational:MaxIdentifierLength", 63);
            NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "fuzzystrmatch");
            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Permissions.Model.RolePermission", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <bool>("IsGranted")
                .HasColumnType("boolean")
                .HasColumnName("is_granted");
                b.Property <Guid>("Permission")
                .HasColumnType("uuid")
                .HasColumnName("permission");
                b.Property <long>("RoleID")
                .HasColumnType("bigint")
                .HasColumnName("role_id");
                b.Property <int>("Target")
                .HasColumnType("integer")
                .HasColumnName("target");
                b.HasKey("ID")
                .HasName("pk_role_permissions");
                b.ToTable("RolePermissions", "PermissionModule");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Permissions.Model.UserPermission", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <bool>("IsGranted")
                .HasColumnType("boolean")
                .HasColumnName("is_granted");
                b.Property <Guid>("Permission")
                .HasColumnType("uuid")
                .HasColumnName("permission");
                b.Property <long>("ServerID")
                .HasColumnType("bigint")
                .HasColumnName("server_id");
                b.Property <int>("Target")
                .HasColumnType("integer")
                .HasColumnName("target");
                b.Property <long>("UserID")
                .HasColumnType("bigint")
                .HasColumnName("user_id");
                b.HasKey("ID")
                .HasName("pk_user_permissions");
                b.ToTable("UserPermissions", "PermissionModule");
            });
#pragma warning restore 612, 618
        }
Beispiel #2
0
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
            .HasDefaultSchema("AutoroleModule")
            .HasAnnotation("ProductVersion", "6.0.0")
            .HasAnnotation("Relational:MaxIdentifierLength", 63);
            NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "fuzzystrmatch");
            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.AutoroleConfiguration", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <long>("DiscordRoleID")
                .HasColumnType("bigint");
                b.Property <bool>("IsEnabled")
                .HasColumnType("boolean");
                b.Property <bool>("RequiresConfirmation")
                .HasColumnType("boolean");
                b.Property <long>("ServerID")
                .HasColumnType("bigint");
                b.HasKey("ID");
                b.HasIndex("ServerID");
                b.ToTable("AutoroleConfigurations", "AutoroleModule");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.AutoroleConfirmation", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <long>("AutoroleID")
                .HasColumnType("bigint");
                b.Property <bool>("HasNotificationBeenSent")
                .HasColumnType("boolean");
                b.Property <bool>("IsConfirmed")
                .HasColumnType("boolean");
                b.Property <long>("UserID")
                .HasColumnType("bigint");
                b.HasKey("ID");
                b.HasIndex("AutoroleID");
                b.HasIndex("UserID");
                b.ToTable("AutoroleConfirmations", "AutoroleModule");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.AutoroleServerSettings", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <long?>("AffirmationRequiredNotificationChannelID")
                .HasColumnType("bigint");
                b.Property <long>("ServerID")
                .HasColumnType("bigint");
                b.HasKey("ID");
                b.HasIndex("ServerID");
                b.ToTable("AutoroleServerSettings", "AutoroleModule");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.Bases.AutoroleCondition", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <long?>("AutoroleConfigurationID")
                .HasColumnType("bigint");
                b.Property <string>("Discriminator")
                .IsRequired()
                .HasColumnType("text");
                b.HasKey("ID");
                b.HasIndex("AutoroleConfigurationID");
                b.ToTable("AutoroleConditions", "AutoroleModule");
                b.HasDiscriminator <string>("Discriminator").HasValue("AutoroleCondition");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.Statistics.UserChannelStatistics", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <long>("ChannelID")
                .HasColumnType("bigint");
                b.Property <long?>("MessageCount")
                .HasColumnType("bigint");
                b.Property <long?>("UserServerStatisticsID")
                .HasColumnType("bigint");
                b.HasKey("ID");
                b.HasIndex("UserServerStatisticsID");
                b.HasIndex("ChannelID", "UserServerStatisticsID")
                .IsUnique();
                b.ToTable("UserChannelStatistics", "AutoroleModule");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.Statistics.UserServerStatistics", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <DateTime?>("LastActivityTime")
                .HasColumnType("timestamp with time zone");
                b.Property <long>("ServerID")
                .HasColumnType("bigint");
                b.Property <long?>("TotalMessageCount")
                .HasColumnType("bigint");
                b.Property <long?>("UserStatisticsID")
                .HasColumnType("bigint");
                b.HasKey("ID");
                b.HasIndex("UserStatisticsID");
                b.HasIndex("ServerID", "UserStatisticsID")
                .IsUnique();
                b.ToTable("UserServerStatistics", "AutoroleModule");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.Statistics.UserStatistics", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <long>("UserID")
                .HasColumnType("bigint");
                b.HasKey("ID");
                b.HasIndex("UserID")
                .IsUnique();
                b.ToTable("UserStatistics", "AutoroleModule");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <string>("Description")
                .HasColumnType("text");
                b.Property <long>("DiscordID")
                .HasColumnType("bigint");
                b.Property <bool>("IsNSFW")
                .HasColumnType("boolean");
                b.Property <string>("JoinMessage")
                .HasColumnType("text");
                b.Property <bool>("SendJoinMessage")
                .HasColumnType("boolean");
                b.Property <bool>("SuppressPermissionWarnings")
                .HasColumnType("boolean");
                b.HasKey("ID");
                b.ToTable("Servers", "Core", t => t.ExcludeFromMigrations());
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.ServerUser", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <long>("ServerID")
                .HasColumnType("bigint");
                b.Property <long>("UserID")
                .HasColumnType("bigint");
                b.HasKey("ID");
                b.HasIndex("ServerID");
                b.HasIndex("UserID");
                b.ToTable("ServerUser", "Core", t => t.ExcludeFromMigrations());
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.User", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <string>("Bio")
                .IsRequired()
                .HasColumnType("text");
                b.Property <long>("DiscordID")
                .HasColumnType("bigint");
                b.Property <int?>("Timezone")
                .HasColumnType("integer");
                b.HasKey("ID");
                b.ToTable("Users", "Core", t => t.ExcludeFromMigrations());
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.Bases.MessageCountInSourceCondition<DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.MessageCountInChannelCondition>", b =>
            {
                b.HasBaseType("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.Bases.AutoroleCondition");
                b.Property <long>("RequiredCount")
                .ValueGeneratedOnUpdateSometimes()
                .HasColumnType("bigint")
                .HasColumnName("RequiredCount");
                b.Property <long>("SourceID")
                .ValueGeneratedOnUpdateSometimes()
                .HasColumnType("bigint")
                .HasColumnName("SourceID");
                b.ToTable("AutoroleConditions", "AutoroleModule");
                b.HasDiscriminator().HasValue("MessageCountInSourceCondition<MessageCountInChannelCondition>");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.Bases.MessageCountInSourceCondition<DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.MessageCountInGuildCondition>", b =>
            {
                b.HasBaseType("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.Bases.AutoroleCondition");
                b.Property <long>("RequiredCount")
                .ValueGeneratedOnUpdateSometimes()
                .HasColumnType("bigint")
                .HasColumnName("RequiredCount");
                b.Property <long>("SourceID")
                .ValueGeneratedOnUpdateSometimes()
                .HasColumnType("bigint")
                .HasColumnName("SourceID");
                b.ToTable("AutoroleConditions", "AutoroleModule");
                b.HasDiscriminator().HasValue("MessageCountInSourceCondition<MessageCountInGuildCondition>");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.Bases.TimeSinceEventCondition<DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.TimeSinceJoinCondition>", b =>
            {
                b.HasBaseType("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.Bases.AutoroleCondition");
                b.Property <TimeSpan>("RequiredTime")
                .ValueGeneratedOnUpdateSometimes()
                .HasColumnType("interval")
                .HasColumnName("RequiredTime");
                b.ToTable("AutoroleConditions", "AutoroleModule");
                b.HasDiscriminator().HasValue("TimeSinceEventCondition<TimeSinceJoinCondition>");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.Bases.TimeSinceEventCondition<DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.TimeSinceLastActivityCondition>", b =>
            {
                b.HasBaseType("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.Bases.AutoroleCondition");
                b.Property <TimeSpan>("RequiredTime")
                .ValueGeneratedOnUpdateSometimes()
                .HasColumnType("interval")
                .HasColumnName("RequiredTime");
                b.ToTable("AutoroleConditions", "AutoroleModule");
                b.HasDiscriminator().HasValue("TimeSinceEventCondition<TimeSinceLastActivityCondition>");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.ReactionCondition", b =>
            {
                b.HasBaseType("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.Bases.AutoroleCondition");
                b.Property <long>("ChannelID")
                .HasColumnType("bigint");
                b.Property <string>("EmoteName")
                .IsRequired()
                .HasColumnType("text");
                b.Property <long>("MessageID")
                .HasColumnType("bigint");
                b.ToTable("AutoroleConditions", "AutoroleModule");
                b.HasDiscriminator().HasValue("ReactionCondition");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.RoleCondition", b =>
            {
                b.HasBaseType("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.Bases.AutoroleCondition");
                b.Property <long>("RoleID")
                .HasColumnType("bigint");
                b.ToTable("AutoroleConditions", "AutoroleModule");
                b.HasDiscriminator().HasValue("RoleCondition");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.MessageCountInChannelCondition", b =>
            {
                b.HasBaseType("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.Bases.MessageCountInSourceCondition<DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.MessageCountInChannelCondition>");
                b.ToTable("AutoroleConditions", "AutoroleModule");
                b.HasDiscriminator().HasValue("MessageCountInChannelCondition");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.MessageCountInGuildCondition", b =>
            {
                b.HasBaseType("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.Bases.MessageCountInSourceCondition<DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.MessageCountInGuildCondition>");
                b.ToTable("AutoroleConditions", "AutoroleModule");
                b.HasDiscriminator().HasValue("MessageCountInGuildCondition");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.TimeSinceJoinCondition", b =>
            {
                b.HasBaseType("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.Bases.TimeSinceEventCondition<DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.TimeSinceJoinCondition>");
                b.ToTable("AutoroleConditions", "AutoroleModule");
                b.HasDiscriminator().HasValue("TimeSinceJoinCondition");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.TimeSinceLastActivityCondition", b =>
            {
                b.HasBaseType("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.Bases.TimeSinceEventCondition<DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.TimeSinceLastActivityCondition>");
                b.ToTable("AutoroleConditions", "AutoroleModule");
                b.HasDiscriminator().HasValue("TimeSinceLastActivityCondition");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.AutoroleConfiguration", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany()
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.Navigation("Server");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.AutoroleConfirmation", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Autorole.Model.AutoroleConfiguration", "Autorole")
                .WithMany()
                .HasForeignKey("AutoroleID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "User")
                .WithMany()
                .HasForeignKey("UserID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.Navigation("Autorole");
                b.Navigation("User");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.AutoroleServerSettings", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany()
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.Navigation("Server");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.Conditions.Bases.AutoroleCondition", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Autorole.Model.AutoroleConfiguration", null)
                .WithMany("Conditions")
                .HasForeignKey("AutoroleConfigurationID")
                .OnDelete(DeleteBehavior.Cascade);
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.Statistics.UserChannelStatistics", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Autorole.Model.Statistics.UserServerStatistics", null)
                .WithMany("ChannelStatistics")
                .HasForeignKey("UserServerStatisticsID")
                .OnDelete(DeleteBehavior.Cascade);
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.Statistics.UserServerStatistics", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany()
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.HasOne("DIGOS.Ambassador.Plugins.Autorole.Model.Statistics.UserStatistics", null)
                .WithMany("ServerStatistics")
                .HasForeignKey("UserStatisticsID")
                .OnDelete(DeleteBehavior.Cascade);
                b.Navigation("Server");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.Statistics.UserStatistics", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "User")
                .WithMany()
                .HasForeignKey("UserID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.Navigation("User");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.ServerUser", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany("KnownUsers")
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "User")
                .WithMany()
                .HasForeignKey("UserID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.Navigation("Server");
                b.Navigation("User");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.AutoroleConfiguration", b =>
            {
                b.Navigation("Conditions");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.Statistics.UserServerStatistics", b =>
            {
                b.Navigation("ChannelStatistics");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Autorole.Model.Statistics.UserStatistics", b =>
            {
                b.Navigation("ServerStatistics");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", b =>
            {
                b.Navigation("KnownUsers");
            });
#pragma warning restore 612, 618
        }
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
            .HasAnnotation("ProductVersion", "6.0.1")
            .HasAnnotation("Relational:MaxIdentifierLength", 63);

            NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "uuid-ossp");
            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);

            modelBuilder.Entity("Caster.Api.Domain.Models.Apply", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <string>("Output")
                .HasColumnType("text")
                .HasColumnName("output");

                b.Property <Guid>("RunId")
                .HasColumnType("uuid")
                .HasColumnName("run_id");

                b.Property <int>("Status")
                .HasColumnType("integer")
                .HasColumnName("status");

                b.HasKey("Id");

                b.HasIndex("RunId")
                .IsUnique();

                b.ToTable("applies");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.Directory", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <Guid?>("ParentId")
                .HasColumnType("uuid")
                .HasColumnName("parent_id");

                b.Property <string>("Path")
                .HasColumnType("text")
                .HasColumnName("path");

                b.Property <Guid>("ProjectId")
                .HasColumnType("uuid")
                .HasColumnName("project_id");

                b.Property <string>("TerraformVersion")
                .HasColumnType("text")
                .HasColumnName("terraform_version");

                b.HasKey("Id");

                b.HasIndex("ParentId");

                b.HasIndex("Path");

                b.HasIndex("ProjectId");

                b.ToTable("directories");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.File", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <bool>("AdministrativelyLocked")
                .HasColumnType("boolean")
                .HasColumnName("administratively_locked");

                b.Property <string>("Content")
                .HasColumnType("text")
                .HasColumnName("content");

                b.Property <DateTime?>("DateSaved")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_saved");

                b.Property <Guid>("DirectoryId")
                .HasColumnType("uuid")
                .HasColumnName("directory_id");

                b.Property <bool>("IsDeleted")
                .HasColumnType("boolean")
                .HasColumnName("is_deleted");

                b.Property <Guid?>("LockedById")
                .HasColumnType("uuid")
                .HasColumnName("locked_by_id");

                b.Property <Guid?>("ModifiedById")
                .HasColumnType("uuid")
                .HasColumnName("modified_by_id");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <Guid?>("WorkspaceId")
                .HasColumnType("uuid")
                .HasColumnName("workspace_id");

                b.HasKey("Id");

                b.HasIndex("DirectoryId");

                b.HasIndex("LockedById");

                b.HasIndex("ModifiedById");

                b.HasIndex("WorkspaceId");

                b.ToTable("files");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.FileVersion", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <string>("Content")
                .HasColumnType("text")
                .HasColumnName("content");

                b.Property <DateTime?>("DateSaved")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_saved");

                b.Property <DateTime?>("DateTagged")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_tagged");

                b.Property <Guid>("FileId")
                .HasColumnType("uuid")
                .HasColumnName("file_id");

                b.Property <Guid?>("ModifiedById")
                .HasColumnType("uuid")
                .HasColumnName("modified_by_id");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <string>("Tag")
                .HasColumnType("text")
                .HasColumnName("tag");

                b.Property <Guid?>("TaggedById")
                .HasColumnType("uuid")
                .HasColumnName("tagged_by_id");

                b.HasKey("Id");

                b.HasIndex("FileId");

                b.HasIndex("ModifiedById");

                b.HasIndex("TaggedById");

                b.ToTable("file_versions");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.Host", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <string>("Datastore")
                .HasColumnType("text")
                .HasColumnName("datastore");

                b.Property <bool>("Development")
                .HasColumnType("boolean")
                .HasColumnName("development");

                b.Property <bool>("Enabled")
                .HasColumnType("boolean")
                .HasColumnName("enabled");

                b.Property <int>("MaximumMachines")
                .HasColumnType("integer")
                .HasColumnName("maximum_machines");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <Guid?>("ProjectId")
                .HasColumnType("uuid")
                .HasColumnName("project_id");

                b.HasKey("Id");

                b.HasIndex("ProjectId");

                b.ToTable("hosts");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.HostMachine", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <Guid>("HostId")
                .HasColumnType("uuid")
                .HasColumnName("host_id");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <Guid>("WorkspaceId")
                .HasColumnType("uuid")
                .HasColumnName("workspace_id");

                b.HasKey("Id");

                b.HasIndex("HostId");

                b.HasIndex("WorkspaceId");

                b.ToTable("host_machines");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.Module", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <DateTime?>("DateModified")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_modified");

                b.Property <string>("Description")
                .HasColumnType("text")
                .HasColumnName("description");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <string>("Path")
                .HasColumnType("text")
                .HasColumnName("path");

                b.HasKey("Id");

                b.ToTable("modules");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.ModuleVersion", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <DateTime>("DateCreated")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_created");

                b.Property <Guid>("ModuleId")
                .HasColumnType("uuid")
                .HasColumnName("module_id");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <string>("Outputs")
                .HasColumnType("text")
                .HasColumnName("outputs");

                b.Property <string>("UrlLink")
                .HasColumnType("text")
                .HasColumnName("url_link");

                b.Property <string>("Variables")
                .HasColumnType("text")
                .HasColumnName("variables");

                b.HasKey("Id");

                b.HasIndex("ModuleId");

                b.ToTable("module_versions");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.Permission", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <string>("Description")
                .HasColumnType("text")
                .HasColumnName("description");

                b.Property <string>("Key")
                .HasColumnType("text")
                .HasColumnName("key");

                b.Property <bool>("ReadOnly")
                .HasColumnType("boolean")
                .HasColumnName("read_only");

                b.Property <string>("Value")
                .HasColumnType("text")
                .HasColumnName("value");

                b.HasKey("Id");

                b.HasIndex("Key", "Value")
                .IsUnique();

                b.ToTable("permissions");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.Plan", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <string>("Output")
                .HasColumnType("text")
                .HasColumnName("output");

                b.Property <Guid>("RunId")
                .HasColumnType("uuid")
                .HasColumnName("run_id");

                b.Property <int>("Status")
                .HasColumnType("integer")
                .HasColumnName("status");

                b.HasKey("Id");

                b.HasIndex("RunId")
                .IsUnique();

                b.ToTable("plans");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.Project", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.HasKey("Id");

                b.ToTable("projects");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.RemovedResource", b =>
            {
                b.Property <string>("Id")
                .HasColumnType("text")
                .HasColumnName("id");

                b.HasKey("Id");

                b.ToTable("removed_resources");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.Run", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <DateTime>("CreatedAt")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("created_at");

                b.Property <Guid?>("CreatedById")
                .HasColumnType("uuid")
                .HasColumnName("created_by_id");

                b.Property <bool>("IsDestroy")
                .HasColumnType("boolean")
                .HasColumnName("is_destroy");

                b.Property <DateTime?>("ModifiedAt")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("modified_at");

                b.Property <Guid?>("ModifiedById")
                .HasColumnType("uuid")
                .HasColumnName("modified_by_id");

                b.Property <int>("Status")
                .HasColumnType("integer")
                .HasColumnName("status");

                b.Property <string>("Targets")
                .HasColumnType("text")
                .HasColumnName("targets");

                b.Property <Guid>("WorkspaceId")
                .HasColumnType("uuid")
                .HasColumnName("workspace_id");

                b.HasKey("Id");

                b.HasIndex("CreatedAt");

                b.HasIndex("CreatedById");

                b.HasIndex("ModifiedById");

                b.HasIndex("WorkspaceId");

                b.ToTable("runs");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.User", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.HasKey("Id");

                b.ToTable("users");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.UserPermission", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <Guid>("PermissionId")
                .HasColumnType("uuid")
                .HasColumnName("permission_id");

                b.Property <Guid>("UserId")
                .HasColumnType("uuid")
                .HasColumnName("user_id");

                b.HasKey("Id");

                b.HasIndex("PermissionId");

                b.HasIndex("UserId", "PermissionId")
                .IsUnique();

                b.ToTable("user_permissions");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.Workspace", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <Guid>("DirectoryId")
                .HasColumnType("uuid")
                .HasColumnName("directory_id");

                b.Property <bool>("DynamicHost")
                .HasColumnType("boolean")
                .HasColumnName("dynamic_host");

                b.Property <Guid?>("HostId")
                .HasColumnType("uuid")
                .HasColumnName("host_id");

                b.Property <DateTime?>("LastSynced")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("last_synced");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <string>("State")
                .HasColumnType("text")
                .HasColumnName("state");

                b.Property <string>("StateBackup")
                .HasColumnType("text")
                .HasColumnName("state_backup");

                b.Property <string>("SyncErrors")
                .HasColumnType("text")
                .HasColumnName("sync_errors");

                b.Property <string>("TerraformVersion")
                .HasColumnType("text")
                .HasColumnName("terraform_version");

                b.HasKey("Id");

                b.HasIndex("DirectoryId");

                b.HasIndex("HostId");

                b.ToTable("workspaces");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.Apply", b =>
            {
                b.HasOne("Caster.Api.Domain.Models.Run", "Run")
                .WithOne("Apply")
                .HasForeignKey("Caster.Api.Domain.Models.Apply", "RunId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Run");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.Directory", b =>
            {
                b.HasOne("Caster.Api.Domain.Models.Directory", "Parent")
                .WithMany("Children")
                .HasForeignKey("ParentId")
                .OnDelete(DeleteBehavior.Cascade);

                b.HasOne("Caster.Api.Domain.Models.Project", "Project")
                .WithMany("Directories")
                .HasForeignKey("ProjectId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Parent");

                b.Navigation("Project");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.File", b =>
            {
                b.HasOne("Caster.Api.Domain.Models.Directory", "Directory")
                .WithMany("Files")
                .HasForeignKey("DirectoryId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("Caster.Api.Domain.Models.User", "LockedBy")
                .WithMany()
                .HasForeignKey("LockedById");

                b.HasOne("Caster.Api.Domain.Models.User", "ModifiedBy")
                .WithMany()
                .HasForeignKey("ModifiedById");

                b.HasOne("Caster.Api.Domain.Models.Workspace", "Workspace")
                .WithMany("Files")
                .HasForeignKey("WorkspaceId")
                .OnDelete(DeleteBehavior.Cascade);

                b.Navigation("Directory");

                b.Navigation("LockedBy");

                b.Navigation("ModifiedBy");

                b.Navigation("Workspace");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.FileVersion", b =>
            {
                b.HasOne("Caster.Api.Domain.Models.File", "File")
                .WithMany("FileVersions")
                .HasForeignKey("FileId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("Caster.Api.Domain.Models.User", "ModifiedBy")
                .WithMany()
                .HasForeignKey("ModifiedById");

                b.HasOne("Caster.Api.Domain.Models.User", "TaggedBy")
                .WithMany()
                .HasForeignKey("TaggedById");

                b.Navigation("File");

                b.Navigation("ModifiedBy");

                b.Navigation("TaggedBy");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.Host", b =>
            {
                b.HasOne("Caster.Api.Domain.Models.Project", "Project")
                .WithMany()
                .HasForeignKey("ProjectId");

                b.Navigation("Project");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.HostMachine", b =>
            {
                b.HasOne("Caster.Api.Domain.Models.Host", "Host")
                .WithMany("Machines")
                .HasForeignKey("HostId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("Caster.Api.Domain.Models.Workspace", "Workspace")
                .WithMany()
                .HasForeignKey("WorkspaceId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Host");

                b.Navigation("Workspace");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.ModuleVersion", b =>
            {
                b.HasOne("Caster.Api.Domain.Models.Module", "Module")
                .WithMany("Versions")
                .HasForeignKey("ModuleId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Module");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.Plan", b =>
            {
                b.HasOne("Caster.Api.Domain.Models.Run", "Run")
                .WithOne("Plan")
                .HasForeignKey("Caster.Api.Domain.Models.Plan", "RunId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Run");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.Run", b =>
            {
                b.HasOne("Caster.Api.Domain.Models.User", "CreatedBy")
                .WithMany()
                .HasForeignKey("CreatedById");

                b.HasOne("Caster.Api.Domain.Models.User", "ModifiedBy")
                .WithMany()
                .HasForeignKey("ModifiedById");

                b.HasOne("Caster.Api.Domain.Models.Workspace", "Workspace")
                .WithMany("Runs")
                .HasForeignKey("WorkspaceId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("CreatedBy");

                b.Navigation("ModifiedBy");

                b.Navigation("Workspace");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.UserPermission", b =>
            {
                b.HasOne("Caster.Api.Domain.Models.Permission", "Permission")
                .WithMany("UserPermissions")
                .HasForeignKey("PermissionId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("Caster.Api.Domain.Models.User", "User")
                .WithMany("UserPermissions")
                .HasForeignKey("UserId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Permission");

                b.Navigation("User");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.Workspace", b =>
            {
                b.HasOne("Caster.Api.Domain.Models.Directory", "Directory")
                .WithMany("Workspaces")
                .HasForeignKey("DirectoryId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("Caster.Api.Domain.Models.Host", "Host")
                .WithMany()
                .HasForeignKey("HostId");

                b.Navigation("Directory");

                b.Navigation("Host");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.Directory", b =>
            {
                b.Navigation("Children");

                b.Navigation("Files");

                b.Navigation("Workspaces");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.File", b =>
            {
                b.Navigation("FileVersions");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.Host", b =>
            {
                b.Navigation("Machines");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.Module", b =>
            {
                b.Navigation("Versions");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.Permission", b =>
            {
                b.Navigation("UserPermissions");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.Project", b =>
            {
                b.Navigation("Directories");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.Run", b =>
            {
                b.Navigation("Apply");

                b.Navigation("Plan");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.User", b =>
            {
                b.Navigation("UserPermissions");
            });

            modelBuilder.Entity("Caster.Api.Domain.Models.Workspace", b =>
            {
                b.Navigation("Files");

                b.Navigation("Runs");
            });
#pragma warning restore 612, 618
        }
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
            .HasAnnotation("ProductVersion", "6.0.0")
            .HasAnnotation("Relational:MaxIdentifierLength", 63);

            NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "postgis");
            NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "uuid-ossp");
            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.AccommodationChangeLog", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("integer");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <int>("Id"));

                b.Property <int>("AccommodationId")
                .HasColumnType("integer");

                b.Property <JsonDocument>("ChangeEventData")
                .IsRequired()
                .HasColumnType("jsonb");

                b.Property <DateTimeOffset>("Created")
                .HasColumnType("timestamp with time zone");

                b.Property <int>("EventSource")
                .HasColumnType("integer");

                b.Property <int>("EventType")
                .HasColumnType("integer");

                b.HasKey("Id");

                b.ToTable("AccommodationChangeLogs");
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.Accommodations.RichAccommodationDetails", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("integer");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <int>("Id"));

                b.Property <string>("AccommodationWithManualCorrections")
                .IsRequired()
                .HasColumnType("jsonb");

                b.Property <string>("CountryCode")
                .HasColumnType("text");

                b.Property <int>("CountryId")
                .HasColumnType("integer");

                b.Property <DateTimeOffset>("Created")
                .ValueGeneratedOnAdd()
                .HasColumnType("timestamp with time zone")
                .HasDefaultValueSql("now() at time zone 'utc'");

                b.Property <int>("DeactivationReason")
                .HasColumnType("integer");

                b.Property <string>("DeactivationReasonDescription")
                .HasColumnType("text");

                b.Property <string>("FinalAccommodation")
                .IsRequired()
                .HasColumnType("jsonb");

                b.Property <bool>("HasDirectContract")
                .HasColumnType("boolean");

                b.Property <bool>("IsActive")
                .HasColumnType("boolean");

                b.Property <bool>("IsCorrected")
                .ValueGeneratedOnAdd()
                .HasColumnType("boolean")
                .HasDefaultValue(true);

                b.Property <string>("KeyData")
                .IsRequired()
                .HasColumnType("jsonb");

                b.Property <int?>("LocalityId")
                .HasColumnType("integer");

                b.Property <int?>("LocalityZoneId")
                .HasColumnType("integer");

                b.Property <DateTimeOffset>("Modified")
                .ValueGeneratedOnAdd()
                .HasColumnType("timestamp with time zone")
                .HasDefaultValueSql("now() at time zone 'utc'");

                b.Property <string>("SupplierAccommodationCodes")
                .IsRequired()
                .HasColumnType("jsonb");

                b.Property <string>("SuppliersPriority")
                .IsRequired()
                .HasColumnType("jsonb");

                b.HasKey("Id");

                b.HasIndex("CountryId");

                b.HasIndex("LocalityId");

                b.HasIndex("LocalityZoneId");

                b.ToTable("Accommodations");
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.AccommodationUncertainMatches", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("integer");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <int>("Id"));

                b.Property <DateTimeOffset>("Created")
                .ValueGeneratedOnAdd()
                .HasColumnType("timestamp with time zone")
                .HasDefaultValueSql("now() at time zone 'utc'");

                b.Property <int>("HtIdToMerge")
                .HasColumnType("integer");

                b.Property <bool>("IsActive")
                .ValueGeneratedOnAdd()
                .HasColumnType("boolean")
                .HasDefaultValue(true);

                b.Property <DateTimeOffset>("Modified")
                .ValueGeneratedOnAdd()
                .HasColumnType("timestamp with time zone")
                .HasDefaultValueSql("now() at time zone 'utc'");

                b.Property <float>("Score")
                .HasColumnType("real");

                b.Property <int>("SourceHtId")
                .HasColumnType("integer");

                b.HasKey("Id");

                b.HasIndex("HtIdToMerge");

                b.HasIndex("SourceHtId");

                b.ToTable("AccommodationUncertainMatches");
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.Ancillary.InvalidAccommodationMappingEntry", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("integer");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <int>("Id"));

                b.Property <int>("AccommodationId")
                .HasColumnType("integer");

                b.Property <List <MatchingResultEntry> >("MatchingResults")
                .IsRequired()
                .HasColumnType("jsonb");

                b.Property <Dictionary <string, string> >("Suppliers")
                .HasColumnType("jsonb");

                b.HasKey("Id");

                b.ToTable("InvalidAccommodationMappings", (string)null);
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.Country", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("integer");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <int>("Id"));

                b.Property <string>("Code")
                .IsRequired()
                .HasColumnType("text");

                b.Property <DateTimeOffset>("Created")
                .ValueGeneratedOnAdd()
                .HasColumnType("timestamp with time zone")
                .HasDefaultValueSql("now() at time zone 'utc'");

                b.Property <bool>("IsActive")
                .ValueGeneratedOnAdd()
                .HasColumnType("boolean")
                .HasDefaultValue(true);

                b.Property <DateTimeOffset>("Modified")
                .ValueGeneratedOnAdd()
                .HasColumnType("timestamp with time zone")
                .HasDefaultValueSql("now() at time zone 'utc'");

                b.Property <MultiLanguage <string> >("Names")
                .IsRequired()
                .HasColumnType("jsonb");

                b.Property <string>("SupplierCountryCodes")
                .IsRequired()
                .HasColumnType("jsonb");

                b.HasKey("Id");

                b.ToTable("Countries");
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.DataUpdateHistory", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("integer");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <int>("Id"));

                b.Property <string>("SupplierNameCode")
                .IsRequired()
                .HasColumnType("text");

                b.Property <int>("Type")
                .HasColumnType("integer");

                b.Property <DateTimeOffset>("UpdateTime")
                .HasColumnType("timestamp with time zone");

                b.HasKey("Id");

                b.ToTable("DataUpdateHistories");
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.HtAccommodationMapping", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("integer");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <int>("Id"));

                b.Property <DateTimeOffset>("Created")
                .HasColumnType("timestamp with time zone");

                b.Property <int>("HtId")
                .HasColumnType("integer");

                b.Property <bool>("IsActive")
                .HasColumnType("boolean");

                b.Property <HashSet <int> >("MappedHtIds")
                .IsRequired()
                .HasColumnType("jsonb");

                b.Property <DateTimeOffset>("Modified")
                .HasColumnType("timestamp with time zone");

                b.HasKey("Id");

                b.HasIndex("HtId");

                b.ToTable("HtAccommodationMappings");
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.Localities.Locality", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("integer");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <int>("Id"));

                b.Property <int>("CountryId")
                .HasColumnType("integer");

                b.Property <DateTimeOffset>("Created")
                .ValueGeneratedOnAdd()
                .HasColumnType("timestamp with time zone")
                .HasDefaultValueSql("now() at time zone 'utc'");

                b.Property <bool>("IsActive")
                .ValueGeneratedOnAdd()
                .HasColumnType("boolean")
                .HasDefaultValue(true);

                b.Property <DateTimeOffset>("Modified")
                .ValueGeneratedOnAdd()
                .HasColumnType("timestamp with time zone")
                .HasDefaultValueSql("now() at time zone 'utc'");

                b.Property <MultiLanguage <string> >("Names")
                .IsRequired()
                .HasColumnType("jsonb");

                b.Property <string>("SupplierLocalityCodes")
                .HasColumnType("jsonb");

                b.HasKey("Id");

                b.HasIndex("CountryId");

                b.ToTable("Localities");
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.Localities.LocalityCandidate", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("integer");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <int>("Id"));

                b.Property <int>("CountryId")
                .HasColumnType("integer");

                b.Property <DateTimeOffset>("Created")
                .ValueGeneratedOnAdd()
                .HasColumnType("timestamp with time zone")
                .HasDefaultValueSql("now() at time zone 'utc'");

                b.Property <MultiLanguage <string> >("Names")
                .IsRequired()
                .HasColumnType("jsonb");

                b.HasKey("Id");

                b.HasIndex("CountryId");

                b.ToTable("LocalityCandidates", (string)null);
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.Localities.LocalitySynonym", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("integer");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <int>("Id"));

                b.Property <DateTimeOffset>("Created")
                .ValueGeneratedOnAdd()
                .HasColumnType("timestamp with time zone")
                .HasDefaultValueSql("now() at time zone 'utc'");

                b.Property <int?>("ExLocalityId")
                .HasColumnType("integer");

                b.Property <int>("LocalityId")
                .HasColumnType("integer");

                b.Property <DateTimeOffset>("Modified")
                .ValueGeneratedOnAdd()
                .HasColumnType("timestamp with time zone")
                .HasDefaultValueSql("now() at time zone 'utc'");

                b.Property <MultiLanguage <string> >("Names")
                .IsRequired()
                .HasColumnType("jsonb");

                b.Property <int>("SynonymType")
                .ValueGeneratedOnAdd()
                .HasColumnType("integer")
                .HasDefaultValue(1);

                b.HasKey("Id");

                b.HasIndex("ExLocalityId");

                NpgsqlIndexBuilderExtensions.IncludeProperties(b.HasIndex("ExLocalityId"), new[] { "SynonymType" });

                b.HasIndex("LocalityId");

                b.ToTable("LocalitySynonyms", (string)null);
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.LocalityZone", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("integer");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <int>("Id"));

                b.Property <DateTimeOffset>("Created")
                .ValueGeneratedOnAdd()
                .HasColumnType("timestamp with time zone")
                .HasDefaultValueSql("now() at time zone 'utc'");

                b.Property <bool>("IsActive")
                .HasColumnType("boolean");

                b.Property <int>("LocalityId")
                .HasColumnType("integer");

                b.Property <DateTimeOffset>("Modified")
                .ValueGeneratedOnAdd()
                .HasColumnType("timestamp with time zone")
                .HasDefaultValueSql("now() at time zone 'utc'");

                b.Property <MultiLanguage <string> >("Names")
                .IsRequired()
                .HasColumnType("jsonb");

                b.Property <string>("SupplierLocalityZoneCodes")
                .HasColumnType("jsonb");

                b.HasKey("Id");

                b.HasIndex("LocalityId");

                b.ToTable("LocalityZones");
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.Mappers.RawAccommodation", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("integer");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <int>("Id"));

                b.Property <JsonDocument>("Accommodation")
                .IsRequired()
                .HasColumnType("jsonb");

                b.Property <string>("CountryCode")
                .IsRequired()
                .HasColumnType("text");

                b.Property <MultiLanguage <string> >("CountryNames")
                .IsRequired()
                .HasColumnType("jsonb");

                b.Property <DateTimeOffset>("Created")
                .ValueGeneratedOnAdd()
                .HasColumnType("timestamp with time zone")
                .HasDefaultValueSql("now() at time zone 'utc'");

                b.Property <MultiLanguage <string> >("LocalityNames")
                .HasColumnType("jsonb");

                b.Property <MultiLanguage <string> >("LocalityZoneNames")
                .HasColumnType("jsonb");

                b.Property <DateTimeOffset>("Modified")
                .ValueGeneratedOnAdd()
                .HasColumnType("timestamp with time zone")
                .HasDefaultValueSql("now() at time zone 'utc'");

                b.Property <int>("Supplier")
                .HasColumnType("integer");

                b.Property <string>("SupplierAccommodationId")
                .IsRequired()
                .HasColumnType("text");

                b.Property <string>("SupplierLocalityCode")
                .HasColumnType("text");

                b.Property <string>("SupplierLocalityZoneCode")
                .HasColumnType("text");

                b.Property <string>("SupplierNameCode")
                .HasColumnType("text");

                b.HasKey("Id");

                b.ToTable("RawAccommodations");
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.ProjectionForGroupedAccommodations", b =>
            {
                b.Property <string>("SupplierCode")
                .HasColumnType("text");

                b.ToTable("ProjectionForGroupedAccommodations", null, t => t.ExcludeFromMigrations());
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.ProjectionForSupplierLocality", b =>
            {
                b.Property <MultiLanguage <string> >("LocalityNames")
                .HasColumnType("jsonb");

                b.Property <int>("Supplier")
                .HasColumnType("integer");

                b.ToTable("ProjectionForSupplierLocalities", null, t => t.ExcludeFromMigrations());
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.StaticData", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("integer");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <int>("Id"));

                b.Property <int>("Type")
                .HasColumnType("integer");

                b.Property <JsonDocument>("Value")
                .HasColumnType("jsonb");

                b.HasKey("Id");

                b.ToTable("StaticData");
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.Accommodations.RichAccommodationDetails", b =>
            {
                b.HasOne("HappyTravel.Nakijin.Data.Models.Country", "Country")
                .WithMany("Accommodations")
                .HasForeignKey("CountryId")
                .OnDelete(DeleteBehavior.Restrict)
                .IsRequired();

                b.HasOne("HappyTravel.Nakijin.Data.Models.Localities.Locality", "Locality")
                .WithMany("Accommodations")
                .HasForeignKey("LocalityId")
                .OnDelete(DeleteBehavior.Restrict);

                b.HasOne("HappyTravel.Nakijin.Data.Models.LocalityZone", "LocalityZone")
                .WithMany("Accommodations")
                .HasForeignKey("LocalityZoneId")
                .OnDelete(DeleteBehavior.Restrict);

                b.Navigation("Country");

                b.Navigation("Locality");

                b.Navigation("LocalityZone");
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.AccommodationUncertainMatches", b =>
            {
                b.HasOne("HappyTravel.Nakijin.Data.Models.Accommodations.RichAccommodationDetails", "AccommodationToMatch")
                .WithMany("AccommodationToMatchUncertainMatches")
                .HasForeignKey("HtIdToMerge")
                .OnDelete(DeleteBehavior.Restrict)
                .IsRequired();

                b.HasOne("HappyTravel.Nakijin.Data.Models.Accommodations.RichAccommodationDetails", "SourceAccommodation")
                .WithMany("SourceAccommodationUncertainMatches")
                .HasForeignKey("SourceHtId")
                .OnDelete(DeleteBehavior.Restrict)
                .IsRequired();

                b.Navigation("AccommodationToMatch");

                b.Navigation("SourceAccommodation");
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.HtAccommodationMapping", b =>
            {
                b.HasOne("HappyTravel.Nakijin.Data.Models.Accommodations.RichAccommodationDetails", "Accommodation")
                .WithMany("HtAccommodationMappings")
                .HasForeignKey("HtId")
                .OnDelete(DeleteBehavior.Restrict)
                .IsRequired();

                b.Navigation("Accommodation");
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.Localities.Locality", b =>
            {
                b.HasOne("HappyTravel.Nakijin.Data.Models.Country", "Country")
                .WithMany("Localities")
                .HasForeignKey("CountryId")
                .OnDelete(DeleteBehavior.Restrict)
                .IsRequired();

                b.Navigation("Country");
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.Localities.LocalityCandidate", b =>
            {
                b.HasOne("HappyTravel.Nakijin.Data.Models.Country", "Country")
                .WithMany("LocalityCandidates")
                .HasForeignKey("CountryId")
                .OnDelete(DeleteBehavior.Restrict)
                .IsRequired();

                b.Navigation("Country");
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.Localities.LocalitySynonym", b =>
            {
                b.HasOne("HappyTravel.Nakijin.Data.Models.Localities.Locality", "Locality")
                .WithMany("LocalitySynonyms")
                .HasForeignKey("LocalityId")
                .OnDelete(DeleteBehavior.Restrict)
                .IsRequired();

                b.Navigation("Locality");
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.LocalityZone", b =>
            {
                b.HasOne("HappyTravel.Nakijin.Data.Models.Localities.Locality", "Locality")
                .WithMany("LocalityZones")
                .HasForeignKey("LocalityId")
                .OnDelete(DeleteBehavior.Restrict)
                .IsRequired();

                b.Navigation("Locality");
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.Accommodations.RichAccommodationDetails", b =>
            {
                b.Navigation("AccommodationToMatchUncertainMatches");

                b.Navigation("HtAccommodationMappings");

                b.Navigation("SourceAccommodationUncertainMatches");
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.Country", b =>
            {
                b.Navigation("Accommodations");

                b.Navigation("Localities");

                b.Navigation("LocalityCandidates");
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.Localities.Locality", b =>
            {
                b.Navigation("Accommodations");

                b.Navigation("LocalitySynonyms");

                b.Navigation("LocalityZones");
            });

            modelBuilder.Entity("HappyTravel.Nakijin.Data.Models.LocalityZone", b =>
            {
                b.Navigation("Accommodations");
            });
#pragma warning restore 612, 618
        }
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
            .HasDefaultSchema("TransformationModule")
            .HasAnnotation("ProductVersion", "6.0.0")
            .HasAnnotation("Relational:MaxIdentifierLength", 63);
            NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "fuzzystrmatch");
            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Characters.Model.Character", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <string>("AvatarUrl")
                .HasColumnType("text");
                b.Property <string>("Description")
                .HasColumnType("text");
                b.Property <bool>("IsCurrent")
                .HasColumnType("boolean");
                b.Property <bool>("IsDefault")
                .HasColumnType("boolean");
                b.Property <bool>("IsNSFW")
                .HasColumnType("boolean");
                b.Property <string>("Name")
                .IsRequired()
                .HasColumnType("text");
                b.Property <string>("Nickname")
                .HasColumnType("text");
                b.Property <long>("OwnerID")
                .HasColumnType("bigint");
                b.Property <string>("PronounProviderFamily")
                .IsRequired()
                .HasColumnType("text");
                b.Property <long?>("RoleID")
                .HasColumnType("bigint");
                b.Property <long>("ServerID")
                .HasColumnType("bigint");
                b.Property <string>("Summary")
                .HasColumnType("text");
                b.HasKey("ID");
                b.HasIndex("OwnerID");
                b.HasIndex("RoleID");
                b.HasIndex("ServerID");
                b.ToTable("Characters", "CharacterModule", t => t.ExcludeFromMigrations());
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Characters.Model.CharacterRole", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <int>("Access")
                .HasColumnType("integer");
                b.Property <long>("DiscordID")
                .HasColumnType("bigint");
                b.Property <long>("ServerID")
                .HasColumnType("bigint");
                b.HasKey("ID");
                b.HasIndex("ServerID");
                b.ToTable("CharacterRoles", "CharacterModule", t => t.ExcludeFromMigrations());
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Characters.Model.Data.Image", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <string>("Caption")
                .IsRequired()
                .HasColumnType("text");
                b.Property <long?>("CharacterID")
                .HasColumnType("bigint");
                b.Property <bool>("IsNSFW")
                .HasColumnType("boolean");
                b.Property <string>("Name")
                .IsRequired()
                .HasColumnType("text");
                b.Property <string>("Url")
                .IsRequired()
                .HasColumnType("text");
                b.HasKey("ID");
                b.HasIndex("CharacterID");
                b.ToTable("Images", "CharacterModule", t => t.ExcludeFromMigrations());
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <string>("Description")
                .HasColumnType("text");
                b.Property <long>("DiscordID")
                .HasColumnType("bigint");
                b.Property <bool>("IsNSFW")
                .HasColumnType("boolean");
                b.Property <string>("JoinMessage")
                .HasColumnType("text");
                b.Property <bool>("SendJoinMessage")
                .HasColumnType("boolean");
                b.Property <bool>("SuppressPermissionWarnings")
                .HasColumnType("boolean");
                b.HasKey("ID");
                b.ToTable("Servers", "Core", t => t.ExcludeFromMigrations());
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.ServerUser", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <long>("ServerID")
                .HasColumnType("bigint");
                b.Property <long>("UserID")
                .HasColumnType("bigint");
                b.HasKey("ID");
                b.HasIndex("ServerID");
                b.HasIndex("UserID");
                b.ToTable("ServerUser", "Core", t => t.ExcludeFromMigrations());
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.User", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <string>("Bio")
                .IsRequired()
                .HasColumnType("text");
                b.Property <long>("DiscordID")
                .HasColumnType("bigint");
                b.Property <int?>("Timezone")
                .HasColumnType("integer");
                b.HasKey("ID");
                b.ToTable("Users", "Core", t => t.ExcludeFromMigrations());
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.Appearances.Appearance", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <long>("CharacterID")
                .HasColumnType("bigint");
                b.Property <double>("Height")
                .HasColumnType("double precision");
                b.Property <bool>("IsCurrent")
                .HasColumnType("boolean");
                b.Property <bool>("IsDefault")
                .HasColumnType("boolean");
                b.Property <double>("Muscularity")
                .HasColumnType("double precision");
                b.Property <double>("Weight")
                .HasColumnType("double precision");
                b.HasKey("ID");
                b.HasIndex("CharacterID");
                b.ToTable("Appearances", "TransformationModule");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.GlobalUserProtection", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <bool>("DefaultOptIn")
                .HasColumnType("boolean");
                b.Property <int>("DefaultType")
                .HasColumnType("integer");
                b.Property <long>("UserID")
                .HasColumnType("bigint");
                b.HasKey("ID");
                b.HasIndex("UserID");
                b.ToTable("GlobalUserProtections", "TransformationModule");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.ServerUserProtection", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <bool>("HasOptedIn")
                .HasColumnType("boolean");
                b.Property <long>("ServerID")
                .HasColumnType("bigint");
                b.Property <int>("Type")
                .HasColumnType("integer");
                b.Property <long>("UserID")
                .HasColumnType("bigint");
                b.HasKey("ID");
                b.HasIndex("ServerID");
                b.HasIndex("UserID");
                b.ToTable("ServerUserProtections", "TransformationModule");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.Species", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <string>("Author")
                .IsRequired()
                .HasColumnType("text");
                b.Property <string>("Description")
                .IsRequired()
                .HasColumnType("text");
                b.Property <string>("Name")
                .IsRequired()
                .HasColumnType("text");
                b.Property <long?>("ParentID")
                .HasColumnType("bigint");
                b.HasKey("ID");
                b.HasIndex("ParentID");
                b.ToTable("Species", "TransformationModule");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.Transformation", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <int?>("DefaultPattern")
                .HasColumnType("integer");
                b.Property <string>("Description")
                .IsRequired()
                .HasColumnType("text");
                b.Property <string>("GrowMessage")
                .IsRequired()
                .HasColumnType("text");
                b.Property <bool>("IsNSFW")
                .HasColumnType("boolean");
                b.Property <int>("Part")
                .HasColumnType("integer");
                b.Property <string>("ShiftMessage")
                .IsRequired()
                .HasColumnType("text");
                b.Property <string>("SingleDescription")
                .IsRequired()
                .HasColumnType("text");
                b.Property <long>("SpeciesID")
                .HasColumnType("bigint");
                b.Property <string>("UniformDescription")
                .HasColumnType("text");
                b.Property <string>("UniformGrowMessage")
                .HasColumnType("text");
                b.Property <string>("UniformShiftMessage")
                .HasColumnType("text");
                b.HasKey("ID");
                b.HasIndex("SpeciesID");
                b.ToTable("Transformations", "TransformationModule");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.UserProtectionEntry", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <long>("GlobalProtectionID")
                .HasColumnType("bigint");
                b.Property <int>("Type")
                .HasColumnType("integer");
                b.Property <long>("UserID")
                .HasColumnType("bigint");
                b.HasKey("ID");
                b.HasIndex("GlobalProtectionID");
                b.HasIndex("UserID");
                b.ToTable("UserProtectionEntries", "TransformationModule");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Characters.Model.Character", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "Owner")
                .WithMany()
                .HasForeignKey("OwnerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.HasOne("DIGOS.Ambassador.Plugins.Characters.Model.CharacterRole", "Role")
                .WithMany()
                .HasForeignKey("RoleID");
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany()
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.Navigation("Owner");
                b.Navigation("Role");
                b.Navigation("Server");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Characters.Model.CharacterRole", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany()
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.Navigation("Server");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Characters.Model.Data.Image", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Characters.Model.Character", null)
                .WithMany("Images")
                .HasForeignKey("CharacterID");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.ServerUser", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany("KnownUsers")
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "User")
                .WithMany()
                .HasForeignKey("UserID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.Navigation("Server");
                b.Navigation("User");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.Appearances.Appearance", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Characters.Model.Character", "Character")
                .WithMany()
                .HasForeignKey("CharacterID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.OwnsMany("DIGOS.Ambassador.Plugins.Transformations.Model.Appearances.AppearanceComponent", "Components", b1 =>
                {
                    b1.Property <long>("ID")
                    .ValueGeneratedOnAdd()
                    .HasColumnType("bigint");
                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b1.Property <long>("ID"));
                    b1.Property <long>("AppearanceID")
                    .HasColumnType("bigint");
                    b1.Property <int>("Chirality")
                    .HasColumnType("integer");
                    b1.Property <int?>("Pattern")
                    .HasColumnType("integer");
                    b1.Property <long>("TransformationID")
                    .HasColumnType("bigint");
                    b1.HasKey("ID");
                    b1.HasIndex("AppearanceID");
                    b1.HasIndex("TransformationID");
                    b1.ToTable("AppearanceComponents", "TransformationModule");
                    b1.WithOwner()
                    .HasForeignKey("AppearanceID");
                    b1.HasOne("DIGOS.Ambassador.Plugins.Transformations.Model.Transformation", "Transformation")
                    .WithMany()
                    .HasForeignKey("TransformationID")
                    .OnDelete(DeleteBehavior.Cascade)
                    .IsRequired();
                    b1.OwnsOne("DIGOS.Ambassador.Plugins.Transformations.Model.Appearances.Colour", "BaseColour", b2 =>
                    {
                        b2.Property <long>("AppearanceComponentID")
                        .HasColumnType("bigint");
                        b2.Property <int?>("Modifier")
                        .HasColumnType("integer");
                        b2.Property <int>("Shade")
                        .HasColumnType("integer");
                        b2.HasKey("AppearanceComponentID");
                        b2.ToTable("BaseColours", "TransformationModule");
                        b2.WithOwner()
                        .HasForeignKey("AppearanceComponentID");
                    });
                    b1.OwnsOne("DIGOS.Ambassador.Plugins.Transformations.Model.Appearances.Colour", "PatternColour", b2 =>
                    {
                        b2.Property <long>("AppearanceComponentID")
                        .HasColumnType("bigint");
                        b2.Property <int?>("Modifier")
                        .HasColumnType("integer");
                        b2.Property <int>("Shade")
                        .HasColumnType("integer");
                        b2.HasKey("AppearanceComponentID");
                        b2.ToTable("PatternColours", "TransformationModule");
                        b2.WithOwner()
                        .HasForeignKey("AppearanceComponentID");
                    });
                    b1.Navigation("BaseColour")
                    .IsRequired();
                    b1.Navigation("PatternColour");
                    b1.Navigation("Transformation");
                });
                b.Navigation("Character");
                b.Navigation("Components");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.GlobalUserProtection", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "User")
                .WithMany()
                .HasForeignKey("UserID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.Navigation("User");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.ServerUserProtection", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany()
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "User")
                .WithMany()
                .HasForeignKey("UserID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.Navigation("Server");
                b.Navigation("User");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.Species", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Transformations.Model.Species", "Parent")
                .WithMany()
                .HasForeignKey("ParentID");
                b.Navigation("Parent");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.Transformation", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Transformations.Model.Species", "Species")
                .WithMany()
                .HasForeignKey("SpeciesID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.OwnsOne("DIGOS.Ambassador.Plugins.Transformations.Model.Appearances.Colour", "DefaultBaseColour", b1 =>
                {
                    b1.Property <long>("TransformationID")
                    .HasColumnType("bigint");
                    b1.Property <int?>("Modifier")
                    .HasColumnType("integer");
                    b1.Property <int>("Shade")
                    .HasColumnType("integer");
                    b1.HasKey("TransformationID");
                    b1.ToTable("DefaultBaseColours", "TransformationModule");
                    b1.WithOwner()
                    .HasForeignKey("TransformationID");
                });
                b.OwnsOne("DIGOS.Ambassador.Plugins.Transformations.Model.Appearances.Colour", "DefaultPatternColour", b1 =>
                {
                    b1.Property <long>("TransformationID")
                    .HasColumnType("bigint");
                    b1.Property <int?>("Modifier")
                    .HasColumnType("integer");
                    b1.Property <int>("Shade")
                    .HasColumnType("integer");
                    b1.HasKey("TransformationID");
                    b1.ToTable("DefaultPatternColours", "TransformationModule");
                    b1.WithOwner()
                    .HasForeignKey("TransformationID");
                });
                b.Navigation("DefaultBaseColour")
                .IsRequired();
                b.Navigation("DefaultPatternColour");
                b.Navigation("Species");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.UserProtectionEntry", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Transformations.Model.GlobalUserProtection", "GlobalProtection")
                .WithMany("UserListing")
                .HasForeignKey("GlobalProtectionID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "User")
                .WithMany()
                .HasForeignKey("UserID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.Navigation("GlobalProtection");
                b.Navigation("User");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Characters.Model.Character", b =>
            {
                b.Navigation("Images");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", b =>
            {
                b.Navigation("KnownUsers");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.GlobalUserProtection", b =>
            {
                b.Navigation("UserListing");
            });
#pragma warning restore 612, 618
        }
        protected override void BuildModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
            .HasDefaultSchema("RoleplayModule")
            .HasAnnotation("ProductVersion", "6.0.0")
            .HasAnnotation("Relational:MaxIdentifierLength", 63);

            NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "fuzzystrmatch");
            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <string>("Description")
                .HasColumnType("text")
                .HasColumnName("description");

                b.Property <long>("DiscordID")
                .HasColumnType("bigint")
                .HasColumnName("discord_id");

                b.Property <bool>("IsNSFW")
                .HasColumnType("boolean")
                .HasColumnName("is_nsfw");

                b.Property <string>("JoinMessage")
                .HasColumnType("text")
                .HasColumnName("join_message");

                b.Property <bool>("SendJoinMessage")
                .HasColumnType("boolean")
                .HasColumnName("send_join_message");

                b.Property <bool>("SuppressPermissionWarnings")
                .HasColumnType("boolean")
                .HasColumnName("suppress_permission_warnings");

                b.HasKey("ID")
                .HasName("pk_servers");

                b.ToTable("Servers", "Core", t => t.ExcludeFromMigrations());
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.ServerUser", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <long>("ServerID")
                .HasColumnType("bigint")
                .HasColumnName("server_id");

                b.Property <long>("UserID")
                .HasColumnType("bigint")
                .HasColumnName("user_id");

                b.HasKey("ID")
                .HasName("pk_server_user");

                b.HasIndex("ServerID")
                .HasDatabaseName("ix_server_user_server_id");

                b.HasIndex("UserID")
                .HasDatabaseName("ix_server_user_user_id");

                b.ToTable("ServerUser", "Core", t => t.ExcludeFromMigrations());
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.User", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <string>("Bio")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("bio");

                b.Property <long>("DiscordID")
                .HasColumnType("bigint")
                .HasColumnName("discord_id");

                b.Property <int?>("Timezone")
                .HasColumnType("integer")
                .HasColumnName("timezone");

                b.HasKey("ID")
                .HasName("pk_users");

                b.ToTable("Users", "Core", t => t.ExcludeFromMigrations());
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Roleplaying.Model.Roleplay", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <long?>("ActiveChannelID")
                .HasColumnType("bigint")
                .HasColumnName("active_channel_id");

                b.Property <long?>("DedicatedChannelID")
                .HasColumnType("bigint")
                .HasColumnName("dedicated_channel_id");

                b.Property <bool>("IsActive")
                .HasColumnType("boolean")
                .HasColumnName("is_active");

                b.Property <bool>("IsNSFW")
                .HasColumnType("boolean")
                .HasColumnName("is_nsfw");

                b.Property <bool>("IsPublic")
                .HasColumnType("boolean")
                .HasColumnName("is_public");

                b.Property <DateTimeOffset?>("LastUpdated")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("last_updated");

                b.Property <string>("Name")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <long>("OwnerID")
                .HasColumnType("bigint")
                .HasColumnName("owner_id");

                b.Property <long>("ServerID")
                .HasColumnType("bigint")
                .HasColumnName("server_id");

                b.Property <string>("Summary")
                .HasColumnType("text")
                .HasColumnName("summary");

                b.HasKey("ID")
                .HasName("pk_roleplays");

                b.HasIndex("OwnerID")
                .HasDatabaseName("ix_roleplays_owner_id");

                b.HasIndex("ServerID")
                .HasDatabaseName("ix_roleplays_server_id");

                b.ToTable("Roleplays", "RoleplayModule");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Roleplaying.Model.RoleplayParticipant", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <long>("RoleplayID")
                .HasColumnType("bigint")
                .HasColumnName("roleplay_id");

                b.Property <int>("Status")
                .HasColumnType("integer")
                .HasColumnName("status");

                b.Property <long>("UserID")
                .HasColumnType("bigint")
                .HasColumnName("user_id");

                b.HasKey("ID")
                .HasName("pk_roleplay_participants");

                b.HasIndex("RoleplayID")
                .HasDatabaseName("ix_roleplay_participants_roleplay_id");

                b.HasIndex("UserID")
                .HasDatabaseName("ix_roleplay_participants_user_id");

                b.ToTable("RoleplayParticipants", "RoleplayModule");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Roleplaying.Model.ServerRoleplaySettings", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <long?>("ArchiveChannel")
                .HasColumnType("bigint")
                .HasColumnName("archive_channel");

                b.Property <long?>("DedicatedRoleplayChannelsCategory")
                .HasColumnType("bigint")
                .HasColumnName("dedicated_roleplay_channels_category");

                b.Property <long?>("DefaultUserRole")
                .HasColumnType("bigint")
                .HasColumnName("default_user_role");

                b.Property <long>("ServerID")
                .HasColumnType("bigint")
                .HasColumnName("server_id");

                b.HasKey("ID")
                .HasName("pk_server_settings");

                b.HasIndex("ServerID")
                .HasDatabaseName("ix_server_settings_server_id");

                b.ToTable("ServerSettings", "RoleplayModule");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Roleplaying.Model.UserMessage", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <long>("AuthorID")
                .HasColumnType("bigint")
                .HasColumnName("author_id");

                b.Property <string>("AuthorNickname")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("author_nickname");

                b.Property <string>("Contents")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("contents");

                b.Property <long>("DiscordMessageID")
                .HasColumnType("bigint")
                .HasColumnName("discord_message_id");

                b.Property <long?>("RoleplayID")
                .HasColumnType("bigint")
                .HasColumnName("roleplay_id");

                b.Property <DateTimeOffset>("Timestamp")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("timestamp");

                b.HasKey("ID")
                .HasName("pk_user_messages");

                b.HasIndex("AuthorID")
                .HasDatabaseName("ix_user_messages_author_id");

                b.HasIndex("RoleplayID")
                .HasDatabaseName("ix_user_messages_roleplay_id");

                b.ToTable("UserMessages", "RoleplayModule");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.ServerUser", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany("KnownUsers")
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_server_user_servers_server_id");

                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "User")
                .WithMany()
                .HasForeignKey("UserID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_server_user_users_user_id");

                b.Navigation("Server");

                b.Navigation("User");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Roleplaying.Model.Roleplay", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "Owner")
                .WithMany()
                .HasForeignKey("OwnerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_roleplays_users_owner_id");

                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany()
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_roleplays_servers_server_id");

                b.Navigation("Owner");

                b.Navigation("Server");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Roleplaying.Model.RoleplayParticipant", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Roleplaying.Model.Roleplay", "Roleplay")
                .WithMany("ParticipatingUsers")
                .HasForeignKey("RoleplayID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_roleplay_participants_roleplays_roleplay_id");

                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "User")
                .WithMany()
                .HasForeignKey("UserID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_roleplay_participants_users_user_id");

                b.Navigation("Roleplay");

                b.Navigation("User");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Roleplaying.Model.ServerRoleplaySettings", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany()
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_server_settings_servers_server_id");

                b.Navigation("Server");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Roleplaying.Model.UserMessage", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "Author")
                .WithMany()
                .HasForeignKey("AuthorID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_user_messages_users_author_id");

                b.HasOne("DIGOS.Ambassador.Plugins.Roleplaying.Model.Roleplay", null)
                .WithMany("Messages")
                .HasForeignKey("RoleplayID")
                .HasConstraintName("fk_user_messages_roleplays_roleplay_id");

                b.Navigation("Author");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", b =>
            {
                b.Navigation("KnownUsers");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Roleplaying.Model.Roleplay", b =>
            {
                b.Navigation("Messages");

                b.Navigation("ParticipatingUsers");
            });
#pragma warning restore 612, 618
        }
Beispiel #7
0
        protected override void BuildModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
            .HasDefaultSchema("ModerationModule")
            .HasAnnotation("ProductVersion", "6.0.0")
            .HasAnnotation("Relational:MaxIdentifierLength", 63);

            NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "fuzzystrmatch");
            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <string>("Description")
                .HasColumnType("text")
                .HasColumnName("description");

                b.Property <long>("DiscordID")
                .HasColumnType("bigint")
                .HasColumnName("discord_id");

                b.Property <bool>("IsNSFW")
                .HasColumnType("boolean")
                .HasColumnName("is_nsfw");

                b.Property <string>("JoinMessage")
                .HasColumnType("text")
                .HasColumnName("join_message");

                b.Property <bool>("SendJoinMessage")
                .HasColumnType("boolean")
                .HasColumnName("send_join_message");

                b.Property <bool>("SuppressPermissionWarnings")
                .HasColumnType("boolean")
                .HasColumnName("suppress_permission_warnings");

                b.HasKey("ID")
                .HasName("pk_servers");

                b.ToTable("Servers", "Core", t => t.ExcludeFromMigrations());
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.ServerUser", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <long>("ServerID")
                .HasColumnType("bigint")
                .HasColumnName("server_id");

                b.Property <long>("UserID")
                .HasColumnType("bigint")
                .HasColumnName("user_id");

                b.HasKey("ID")
                .HasName("pk_server_user");

                b.HasIndex("ServerID")
                .HasDatabaseName("ix_server_user_server_id");

                b.HasIndex("UserID")
                .HasDatabaseName("ix_server_user_user_id");

                b.ToTable("ServerUser", "Core", t => t.ExcludeFromMigrations());
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.User", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <string>("Bio")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("bio");

                b.Property <long>("DiscordID")
                .HasColumnType("bigint")
                .HasColumnName("discord_id");

                b.Property <int?>("Timezone")
                .HasColumnType("integer")
                .HasColumnName("timezone");

                b.HasKey("ID")
                .HasName("pk_users");

                b.ToTable("Users", "Core", t => t.ExcludeFromMigrations());
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Moderation.Model.ServerModerationSettings", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <long?>("ModerationLogChannel")
                .HasColumnType("bigint")
                .HasColumnName("moderation_log_channel");

                b.Property <long?>("MonitoringChannel")
                .HasColumnType("bigint")
                .HasColumnName("monitoring_channel");

                b.Property <long>("ServerID")
                .HasColumnType("bigint")
                .HasColumnName("server_id");

                b.Property <int>("WarningThreshold")
                .HasColumnType("integer")
                .HasColumnName("warning_threshold");

                b.HasKey("ID")
                .HasName("pk_server_moderation_settings");

                b.HasIndex("ServerID")
                .HasDatabaseName("ix_server_moderation_settings_server_id");

                b.ToTable("ServerModerationSettings", "ModerationModule");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Moderation.Model.UserBan", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <long>("AuthorID")
                .HasColumnType("bigint")
                .HasColumnName("author_id");

                b.Property <DateTimeOffset>("CreatedAt")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("created_at");

                b.Property <DateTimeOffset?>("ExpiresOn")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("expires_on");

                b.Property <long?>("MessageID")
                .HasColumnType("bigint")
                .HasColumnName("message_id");

                b.Property <string>("Reason")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("reason");

                b.Property <long>("ServerID")
                .HasColumnType("bigint")
                .HasColumnName("server_id");

                b.Property <DateTimeOffset>("UpdatedAt")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("updated_at");

                b.Property <long>("UserID")
                .HasColumnType("bigint")
                .HasColumnName("user_id");

                b.HasKey("ID")
                .HasName("pk_user_bans");

                b.HasIndex("AuthorID")
                .HasDatabaseName("ix_user_bans_author_id");

                b.HasIndex("ServerID")
                .HasDatabaseName("ix_user_bans_server_id");

                b.HasIndex("UserID")
                .HasDatabaseName("ix_user_bans_user_id");

                b.ToTable("UserBans", "ModerationModule");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Moderation.Model.UserNote", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <long>("AuthorID")
                .HasColumnType("bigint")
                .HasColumnName("author_id");

                b.Property <string>("Content")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("content");

                b.Property <DateTimeOffset>("CreatedAt")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("created_at");

                b.Property <long>("ServerID")
                .HasColumnType("bigint")
                .HasColumnName("server_id");

                b.Property <DateTimeOffset>("UpdatedAt")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("updated_at");

                b.Property <long>("UserID")
                .HasColumnType("bigint")
                .HasColumnName("user_id");

                b.HasKey("ID")
                .HasName("pk_user_notes");

                b.HasIndex("AuthorID")
                .HasDatabaseName("ix_user_notes_author_id");

                b.HasIndex("ServerID")
                .HasDatabaseName("ix_user_notes_server_id");

                b.HasIndex("UserID")
                .HasDatabaseName("ix_user_notes_user_id");

                b.ToTable("UserNotes", "ModerationModule");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Moderation.Model.UserWarning", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <long>("AuthorID")
                .HasColumnType("bigint")
                .HasColumnName("author_id");

                b.Property <DateTimeOffset>("CreatedAt")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("created_at");

                b.Property <DateTimeOffset?>("ExpiresOn")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("expires_on");

                b.Property <long?>("MessageID")
                .HasColumnType("bigint")
                .HasColumnName("message_id");

                b.Property <string>("Reason")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("reason");

                b.Property <long>("ServerID")
                .HasColumnType("bigint")
                .HasColumnName("server_id");

                b.Property <DateTimeOffset>("UpdatedAt")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("updated_at");

                b.Property <long>("UserID")
                .HasColumnType("bigint")
                .HasColumnName("user_id");

                b.HasKey("ID")
                .HasName("pk_user_warnings");

                b.HasIndex("AuthorID")
                .HasDatabaseName("ix_user_warnings_author_id");

                b.HasIndex("ServerID")
                .HasDatabaseName("ix_user_warnings_server_id");

                b.HasIndex("UserID")
                .HasDatabaseName("ix_user_warnings_user_id");

                b.ToTable("UserWarnings", "ModerationModule");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.ServerUser", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany("KnownUsers")
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_server_user_servers_server_id");

                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "User")
                .WithMany()
                .HasForeignKey("UserID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_server_user_users_user_id");

                b.Navigation("Server");

                b.Navigation("User");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Moderation.Model.ServerModerationSettings", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany()
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_server_moderation_settings_servers_server_id");

                b.Navigation("Server");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Moderation.Model.UserBan", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "Author")
                .WithMany()
                .HasForeignKey("AuthorID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_user_bans_users_author_id");

                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany()
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_user_bans_servers_server_id");

                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "User")
                .WithMany()
                .HasForeignKey("UserID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_user_bans_users_user_id");

                b.Navigation("Author");

                b.Navigation("Server");

                b.Navigation("User");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Moderation.Model.UserNote", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "Author")
                .WithMany()
                .HasForeignKey("AuthorID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_user_notes_users_author_id");

                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany()
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_user_notes_servers_server_id");

                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "User")
                .WithMany()
                .HasForeignKey("UserID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_user_notes_users_user_id");

                b.Navigation("Author");

                b.Navigation("Server");

                b.Navigation("User");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Moderation.Model.UserWarning", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "Author")
                .WithMany()
                .HasForeignKey("AuthorID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_user_warnings_users_author_id");

                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany()
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_user_warnings_servers_server_id");

                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "User")
                .WithMany()
                .HasForeignKey("UserID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_user_warnings_users_user_id");

                b.Navigation("Author");

                b.Navigation("Server");

                b.Navigation("User");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", b =>
            {
                b.Navigation("KnownUsers");
            });
#pragma warning restore 612, 618
        }
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
            .HasDefaultSchema("KinkModule")
            .HasAnnotation("ProductVersion", "6.0.0")
            .HasAnnotation("Relational:MaxIdentifierLength", 63);
            NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "fuzzystrmatch");
            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.User", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <string>("Bio")
                .IsRequired()
                .HasColumnType("text");
                b.Property <long>("DiscordID")
                .HasColumnType("bigint");
                b.Property <int?>("Timezone")
                .HasColumnType("integer");
                b.HasKey("ID");
                b.ToTable("Users", "Core", t => t.ExcludeFromMigrations());
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Kinks.Model.Kink", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <int>("Category")
                .HasColumnType("integer");
                b.Property <string>("Description")
                .IsRequired()
                .HasColumnType("text");
                b.Property <long>("FListID")
                .HasColumnType("bigint");
                b.Property <string>("Name")
                .IsRequired()
                .HasColumnType("text");
                b.HasKey("ID");
                b.HasIndex("FListID")
                .IsUnique();
                b.ToTable("Kinks", "KinkModule");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Kinks.Model.UserKink", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint");
                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));
                b.Property <long>("KinkID")
                .HasColumnType("bigint");
                b.Property <int>("Preference")
                .HasColumnType("integer");
                b.Property <long>("UserID")
                .HasColumnType("bigint");
                b.HasKey("ID");
                b.HasIndex("KinkID");
                b.HasIndex("UserID");
                b.ToTable("UserKinks", "KinkModule");
            });
            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Kinks.Model.UserKink", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Kinks.Model.Kink", "Kink")
                .WithMany()
                .HasForeignKey("KinkID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "User")
                .WithMany()
                .HasForeignKey("UserID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
                b.Navigation("Kink");
                b.Navigation("User");
            });
#pragma warning restore 612, 618
        }
Beispiel #9
0
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
            .HasAnnotation("ProductVersion", "6.0.1")
            .HasAnnotation("Relational:MaxIdentifierLength", 63);

            NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "uuid-ossp");
            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);

            modelBuilder.Entity("Player.Api.Data.Data.Models.ApplicationEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <Guid?>("ApplicationTemplateId")
                .HasColumnType("uuid")
                .HasColumnName("application_template_id");

                b.Property <bool?>("Embeddable")
                .HasColumnType("boolean")
                .HasColumnName("embeddable");

                b.Property <string>("Icon")
                .HasColumnType("text")
                .HasColumnName("icon");

                b.Property <bool?>("LoadInBackground")
                .HasColumnType("boolean")
                .HasColumnName("load_in_background");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <string>("Url")
                .HasColumnType("text")
                .HasColumnName("url");

                b.Property <Guid>("ViewId")
                .HasColumnType("uuid")
                .HasColumnName("view_id");

                b.HasKey("Id");

                b.HasIndex("ApplicationTemplateId");

                b.HasIndex("ViewId");

                b.ToTable("applications");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.ApplicationInstanceEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <Guid>("ApplicationId")
                .HasColumnType("uuid")
                .HasColumnName("application_id");

                b.Property <float>("DisplayOrder")
                .HasColumnType("real")
                .HasColumnName("display_order");

                b.Property <Guid>("TeamId")
                .HasColumnType("uuid")
                .HasColumnName("team_id");

                b.HasKey("Id");

                b.HasIndex("ApplicationId");

                b.HasIndex("TeamId");

                b.ToTable("application_instances");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.ApplicationTemplateEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <bool>("Embeddable")
                .HasColumnType("boolean")
                .HasColumnName("embeddable");

                b.Property <string>("Icon")
                .HasColumnType("text")
                .HasColumnName("icon");

                b.Property <bool>("LoadInBackground")
                .HasColumnType("boolean")
                .HasColumnName("load_in_background");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <string>("Url")
                .HasColumnType("text")
                .HasColumnName("url");

                b.HasKey("Id");

                b.ToTable("application_templates");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.FileEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <string>("Path")
                .HasColumnType("text")
                .HasColumnName("path");

                b.Property <List <Guid> >("TeamIds")
                .HasColumnType("uuid[]")
                .HasColumnName("team_ids");

                b.Property <Guid?>("ViewId")
                .HasColumnType("uuid")
                .HasColumnName("view_id");

                b.HasKey("Id");

                b.HasIndex("ViewId");

                b.ToTable("files");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.NotificationEntity", b =>
            {
                b.Property <int>("Key")
                .ValueGeneratedOnAdd()
                .HasColumnType("integer")
                .HasColumnName("key");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <int>("Key"));

                b.Property <DateTime>("BroadcastTime")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("broadcast_time");

                b.Property <Guid>("FromId")
                .HasColumnType("uuid")
                .HasColumnName("from_id");

                b.Property <string>("FromName")
                .HasColumnType("text")
                .HasColumnName("from_name");

                b.Property <int>("FromType")
                .HasColumnType("integer")
                .HasColumnName("from_type");

                b.Property <string>("Link")
                .HasColumnType("text")
                .HasColumnName("link");

                b.Property <int>("Priority")
                .HasColumnType("integer")
                .HasColumnName("priority");

                b.Property <string>("Subject")
                .HasColumnType("text")
                .HasColumnName("subject");

                b.Property <string>("Text")
                .HasColumnType("text")
                .HasColumnName("text");

                b.Property <Guid>("ToId")
                .HasColumnType("uuid")
                .HasColumnName("to_id");

                b.Property <string>("ToName")
                .HasColumnType("text")
                .HasColumnName("to_name");

                b.Property <int>("ToType")
                .HasColumnType("integer")
                .HasColumnName("to_type");

                b.Property <Guid?>("ViewId")
                .HasColumnType("uuid")
                .HasColumnName("view_id");

                b.HasKey("Key");

                b.ToTable("notifications");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.PermissionEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <string>("Description")
                .HasColumnType("text")
                .HasColumnName("description");

                b.Property <string>("Key")
                .HasColumnType("text")
                .HasColumnName("key");

                b.Property <bool>("ReadOnly")
                .HasColumnType("boolean")
                .HasColumnName("read_only");

                b.Property <string>("Value")
                .HasColumnType("text")
                .HasColumnName("value");

                b.HasKey("Id");

                b.HasIndex("Key", "Value")
                .IsUnique();

                b.ToTable("permissions");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.RoleEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.HasKey("Id");

                b.HasIndex("Name")
                .IsUnique();

                b.ToTable("roles");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.RolePermissionEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <Guid>("PermissionId")
                .HasColumnType("uuid")
                .HasColumnName("permission_id");

                b.Property <Guid>("RoleId")
                .HasColumnType("uuid")
                .HasColumnName("role_id");

                b.HasKey("Id");

                b.HasIndex("PermissionId");

                b.HasIndex("RoleId", "PermissionId")
                .IsUnique();

                b.ToTable("role_permissions");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.TeamEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <Guid?>("RoleId")
                .HasColumnType("uuid")
                .HasColumnName("role_id");

                b.Property <Guid>("ViewId")
                .HasColumnType("uuid")
                .HasColumnName("view_id");

                b.HasKey("Id");

                b.HasIndex("RoleId");

                b.HasIndex("ViewId");

                b.ToTable("teams");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.TeamMembershipEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <Guid?>("RoleId")
                .HasColumnType("uuid")
                .HasColumnName("role_id");

                b.Property <Guid>("TeamId")
                .HasColumnType("uuid")
                .HasColumnName("team_id");

                b.Property <Guid>("UserId")
                .HasColumnType("uuid")
                .HasColumnName("user_id");

                b.Property <Guid>("ViewMembershipId")
                .HasColumnType("uuid")
                .HasColumnName("view_membership_id");

                b.HasKey("Id");

                b.HasIndex("RoleId");

                b.HasIndex("UserId");

                b.HasIndex("ViewMembershipId");

                b.HasIndex("TeamId", "UserId")
                .IsUnique();

                b.ToTable("team_memberships");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.TeamPermissionEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <Guid>("PermissionId")
                .HasColumnType("uuid")
                .HasColumnName("permission_id");

                b.Property <Guid>("TeamId")
                .HasColumnType("uuid")
                .HasColumnName("team_id");

                b.HasKey("Id");

                b.HasIndex("PermissionId");

                b.HasIndex("TeamId", "PermissionId")
                .IsUnique();

                b.ToTable("team_permissions");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.UserEntity", b =>
            {
                b.Property <int>("Key")
                .ValueGeneratedOnAdd()
                .HasColumnType("integer")
                .HasColumnName("key");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <int>("Key"));

                b.Property <Guid>("Id")
                .HasColumnType("uuid")
                .HasColumnName("id");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <Guid?>("RoleId")
                .HasColumnType("uuid")
                .HasColumnName("role_id");

                b.HasKey("Key");

                b.HasIndex("Id")
                .IsUnique();

                b.HasIndex("RoleId");

                b.ToTable("users");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.UserPermissionEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <Guid>("PermissionId")
                .HasColumnType("uuid")
                .HasColumnName("permission_id");

                b.Property <Guid>("UserId")
                .HasColumnType("uuid")
                .HasColumnName("user_id");

                b.HasKey("Id");

                b.HasIndex("PermissionId");

                b.HasIndex("UserId", "PermissionId")
                .IsUnique();

                b.ToTable("user_permissions");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.ViewEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <string>("Description")
                .HasColumnType("text")
                .HasColumnName("description");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <Guid?>("ParentViewId")
                .HasColumnType("uuid")
                .HasColumnName("parent_view_id");

                b.Property <int>("Status")
                .HasColumnType("integer")
                .HasColumnName("status");

                b.HasKey("Id");

                b.HasIndex("ParentViewId");

                b.ToTable("views");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.ViewMembershipEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <Guid?>("PrimaryTeamMembershipId")
                .HasColumnType("uuid")
                .HasColumnName("primary_team_membership_id");

                b.Property <Guid>("UserId")
                .HasColumnType("uuid")
                .HasColumnName("user_id");

                b.Property <Guid>("ViewId")
                .HasColumnType("uuid")
                .HasColumnName("view_id");

                b.HasKey("Id");

                b.HasIndex("PrimaryTeamMembershipId");

                b.HasIndex("UserId");

                b.HasIndex("ViewId", "UserId")
                .IsUnique();

                b.ToTable("view_memberships");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.Webhooks.PendingEventEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <int>("EventType")
                .HasColumnType("integer")
                .HasColumnName("event_type");

                b.Property <string>("Payload")
                .HasColumnType("text")
                .HasColumnName("payload");

                b.Property <Guid>("SubscriptionId")
                .HasColumnType("uuid")
                .HasColumnName("subscription_id");

                b.Property <DateTime>("Timestamp")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("timestamp");

                b.HasKey("Id");

                b.HasIndex("SubscriptionId");

                b.ToTable("pending_events");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.Webhooks.WebhookSubscriptionEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <string>("CallbackUri")
                .HasColumnType("text")
                .HasColumnName("callback_uri");

                b.Property <string>("ClientId")
                .HasColumnType("text")
                .HasColumnName("client_id");

                b.Property <string>("ClientSecret")
                .HasColumnType("text")
                .HasColumnName("client_secret");

                b.Property <string>("LastError")
                .HasColumnType("text")
                .HasColumnName("last_error");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.HasKey("Id");

                b.ToTable("webhooks");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.Webhooks.WebhookSubscriptionEventTypeEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <int>("EventType")
                .HasColumnType("integer")
                .HasColumnName("event_type");

                b.Property <Guid>("SubscriptionId")
                .HasColumnType("uuid")
                .HasColumnName("subscription_id");

                b.HasKey("Id");

                b.HasIndex("SubscriptionId", "EventType")
                .IsUnique();

                b.ToTable("webhook_subscription_event_types");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.ApplicationEntity", b =>
            {
                b.HasOne("Player.Api.Data.Data.Models.ApplicationTemplateEntity", "Template")
                .WithMany()
                .HasForeignKey("ApplicationTemplateId");

                b.HasOne("Player.Api.Data.Data.Models.ViewEntity", "View")
                .WithMany("Applications")
                .HasForeignKey("ViewId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Template");

                b.Navigation("View");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.ApplicationInstanceEntity", b =>
            {
                b.HasOne("Player.Api.Data.Data.Models.ApplicationEntity", "Application")
                .WithMany()
                .HasForeignKey("ApplicationId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("Player.Api.Data.Data.Models.TeamEntity", "Team")
                .WithMany("Applications")
                .HasForeignKey("TeamId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Application");

                b.Navigation("Team");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.FileEntity", b =>
            {
                b.HasOne("Player.Api.Data.Data.Models.ViewEntity", "View")
                .WithMany("Files")
                .HasForeignKey("ViewId");

                b.Navigation("View");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.RolePermissionEntity", b =>
            {
                b.HasOne("Player.Api.Data.Data.Models.PermissionEntity", "Permission")
                .WithMany()
                .HasForeignKey("PermissionId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("Player.Api.Data.Data.Models.RoleEntity", "Role")
                .WithMany("Permissions")
                .HasForeignKey("RoleId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Permission");

                b.Navigation("Role");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.TeamEntity", b =>
            {
                b.HasOne("Player.Api.Data.Data.Models.RoleEntity", "Role")
                .WithMany()
                .HasForeignKey("RoleId");

                b.HasOne("Player.Api.Data.Data.Models.ViewEntity", "View")
                .WithMany("Teams")
                .HasForeignKey("ViewId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Role");

                b.Navigation("View");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.TeamMembershipEntity", b =>
            {
                b.HasOne("Player.Api.Data.Data.Models.RoleEntity", "Role")
                .WithMany()
                .HasForeignKey("RoleId");

                b.HasOne("Player.Api.Data.Data.Models.TeamEntity", "Team")
                .WithMany("Memberships")
                .HasForeignKey("TeamId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("Player.Api.Data.Data.Models.UserEntity", "User")
                .WithMany("TeamMemberships")
                .HasForeignKey("UserId")
                .HasPrincipalKey("Id")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("Player.Api.Data.Data.Models.ViewMembershipEntity", "ViewMembership")
                .WithMany("TeamMemberships")
                .HasForeignKey("ViewMembershipId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Role");

                b.Navigation("Team");

                b.Navigation("User");

                b.Navigation("ViewMembership");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.TeamPermissionEntity", b =>
            {
                b.HasOne("Player.Api.Data.Data.Models.PermissionEntity", "Permission")
                .WithMany()
                .HasForeignKey("PermissionId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("Player.Api.Data.Data.Models.TeamEntity", "Team")
                .WithMany("Permissions")
                .HasForeignKey("TeamId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Permission");

                b.Navigation("Team");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.UserEntity", b =>
            {
                b.HasOne("Player.Api.Data.Data.Models.RoleEntity", "Role")
                .WithMany()
                .HasForeignKey("RoleId");

                b.Navigation("Role");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.UserPermissionEntity", b =>
            {
                b.HasOne("Player.Api.Data.Data.Models.PermissionEntity", "Permission")
                .WithMany()
                .HasForeignKey("PermissionId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("Player.Api.Data.Data.Models.UserEntity", "User")
                .WithMany("Permissions")
                .HasForeignKey("UserId")
                .HasPrincipalKey("Id")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Permission");

                b.Navigation("User");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.ViewEntity", b =>
            {
                b.HasOne("Player.Api.Data.Data.Models.ViewEntity", "ParentView")
                .WithMany()
                .HasForeignKey("ParentViewId");

                b.Navigation("ParentView");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.ViewMembershipEntity", b =>
            {
                b.HasOne("Player.Api.Data.Data.Models.TeamMembershipEntity", "PrimaryTeamMembership")
                .WithMany()
                .HasForeignKey("PrimaryTeamMembershipId");

                b.HasOne("Player.Api.Data.Data.Models.UserEntity", "User")
                .WithMany("ViewMemberships")
                .HasForeignKey("UserId")
                .HasPrincipalKey("Id")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("Player.Api.Data.Data.Models.ViewEntity", "View")
                .WithMany("Memberships")
                .HasForeignKey("ViewId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("PrimaryTeamMembership");

                b.Navigation("User");

                b.Navigation("View");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.Webhooks.PendingEventEntity", b =>
            {
                b.HasOne("Player.Api.Data.Data.Models.Webhooks.WebhookSubscriptionEntity", "Subscription")
                .WithMany()
                .HasForeignKey("SubscriptionId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Subscription");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.Webhooks.WebhookSubscriptionEventTypeEntity", b =>
            {
                b.HasOne("Player.Api.Data.Data.Models.Webhooks.WebhookSubscriptionEntity", "Subscription")
                .WithMany("EventTypes")
                .HasForeignKey("SubscriptionId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Subscription");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.RoleEntity", b =>
            {
                b.Navigation("Permissions");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.TeamEntity", b =>
            {
                b.Navigation("Applications");

                b.Navigation("Memberships");

                b.Navigation("Permissions");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.UserEntity", b =>
            {
                b.Navigation("Permissions");

                b.Navigation("TeamMemberships");

                b.Navigation("ViewMemberships");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.ViewEntity", b =>
            {
                b.Navigation("Applications");

                b.Navigation("Files");

                b.Navigation("Memberships");

                b.Navigation("Teams");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.ViewMembershipEntity", b =>
            {
                b.Navigation("TeamMemberships");
            });

            modelBuilder.Entity("Player.Api.Data.Data.Models.Webhooks.WebhookSubscriptionEntity", b =>
            {
                b.Navigation("EventTypes");
            });
#pragma warning restore 612, 618
        }
        protected override void BuildModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
            .HasDefaultSchema("CharacterModule")
            .HasAnnotation("ProductVersion", "6.0.0")
            .HasAnnotation("Relational:MaxIdentifierLength", 63);

            NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "fuzzystrmatch");
            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Characters.Model.Character", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <string>("AvatarUrl")
                .HasColumnType("text")
                .HasColumnName("avatar_url");

                b.Property <string>("Description")
                .HasColumnType("text")
                .HasColumnName("description");

                b.Property <bool>("IsCurrent")
                .HasColumnType("boolean")
                .HasColumnName("is_current");

                b.Property <bool>("IsDefault")
                .HasColumnType("boolean")
                .HasColumnName("is_default");

                b.Property <bool>("IsNSFW")
                .HasColumnType("boolean")
                .HasColumnName("is_nsfw");

                b.Property <string>("Name")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <string>("Nickname")
                .HasColumnType("text")
                .HasColumnName("nickname");

                b.Property <long>("OwnerID")
                .HasColumnType("bigint")
                .HasColumnName("owner_id");

                b.Property <string>("PronounProviderFamily")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("pronoun_provider_family");

                b.Property <long?>("RoleID")
                .HasColumnType("bigint")
                .HasColumnName("role_id");

                b.Property <long>("ServerID")
                .HasColumnType("bigint")
                .HasColumnName("server_id");

                b.Property <string>("Summary")
                .HasColumnType("text")
                .HasColumnName("summary");

                b.HasKey("ID")
                .HasName("pk_characters");

                b.HasIndex("OwnerID")
                .HasDatabaseName("ix_characters_owner_id");

                b.HasIndex("RoleID")
                .HasDatabaseName("ix_characters_role_id");

                b.HasIndex("ServerID")
                .HasDatabaseName("ix_characters_server_id");

                b.ToTable("Characters", "CharacterModule");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Characters.Model.CharacterRole", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <int>("Access")
                .HasColumnType("integer")
                .HasColumnName("access");

                b.Property <long>("DiscordID")
                .HasColumnType("bigint")
                .HasColumnName("discord_id");

                b.Property <long>("ServerID")
                .HasColumnType("bigint")
                .HasColumnName("server_id");

                b.HasKey("ID")
                .HasName("pk_character_roles");

                b.HasIndex("ServerID")
                .HasDatabaseName("ix_character_roles_server_id");

                b.ToTable("CharacterRoles", "CharacterModule");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Characters.Model.Data.Image", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <string>("Caption")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("caption");

                b.Property <long?>("CharacterID")
                .HasColumnType("bigint")
                .HasColumnName("character_id");

                b.Property <bool>("IsNSFW")
                .HasColumnType("boolean")
                .HasColumnName("is_nsfw");

                b.Property <string>("Name")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <string>("Url")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("url");

                b.HasKey("ID")
                .HasName("pk_images");

                b.HasIndex("CharacterID")
                .HasDatabaseName("ix_images_character_id");

                b.ToTable("Images", "CharacterModule");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <string>("Description")
                .HasColumnType("text")
                .HasColumnName("description");

                b.Property <long>("DiscordID")
                .HasColumnType("bigint")
                .HasColumnName("discord_id");

                b.Property <bool>("IsNSFW")
                .HasColumnType("boolean")
                .HasColumnName("is_nsfw");

                b.Property <string>("JoinMessage")
                .HasColumnType("text")
                .HasColumnName("join_message");

                b.Property <bool>("SendJoinMessage")
                .HasColumnType("boolean")
                .HasColumnName("send_join_message");

                b.Property <bool>("SuppressPermissionWarnings")
                .HasColumnType("boolean")
                .HasColumnName("suppress_permission_warnings");

                b.HasKey("ID")
                .HasName("pk_servers");

                b.ToTable("Servers", "Core", t => t.ExcludeFromMigrations());
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.ServerUser", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <long>("ServerID")
                .HasColumnType("bigint")
                .HasColumnName("server_id");

                b.Property <long>("UserID")
                .HasColumnType("bigint")
                .HasColumnName("user_id");

                b.HasKey("ID")
                .HasName("pk_server_user");

                b.HasIndex("ServerID")
                .HasDatabaseName("ix_server_user_server_id");

                b.HasIndex("UserID")
                .HasDatabaseName("ix_server_user_user_id");

                b.ToTable("ServerUser", "Core", t => t.ExcludeFromMigrations());
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.User", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <string>("Bio")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("bio");

                b.Property <long>("DiscordID")
                .HasColumnType("bigint")
                .HasColumnName("discord_id");

                b.Property <int?>("Timezone")
                .HasColumnType("integer")
                .HasColumnName("timezone");

                b.HasKey("ID")
                .HasName("pk_users");

                b.ToTable("Users", "Core", t => t.ExcludeFromMigrations());
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Characters.Model.Character", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "Owner")
                .WithMany()
                .HasForeignKey("OwnerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_characters_users_owner_id");

                b.HasOne("DIGOS.Ambassador.Plugins.Characters.Model.CharacterRole", "Role")
                .WithMany()
                .HasForeignKey("RoleID")
                .HasConstraintName("fk_characters_character_roles_role_id");

                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany()
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_characters_servers_server_id");

                b.Navigation("Owner");

                b.Navigation("Role");

                b.Navigation("Server");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Characters.Model.CharacterRole", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany()
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_character_roles_servers_server_id");

                b.Navigation("Server");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Characters.Model.Data.Image", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Characters.Model.Character", null)
                .WithMany("Images")
                .HasForeignKey("CharacterID")
                .HasConstraintName("fk_images_characters_character_id");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.ServerUser", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany("KnownUsers")
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_server_user_servers_server_id");

                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "User")
                .WithMany()
                .HasForeignKey("UserID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_server_user_users_user_id");

                b.Navigation("Server");

                b.Navigation("User");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Characters.Model.Character", b =>
            {
                b.Navigation("Images");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", b =>
            {
                b.Navigation("KnownUsers");
            });
#pragma warning restore 612, 618
        }
Beispiel #11
0
        protected override void BuildModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
            .HasDefaultSchema("Core")
            .HasAnnotation("ProductVersion", "6.0.0")
            .HasAnnotation("Relational:MaxIdentifierLength", 63);

            NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "fuzzystrmatch");
            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <string>("Description")
                .HasColumnType("text")
                .HasColumnName("description");

                b.Property <long>("DiscordID")
                .HasColumnType("bigint")
                .HasColumnName("discord_id");

                b.Property <bool>("IsNSFW")
                .HasColumnType("boolean")
                .HasColumnName("is_nsfw");

                b.Property <string>("JoinMessage")
                .HasColumnType("text")
                .HasColumnName("join_message");

                b.Property <bool>("SendJoinMessage")
                .HasColumnType("boolean")
                .HasColumnName("send_join_message");

                b.Property <bool>("SuppressPermissionWarnings")
                .HasColumnType("boolean")
                .HasColumnName("suppress_permission_warnings");

                b.HasKey("ID")
                .HasName("pk_servers");

                b.HasIndex("DiscordID")
                .IsUnique()
                .HasDatabaseName("ix_servers_discord_id");

                b.ToTable("Servers", "Core");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.ServerUser", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <long>("ServerID")
                .HasColumnType("bigint")
                .HasColumnName("server_id");

                b.Property <long>("UserID")
                .HasColumnType("bigint")
                .HasColumnName("user_id");

                b.HasKey("ID")
                .HasName("pk_server_user");

                b.HasIndex("ServerID")
                .HasDatabaseName("ix_server_user_server_id");

                b.HasIndex("UserID")
                .HasDatabaseName("ix_server_user_user_id");

                b.ToTable("ServerUser", "Core");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.User", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <string>("Bio")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("bio");

                b.Property <long>("DiscordID")
                .HasColumnType("bigint")
                .HasColumnName("discord_id");

                b.Property <int?>("Timezone")
                .HasColumnType("integer")
                .HasColumnName("timezone");

                b.HasKey("ID")
                .HasName("pk_users");

                b.HasIndex("DiscordID")
                .IsUnique()
                .HasDatabaseName("ix_users_discord_id");

                b.ToTable("Users", "Core");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.UserConsent", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <long>("DiscordID")
                .HasColumnType("bigint")
                .HasColumnName("discord_id");

                b.Property <bool>("HasConsented")
                .HasColumnType("boolean")
                .HasColumnName("has_consented");

                b.HasKey("ID")
                .HasName("pk_user_consents");

                b.ToTable("UserConsents", "Core");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.ServerUser", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany("KnownUsers")
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_server_user_servers_server_id");

                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "User")
                .WithMany()
                .HasForeignKey("UserID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_server_user_users_user_id");

                b.Navigation("Server");

                b.Navigation("User");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", b =>
            {
                b.Navigation("KnownUsers");
            });
#pragma warning restore 612, 618
        }
        protected override void BuildModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
            .HasDefaultSchema("TransformationModule")
            .HasAnnotation("ProductVersion", "6.0.0")
            .HasAnnotation("Relational:MaxIdentifierLength", 63);

            NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "fuzzystrmatch");
            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Characters.Model.Character", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <string>("AvatarUrl")
                .HasColumnType("text")
                .HasColumnName("avatar_url");

                b.Property <string>("Description")
                .HasColumnType("text")
                .HasColumnName("description");

                b.Property <bool>("IsCurrent")
                .HasColumnType("boolean")
                .HasColumnName("is_current");

                b.Property <bool>("IsDefault")
                .HasColumnType("boolean")
                .HasColumnName("is_default");

                b.Property <bool>("IsNSFW")
                .HasColumnType("boolean")
                .HasColumnName("is_nsfw");

                b.Property <string>("Name")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <string>("Nickname")
                .HasColumnType("text")
                .HasColumnName("nickname");

                b.Property <long>("OwnerID")
                .HasColumnType("bigint")
                .HasColumnName("owner_id");

                b.Property <string>("PronounProviderFamily")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("pronoun_provider_family");

                b.Property <long?>("RoleID")
                .HasColumnType("bigint")
                .HasColumnName("role_id");

                b.Property <long>("ServerID")
                .HasColumnType("bigint")
                .HasColumnName("server_id");

                b.Property <string>("Summary")
                .HasColumnType("text")
                .HasColumnName("summary");

                b.HasKey("ID")
                .HasName("pk_characters");

                b.HasIndex("OwnerID")
                .HasDatabaseName("ix_characters_owner_id");

                b.HasIndex("RoleID")
                .HasDatabaseName("ix_characters_role_id");

                b.HasIndex("ServerID")
                .HasDatabaseName("ix_characters_server_id");

                b.ToTable("Characters", "CharacterModule", t => t.ExcludeFromMigrations());
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Characters.Model.CharacterRole", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <int>("Access")
                .HasColumnType("integer")
                .HasColumnName("access");

                b.Property <long>("DiscordID")
                .HasColumnType("bigint")
                .HasColumnName("discord_id");

                b.Property <long>("ServerID")
                .HasColumnType("bigint")
                .HasColumnName("server_id");

                b.HasKey("ID")
                .HasName("pk_character_roles");

                b.HasIndex("ServerID")
                .HasDatabaseName("ix_character_roles_server_id");

                b.ToTable("CharacterRoles", "CharacterModule", t => t.ExcludeFromMigrations());
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Characters.Model.Data.Image", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <string>("Caption")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("caption");

                b.Property <long?>("CharacterID")
                .HasColumnType("bigint")
                .HasColumnName("character_id");

                b.Property <bool>("IsNSFW")
                .HasColumnType("boolean")
                .HasColumnName("is_nsfw");

                b.Property <string>("Name")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <string>("Url")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("url");

                b.HasKey("ID")
                .HasName("pk_images");

                b.HasIndex("CharacterID")
                .HasDatabaseName("ix_images_character_id");

                b.ToTable("Images", "CharacterModule", t => t.ExcludeFromMigrations());
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <string>("Description")
                .HasColumnType("text")
                .HasColumnName("description");

                b.Property <long>("DiscordID")
                .HasColumnType("bigint")
                .HasColumnName("discord_id");

                b.Property <bool>("IsNSFW")
                .HasColumnType("boolean")
                .HasColumnName("is_nsfw");

                b.Property <string>("JoinMessage")
                .HasColumnType("text")
                .HasColumnName("join_message");

                b.Property <bool>("SendJoinMessage")
                .HasColumnType("boolean")
                .HasColumnName("send_join_message");

                b.Property <bool>("SuppressPermissionWarnings")
                .HasColumnType("boolean")
                .HasColumnName("suppress_permission_warnings");

                b.HasKey("ID")
                .HasName("pk_servers");

                b.ToTable("Servers", "Core", t => t.ExcludeFromMigrations());
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.ServerUser", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <long>("ServerID")
                .HasColumnType("bigint")
                .HasColumnName("server_id");

                b.Property <long>("UserID")
                .HasColumnType("bigint")
                .HasColumnName("user_id");

                b.HasKey("ID")
                .HasName("pk_server_user");

                b.HasIndex("ServerID")
                .HasDatabaseName("ix_server_user_server_id");

                b.HasIndex("UserID")
                .HasDatabaseName("ix_server_user_user_id");

                b.ToTable("ServerUser", "Core", t => t.ExcludeFromMigrations());
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.User", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <string>("Bio")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("bio");

                b.Property <long>("DiscordID")
                .HasColumnType("bigint")
                .HasColumnName("discord_id");

                b.Property <int?>("Timezone")
                .HasColumnType("integer")
                .HasColumnName("timezone");

                b.HasKey("ID")
                .HasName("pk_users");

                b.ToTable("Users", "Core", t => t.ExcludeFromMigrations());
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.Appearances.Appearance", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <long>("CharacterID")
                .HasColumnType("bigint")
                .HasColumnName("character_id");

                b.Property <double>("Height")
                .HasColumnType("double precision")
                .HasColumnName("height");

                b.Property <bool>("IsCurrent")
                .HasColumnType("boolean")
                .HasColumnName("is_current");

                b.Property <bool>("IsDefault")
                .HasColumnType("boolean")
                .HasColumnName("is_default");

                b.Property <double>("Muscularity")
                .HasColumnType("double precision")
                .HasColumnName("muscularity");

                b.Property <double>("Weight")
                .HasColumnType("double precision")
                .HasColumnName("weight");

                b.HasKey("ID")
                .HasName("pk_appearances");

                b.HasIndex("CharacterID")
                .HasDatabaseName("ix_appearances_character_id");

                b.ToTable("Appearances", "TransformationModule");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.GlobalUserProtection", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <bool>("DefaultOptIn")
                .HasColumnType("boolean")
                .HasColumnName("default_opt_in");

                b.Property <int>("DefaultType")
                .HasColumnType("integer")
                .HasColumnName("default_type");

                b.Property <long>("UserID")
                .HasColumnType("bigint")
                .HasColumnName("user_id");

                b.HasKey("ID")
                .HasName("pk_global_user_protections");

                b.HasIndex("UserID")
                .HasDatabaseName("ix_global_user_protections_user_id");

                b.ToTable("GlobalUserProtections", "TransformationModule");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.ServerUserProtection", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <bool>("HasOptedIn")
                .HasColumnType("boolean")
                .HasColumnName("has_opted_in");

                b.Property <long>("ServerID")
                .HasColumnType("bigint")
                .HasColumnName("server_id");

                b.Property <int>("Type")
                .HasColumnType("integer")
                .HasColumnName("type");

                b.Property <long>("UserID")
                .HasColumnType("bigint")
                .HasColumnName("user_id");

                b.HasKey("ID")
                .HasName("pk_server_user_protections");

                b.HasIndex("ServerID")
                .HasDatabaseName("ix_server_user_protections_server_id");

                b.HasIndex("UserID")
                .HasDatabaseName("ix_server_user_protections_user_id");

                b.ToTable("ServerUserProtections", "TransformationModule");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.Species", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <string>("Author")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("author");

                b.Property <string>("Description")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("description");

                b.Property <string>("Name")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <long?>("ParentID")
                .HasColumnType("bigint")
                .HasColumnName("parent_id");

                b.HasKey("ID")
                .HasName("pk_species");

                b.HasIndex("ParentID")
                .HasDatabaseName("ix_species_parent_id");

                b.ToTable("Species", "TransformationModule");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.Transformation", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <int?>("DefaultPattern")
                .HasColumnType("integer")
                .HasColumnName("default_pattern");

                b.Property <string>("Description")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("description");

                b.Property <string>("GrowMessage")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("grow_message");

                b.Property <bool>("IsNSFW")
                .HasColumnType("boolean")
                .HasColumnName("is_nsfw");

                b.Property <int>("Part")
                .HasColumnType("integer")
                .HasColumnName("part");

                b.Property <string>("ShiftMessage")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("shift_message");

                b.Property <string>("SingleDescription")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("single_description");

                b.Property <long>("SpeciesID")
                .HasColumnType("bigint")
                .HasColumnName("species_id");

                b.Property <string>("UniformDescription")
                .HasColumnType("text")
                .HasColumnName("uniform_description");

                b.Property <string>("UniformGrowMessage")
                .HasColumnType("text")
                .HasColumnName("uniform_grow_message");

                b.Property <string>("UniformShiftMessage")
                .HasColumnType("text")
                .HasColumnName("uniform_shift_message");

                b.HasKey("ID")
                .HasName("pk_transformations");

                b.HasIndex("SpeciesID")
                .HasDatabaseName("ix_transformations_species_id");

                b.ToTable("Transformations", "TransformationModule");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.UserProtectionEntry", b =>
            {
                b.Property <long>("ID")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("ID"));

                b.Property <long>("GlobalProtectionID")
                .HasColumnType("bigint")
                .HasColumnName("global_protection_id");

                b.Property <int>("Type")
                .HasColumnType("integer")
                .HasColumnName("type");

                b.Property <long>("UserID")
                .HasColumnType("bigint")
                .HasColumnName("user_id");

                b.HasKey("ID")
                .HasName("pk_user_protection_entries");

                b.HasIndex("GlobalProtectionID")
                .HasDatabaseName("ix_user_protection_entries_global_protection_id");

                b.HasIndex("UserID")
                .HasDatabaseName("ix_user_protection_entries_user_id");

                b.ToTable("UserProtectionEntries", "TransformationModule");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Characters.Model.Character", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "Owner")
                .WithMany()
                .HasForeignKey("OwnerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_characters_users_owner_id");

                b.HasOne("DIGOS.Ambassador.Plugins.Characters.Model.CharacterRole", "Role")
                .WithMany()
                .HasForeignKey("RoleID")
                .HasConstraintName("fk_characters_character_roles_role_id");

                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany()
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_characters_servers_server_id");

                b.Navigation("Owner");

                b.Navigation("Role");

                b.Navigation("Server");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Characters.Model.CharacterRole", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany()
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_character_roles_servers_server_id");

                b.Navigation("Server");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Characters.Model.Data.Image", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Characters.Model.Character", null)
                .WithMany("Images")
                .HasForeignKey("CharacterID")
                .HasConstraintName("fk_images_characters_character_id");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Users.ServerUser", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany("KnownUsers")
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_server_user_servers_server_id");

                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "User")
                .WithMany()
                .HasForeignKey("UserID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_server_user_users_user_id");

                b.Navigation("Server");

                b.Navigation("User");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.Appearances.Appearance", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Characters.Model.Character", "Character")
                .WithMany()
                .HasForeignKey("CharacterID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_appearances_characters_character_id");

                b.OwnsMany("DIGOS.Ambassador.Plugins.Transformations.Model.Appearances.AppearanceComponent", "Components", b1 =>
                {
                    b1.Property <long>("ID")
                    .ValueGeneratedOnAdd()
                    .HasColumnType("bigint")
                    .HasColumnName("id");

                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b1.Property <long>("ID"));

                    b1.Property <long>("AppearanceID")
                    .HasColumnType("bigint")
                    .HasColumnName("appearance_id");

                    b1.Property <int>("Chirality")
                    .HasColumnType("integer")
                    .HasColumnName("chirality");

                    b1.Property <int?>("Pattern")
                    .HasColumnType("integer")
                    .HasColumnName("pattern");

                    b1.Property <long>("TransformationID")
                    .HasColumnType("bigint")
                    .HasColumnName("transformation_id");

                    b1.HasKey("ID");

                    b1.HasIndex("AppearanceID")
                    .HasDatabaseName("ix_appearance_components_appearance_id");

                    b1.HasIndex("TransformationID")
                    .HasDatabaseName("ix_appearance_components_transformation_id");

                    b1.ToTable("AppearanceComponents", "TransformationModule");

                    b1.WithOwner()
                    .HasForeignKey("AppearanceID")
                    .HasConstraintName("fk_appearance_components_appearances_appearance_id");

                    b1.HasOne("DIGOS.Ambassador.Plugins.Transformations.Model.Transformation", "Transformation")
                    .WithMany()
                    .HasForeignKey("TransformationID")
                    .OnDelete(DeleteBehavior.Cascade)
                    .IsRequired()
                    .HasConstraintName("fk_appearance_components_transformations_transformation_id");

                    b1.OwnsOne("DIGOS.Ambassador.Plugins.Transformations.Model.Appearances.Colour", "BaseColour", b2 =>
                    {
                        b2.Property <long>("AppearanceComponentID")
                        .HasColumnType("bigint")
                        .HasColumnName("appearance_component_id");

                        b2.Property <int?>("Modifier")
                        .HasColumnType("integer")
                        .HasColumnName("modifier");

                        b2.Property <int>("Shade")
                        .HasColumnType("integer")
                        .HasColumnName("shade");

                        b2.HasKey("AppearanceComponentID");

                        b2.ToTable("BaseColours", "TransformationModule");

                        b2.WithOwner()
                        .HasForeignKey("AppearanceComponentID")
                        .HasConstraintName("fk_base_colours_appearance_components_appearance_id_id");
                    });

                    b1.OwnsOne("DIGOS.Ambassador.Plugins.Transformations.Model.Appearances.Colour", "PatternColour", b2 =>
                    {
                        b2.Property <long>("AppearanceComponentID")
                        .HasColumnType("bigint")
                        .HasColumnName("appearance_component_id");

                        b2.Property <int?>("Modifier")
                        .HasColumnType("integer")
                        .HasColumnName("modifier");

                        b2.Property <int>("Shade")
                        .HasColumnType("integer")
                        .HasColumnName("shade");

                        b2.HasKey("AppearanceComponentID");

                        b2.ToTable("PatternColours", "TransformationModule");

                        b2.WithOwner()
                        .HasForeignKey("AppearanceComponentID")
                        .HasConstraintName("fk_pattern_colours_appearance_components_appearance_id_id");
                    });

                    b1.Navigation("BaseColour")
                    .IsRequired();

                    b1.Navigation("PatternColour");

                    b1.Navigation("Transformation");
                });

                b.Navigation("Character");

                b.Navigation("Components");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.GlobalUserProtection", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "User")
                .WithMany()
                .HasForeignKey("UserID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_global_user_protections_users_user_id");

                b.Navigation("User");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.ServerUserProtection", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", "Server")
                .WithMany()
                .HasForeignKey("ServerID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_server_user_protections_servers_server_id");

                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "User")
                .WithMany()
                .HasForeignKey("UserID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_server_user_protections_users_user_id");

                b.Navigation("Server");

                b.Navigation("User");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.Species", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Transformations.Model.Species", "Parent")
                .WithMany()
                .HasForeignKey("ParentID")
                .HasConstraintName("fk_species_species_parent_id");

                b.Navigation("Parent");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.Transformation", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Transformations.Model.Species", "Species")
                .WithMany()
                .HasForeignKey("SpeciesID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_transformations_species_species_id");

                b.OwnsOne("DIGOS.Ambassador.Plugins.Transformations.Model.Appearances.Colour", "DefaultBaseColour", b1 =>
                {
                    b1.Property <long>("TransformationID")
                    .HasColumnType("bigint")
                    .HasColumnName("id");

                    b1.Property <int?>("Modifier")
                    .HasColumnType("integer")
                    .HasColumnName("modifier");

                    b1.Property <int>("Shade")
                    .HasColumnType("integer")
                    .HasColumnName("shade");

                    b1.HasKey("TransformationID")
                    .HasName("pk_default_base_colours");

                    b1.ToTable("DefaultBaseColours", "TransformationModule");

                    b1.WithOwner()
                    .HasForeignKey("TransformationID")
                    .HasConstraintName("fk_default_base_colours_transformations_id");
                });

                b.OwnsOne("DIGOS.Ambassador.Plugins.Transformations.Model.Appearances.Colour", "DefaultPatternColour", b1 =>
                {
                    b1.Property <long>("TransformationID")
                    .HasColumnType("bigint")
                    .HasColumnName("id");

                    b1.Property <int?>("Modifier")
                    .HasColumnType("integer")
                    .HasColumnName("modifier");

                    b1.Property <int>("Shade")
                    .HasColumnType("integer")
                    .HasColumnName("shade");

                    b1.HasKey("TransformationID")
                    .HasName("pk_default_pattern_colours");

                    b1.ToTable("DefaultPatternColours", "TransformationModule");

                    b1.WithOwner()
                    .HasForeignKey("TransformationID")
                    .HasConstraintName("fk_default_pattern_colours_transformations_id");
                });

                b.Navigation("DefaultBaseColour")
                .IsRequired();

                b.Navigation("DefaultPatternColour");

                b.Navigation("Species");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.UserProtectionEntry", b =>
            {
                b.HasOne("DIGOS.Ambassador.Plugins.Transformations.Model.GlobalUserProtection", "GlobalProtection")
                .WithMany("UserListing")
                .HasForeignKey("GlobalProtectionID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_user_protection_entries_global_user_protections_global_protectio");

                b.HasOne("DIGOS.Ambassador.Plugins.Core.Model.Users.User", "User")
                .WithMany()
                .HasForeignKey("UserID")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_user_protection_entries_users_user_id");

                b.Navigation("GlobalProtection");

                b.Navigation("User");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Characters.Model.Character", b =>
            {
                b.Navigation("Images");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Core.Model.Servers.Server", b =>
            {
                b.Navigation("KnownUsers");
            });

            modelBuilder.Entity("DIGOS.Ambassador.Plugins.Transformations.Model.GlobalUserProtection", b =>
            {
                b.Navigation("UserListing");
            });
#pragma warning restore 612, 618
        }
Beispiel #13
0
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
            .HasAnnotation("ProductVersion", "6.0.1")
            .HasAnnotation("Relational:MaxIdentifierLength", 63);

            NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "uuid-ossp");
            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);

            modelBuilder.Entity("Player.Api.Client.WebhookEvent", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <string>("Payload")
                .HasColumnType("text")
                .HasColumnName("payload");

                b.Property <DateTimeOffset>("Timestamp")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("timestamp");

                b.Property <int>("Type")
                .HasColumnType("integer")
                .HasColumnName("type");

                b.HasKey("Id");

                b.ToTable("webhook_events");
            });

            modelBuilder.Entity("Player.Vm.Api.Domain.Models.Coordinate", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <string>("Label")
                .HasColumnType("text")
                .HasColumnName("label");

                b.Property <double>("Radius")
                .HasColumnType("double precision")
                .HasColumnName("radius");

                b.Property <string[]>("Urls")
                .HasColumnType("text[]")
                .HasColumnName("urls");

                b.Property <Guid?>("VmMapId")
                .HasColumnType("uuid")
                .HasColumnName("vm_map_id");

                b.Property <double>("XPosition")
                .HasColumnType("double precision")
                .HasColumnName("x_position");

                b.Property <double>("YPosition")
                .HasColumnType("double precision")
                .HasColumnName("y_position");

                b.HasKey("Id");

                b.HasIndex("VmMapId");

                b.ToTable("coordinate");
            });

            modelBuilder.Entity("Player.Vm.Api.Domain.Models.Team", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.HasKey("Id");

                b.ToTable("teams");
            });

            modelBuilder.Entity("Player.Vm.Api.Domain.Models.Vm", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <string[]>("AllowedNetworks")
                .HasColumnType("text[]")
                .HasColumnName("allowed_networks");

                b.Property <string>("ConsoleConnectionInfo")
                .HasColumnType("text")
                .HasColumnName("console_connection_info");

                b.Property <bool>("HasPendingTasks")
                .HasColumnType("boolean")
                .HasColumnName("has_pending_tasks");

                b.Property <string[]>("IpAddresses")
                .HasColumnType("text[]")
                .HasColumnName("ip_addresses");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <int>("PowerState")
                .HasColumnType("integer")
                .HasColumnName("power_state");

                b.Property <string>("Url")
                .HasColumnType("text")
                .HasColumnName("url");

                b.Property <Guid?>("UserId")
                .HasColumnType("uuid")
                .HasColumnName("user_id");

                b.HasKey("Id");

                b.ToTable("vms");
            });

            modelBuilder.Entity("Player.Vm.Api.Domain.Models.VmMap", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <string>("ImageUrl")
                .HasColumnType("text")
                .HasColumnName("image_url");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <List <Guid> >("TeamIds")
                .HasColumnType("uuid[]")
                .HasColumnName("team_ids");

                b.Property <Guid>("ViewId")
                .HasColumnType("uuid")
                .HasColumnName("view_id");

                b.HasKey("Id");

                b.ToTable("maps");
            });

            modelBuilder.Entity("Player.Vm.Api.Domain.Models.VmTeam", b =>
            {
                b.Property <Guid>("TeamId")
                .HasColumnType("uuid")
                .HasColumnName("team_id");

                b.Property <Guid>("VmId")
                .HasColumnType("uuid")
                .HasColumnName("vm_id");

                b.HasKey("TeamId", "VmId");

                b.HasIndex("VmId");

                b.ToTable("vm_teams");
            });

            modelBuilder.Entity("Player.Vm.Api.Domain.Models.Coordinate", b =>
            {
                b.HasOne("Player.Vm.Api.Domain.Models.VmMap", null)
                .WithMany("Coordinates")
                .HasForeignKey("VmMapId");
            });

            modelBuilder.Entity("Player.Vm.Api.Domain.Models.VmTeam", b =>
            {
                b.HasOne("Player.Vm.Api.Domain.Models.Team", "Team")
                .WithMany("VmTeams")
                .HasForeignKey("TeamId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("Player.Vm.Api.Domain.Models.Vm", "Vm")
                .WithMany("VmTeams")
                .HasForeignKey("VmId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Team");

                b.Navigation("Vm");
            });

            modelBuilder.Entity("Player.Vm.Api.Domain.Models.Team", b =>
            {
                b.Navigation("VmTeams");
            });

            modelBuilder.Entity("Player.Vm.Api.Domain.Models.Vm", b =>
            {
                b.Navigation("VmTeams");
            });

            modelBuilder.Entity("Player.Vm.Api.Domain.Models.VmMap", b =>
            {
                b.Navigation("Coordinates");
            });
#pragma warning restore 612, 618
        }
        protected override void BuildModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
            .HasAnnotation("ProductVersion", "6.0.1")
            .HasAnnotation("Relational:MaxIdentifierLength", 63);

            NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "uuid-ossp");
            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);

            modelBuilder.Entity("Alloy.Api.Data.Models.EventEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <Guid>("CreatedBy")
                .HasColumnType("uuid")
                .HasColumnName("created_by");

                b.Property <DateTime>("DateCreated")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_created");

                b.Property <DateTime?>("DateModified")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_modified");

                b.Property <string>("Description")
                .HasColumnType("text")
                .HasColumnName("description");

                b.Property <DateTime?>("EndDate")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("end_date");

                b.Property <Guid?>("EventTemplateId")
                .HasColumnType("uuid")
                .HasColumnName("event_template_id");

                b.Property <DateTime?>("ExpirationDate")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("expiration_date");

                b.Property <int>("FailureCount")
                .HasColumnType("integer")
                .HasColumnName("failure_count");

                b.Property <int>("InternalStatus")
                .HasColumnType("integer")
                .HasColumnName("internal_status");

                b.Property <int>("LastEndInternalStatus")
                .HasColumnType("integer")
                .HasColumnName("last_end_internal_status");

                b.Property <int>("LastEndStatus")
                .HasColumnType("integer")
                .HasColumnName("last_end_status");

                b.Property <int>("LastLaunchInternalStatus")
                .HasColumnType("integer")
                .HasColumnName("last_launch_internal_status");

                b.Property <int>("LastLaunchStatus")
                .HasColumnType("integer")
                .HasColumnName("last_launch_status");

                b.Property <DateTime?>("LaunchDate")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("launch_date");

                b.Property <Guid?>("ModifiedBy")
                .HasColumnType("uuid")
                .HasColumnName("modified_by");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <Guid?>("RunId")
                .HasColumnType("uuid")
                .HasColumnName("run_id");

                b.Property <Guid?>("ScenarioId")
                .HasColumnType("uuid")
                .HasColumnName("scenario_id");

                b.Property <string>("ShareCode")
                .HasColumnType("text")
                .HasColumnName("share_code");

                b.Property <int>("Status")
                .HasColumnType("integer")
                .HasColumnName("status");

                b.Property <DateTime>("StatusDate")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("status_date");

                b.Property <Guid>("UserId")
                .HasColumnType("uuid")
                .HasColumnName("user_id");

                b.Property <string>("Username")
                .HasColumnType("text")
                .HasColumnName("username");

                b.Property <Guid?>("ViewId")
                .HasColumnType("uuid")
                .HasColumnName("view_id");

                b.Property <Guid?>("WorkspaceId")
                .HasColumnType("uuid")
                .HasColumnName("workspace_id");

                b.HasKey("Id");

                b.HasIndex("EventTemplateId");

                b.ToTable("events");
            });

            modelBuilder.Entity("Alloy.Api.Data.Models.EventTemplateEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <Guid>("CreatedBy")
                .HasColumnType("uuid")
                .HasColumnName("created_by");

                b.Property <DateTime>("DateCreated")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_created");

                b.Property <DateTime?>("DateModified")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_modified");

                b.Property <string>("Description")
                .HasColumnType("text")
                .HasColumnName("description");

                b.Property <Guid?>("DirectoryId")
                .HasColumnType("uuid")
                .HasColumnName("directory_id");

                b.Property <int>("DurationHours")
                .HasColumnType("integer")
                .HasColumnName("duration_hours");

                b.Property <bool>("IsPublished")
                .HasColumnType("boolean")
                .HasColumnName("is_published");

                b.Property <Guid?>("ModifiedBy")
                .HasColumnType("uuid")
                .HasColumnName("modified_by");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <Guid?>("ScenarioTemplateId")
                .HasColumnType("uuid")
                .HasColumnName("scenario_template_id");

                b.Property <bool>("UseDynamicHost")
                .HasColumnType("boolean")
                .HasColumnName("use_dynamic_host");

                b.Property <Guid?>("ViewId")
                .HasColumnType("uuid")
                .HasColumnName("view_id");

                b.HasKey("Id");

                b.ToTable("event_templates");
            });

            modelBuilder.Entity("Alloy.Api.Data.Models.EventUserEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <Guid>("CreatedBy")
                .HasColumnType("uuid")
                .HasColumnName("created_by");

                b.Property <DateTime>("DateCreated")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_created");

                b.Property <DateTime?>("DateModified")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_modified");

                b.Property <Guid>("EventId")
                .HasColumnType("uuid")
                .HasColumnName("event_id");

                b.Property <Guid?>("ModifiedBy")
                .HasColumnType("uuid")
                .HasColumnName("modified_by");

                b.Property <Guid>("UserId")
                .HasColumnType("uuid")
                .HasColumnName("user_id");

                b.HasKey("Id");

                b.HasIndex("EventId", "UserId")
                .IsUnique();

                b.ToTable("event_users");
            });

            modelBuilder.Entity("Alloy.Api.Data.Models.EventEntity", b =>
            {
                b.HasOne("Alloy.Api.Data.Models.EventTemplateEntity", "EventTemplate")
                .WithMany()
                .HasForeignKey("EventTemplateId");

                b.Navigation("EventTemplate");
            });

            modelBuilder.Entity("Alloy.Api.Data.Models.EventUserEntity", b =>
            {
                b.HasOne("Alloy.Api.Data.Models.EventEntity", "Event")
                .WithMany("EventUsers")
                .HasForeignKey("EventId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Event");
            });

            modelBuilder.Entity("Alloy.Api.Data.Models.EventEntity", b =>
            {
                b.Navigation("EventUsers");
            });
#pragma warning restore 612, 618
        }
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
            .HasAnnotation("ProductVersion", "6.0.1")
            .HasAnnotation("Relational:MaxIdentifierLength", 63);

            NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "uuid-ossp");
            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);

            modelBuilder.Entity("Steamfitter.Api.Data.Models.BondAgent", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <string>("AgentInstalledPath")
                .HasColumnType("text")
                .HasColumnName("agent_installed_path");

                b.Property <string>("AgentName")
                .HasColumnType("text")
                .HasColumnName("agent_name");

                b.Property <string>("AgentVersion")
                .HasColumnType("text")
                .HasColumnName("agent_version");

                b.Property <DateTime?>("CheckinTime")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("checkin_time");

                b.Property <string>("FQDN")
                .HasColumnType("text")
                .HasColumnName("fqdn");

                b.Property <string>("GuestIp")
                .HasColumnType("text")
                .HasColumnName("guest_ip");

                b.Property <string>("MachineName")
                .HasColumnType("text")
                .HasColumnName("machine_name");

                b.Property <int?>("OperatingSystemId")
                .HasColumnType("integer")
                .HasColumnName("operating_system_id");

                b.Property <Guid>("VmWareName")
                .HasColumnType("uuid")
                .HasColumnName("vm_ware_name");

                b.Property <Guid>("VmWareUuid")
                .HasColumnType("uuid")
                .HasColumnName("vm_ware_uuid");

                b.HasKey("Id");

                b.HasIndex("OperatingSystemId");

                b.ToTable("bond_agents");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.FileEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <Guid>("CreatedBy")
                .HasColumnType("uuid")
                .HasColumnName("created_by");

                b.Property <DateTime>("DateCreated")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_created");

                b.Property <DateTime?>("DateModified")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_modified");

                b.Property <long>("Length")
                .HasColumnType("bigint")
                .HasColumnName("length");

                b.Property <Guid?>("ModifiedBy")
                .HasColumnType("uuid")
                .HasColumnName("modified_by");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <string>("StoragePath")
                .HasColumnType("text")
                .HasColumnName("storage_path");

                b.HasKey("Id");

                b.ToTable("files");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.LocalUser", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("integer")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <int>("Id"));

                b.Property <Guid?>("BondAgentId")
                .HasColumnType("uuid")
                .HasColumnName("bond_agent_id");

                b.Property <string>("Domain")
                .HasColumnType("text")
                .HasColumnName("domain");

                b.Property <bool>("IsCurrent")
                .HasColumnType("boolean")
                .HasColumnName("is_current");

                b.Property <string>("Username")
                .HasColumnType("text")
                .HasColumnName("username");

                b.HasKey("Id");

                b.HasIndex("BondAgentId");

                b.ToTable("local_user");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.MonitoredTool", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("integer")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <int>("Id"));

                b.Property <Guid?>("BondAgentId")
                .HasColumnType("uuid")
                .HasColumnName("bond_agent_id");

                b.Property <bool>("IsRunning")
                .HasColumnType("boolean")
                .HasColumnName("is_running");

                b.Property <string>("Location")
                .HasColumnType("text")
                .HasColumnName("location");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <string>("Version")
                .HasColumnType("text")
                .HasColumnName("version");

                b.HasKey("Id");

                b.HasIndex("BondAgentId");

                b.ToTable("monitored_tool");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.OS", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("integer")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <int>("Id"));

                b.Property <string>("Platform")
                .HasColumnType("text")
                .HasColumnName("platform");

                b.Property <string>("ServicePack")
                .HasColumnType("text")
                .HasColumnName("service_pack");

                b.Property <string>("Version")
                .HasColumnType("text")
                .HasColumnName("version");

                b.Property <string>("VersionString")
                .HasColumnType("text")
                .HasColumnName("version_string");

                b.HasKey("Id");

                b.ToTable("os");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.PermissionEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <Guid>("CreatedBy")
                .HasColumnType("uuid")
                .HasColumnName("created_by");

                b.Property <DateTime>("DateCreated")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_created");

                b.Property <DateTime?>("DateModified")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_modified");

                b.Property <string>("Description")
                .HasColumnType("text")
                .HasColumnName("description");

                b.Property <string>("Key")
                .HasColumnType("text")
                .HasColumnName("key");

                b.Property <Guid?>("ModifiedBy")
                .HasColumnType("uuid")
                .HasColumnName("modified_by");

                b.Property <bool>("ReadOnly")
                .HasColumnType("boolean")
                .HasColumnName("read_only");

                b.Property <string>("Value")
                .HasColumnType("text")
                .HasColumnName("value");

                b.HasKey("Id");

                b.HasIndex("Key", "Value")
                .IsUnique();

                b.ToTable("permissions");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.ResultEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <int>("Action")
                .HasColumnType("integer")
                .HasColumnName("action");

                b.Property <string>("ActualOutput")
                .HasColumnType("text")
                .HasColumnName("actual_output");

                b.Property <string>("ApiUrl")
                .HasColumnType("text")
                .HasColumnName("api_url");

                b.Property <Guid>("CreatedBy")
                .HasColumnType("uuid")
                .HasColumnName("created_by");

                b.Property <int>("CurrentIteration")
                .HasColumnType("integer")
                .HasColumnName("current_iteration");

                b.Property <DateTime>("DateCreated")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_created");

                b.Property <DateTime?>("DateModified")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_modified");

                b.Property <string>("ExpectedOutput")
                .HasColumnType("text")
                .HasColumnName("expected_output");

                b.Property <int>("ExpirationSeconds")
                .HasColumnType("integer")
                .HasColumnName("expiration_seconds");

                b.Property <string>("InputString")
                .HasColumnType("text")
                .HasColumnName("input_string");

                b.Property <int>("IntervalSeconds")
                .HasColumnType("integer")
                .HasColumnName("interval_seconds");

                b.Property <int>("Iterations")
                .HasColumnType("integer")
                .HasColumnName("iterations");

                b.Property <Guid?>("ModifiedBy")
                .HasColumnType("uuid")
                .HasColumnName("modified_by");

                b.Property <DateTime>("SentDate")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("sent_date");

                b.Property <int>("Status")
                .HasColumnType("integer")
                .HasColumnName("status");

                b.Property <DateTime>("StatusDate")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("status_date");

                b.Property <Guid?>("TaskId")
                .HasColumnType("uuid")
                .HasColumnName("task_id");

                b.Property <Guid?>("VmId")
                .HasColumnType("uuid")
                .HasColumnName("vm_id");

                b.Property <string>("VmName")
                .HasColumnType("text")
                .HasColumnName("vm_name");

                b.HasKey("Id");

                b.HasIndex("TaskId");

                b.ToTable("results");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.ScenarioEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <Guid>("CreatedBy")
                .HasColumnType("uuid")
                .HasColumnName("created_by");

                b.Property <DateTime>("DateCreated")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_created");

                b.Property <DateTime?>("DateModified")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_modified");

                b.Property <Guid?>("DefaultVmCredentialId")
                .HasColumnType("uuid")
                .HasColumnName("default_vm_credential_id");

                b.Property <string>("Description")
                .HasColumnType("text")
                .HasColumnName("description");

                b.Property <DateTime>("EndDate")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("end_date");

                b.Property <Guid?>("ModifiedBy")
                .HasColumnType("uuid")
                .HasColumnName("modified_by");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <bool>("OnDemand")
                .HasColumnType("boolean")
                .HasColumnName("on_demand");

                b.Property <Guid?>("ScenarioTemplateId")
                .HasColumnType("uuid")
                .HasColumnName("scenario_template_id");

                b.Property <int>("Score")
                .HasColumnType("integer")
                .HasColumnName("score");

                b.Property <int>("ScoreEarned")
                .HasColumnType("integer")
                .HasColumnName("score_earned");

                b.Property <DateTime>("StartDate")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("start_date");

                b.Property <int>("Status")
                .HasColumnType("integer")
                .HasColumnName("status");

                b.Property <bool>("UpdateScores")
                .HasColumnType("boolean")
                .HasColumnName("update_scores");

                b.Property <string>("View")
                .HasColumnType("text")
                .HasColumnName("view");

                b.Property <Guid?>("ViewId")
                .HasColumnType("uuid")
                .HasColumnName("view_id");

                b.HasKey("Id");

                b.HasIndex("ScenarioTemplateId");

                b.ToTable("scenarios");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.ScenarioTemplateEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <Guid>("CreatedBy")
                .HasColumnType("uuid")
                .HasColumnName("created_by");

                b.Property <DateTime>("DateCreated")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_created");

                b.Property <DateTime?>("DateModified")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_modified");

                b.Property <Guid?>("DefaultVmCredentialId")
                .HasColumnType("uuid")
                .HasColumnName("default_vm_credential_id");

                b.Property <string>("Description")
                .HasColumnType("text")
                .HasColumnName("description");

                b.Property <int?>("DurationHours")
                .HasColumnType("integer")
                .HasColumnName("duration_hours");

                b.Property <Guid?>("ModifiedBy")
                .HasColumnType("uuid")
                .HasColumnName("modified_by");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <int>("Score")
                .HasColumnType("integer")
                .HasColumnName("score");

                b.Property <bool>("UpdateScores")
                .HasColumnType("boolean")
                .HasColumnName("update_scores");

                b.HasKey("Id");

                b.ToTable("scenario_templates");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.SshPort", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("integer")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <int>("Id"));

                b.Property <Guid?>("BondAgentId")
                .HasColumnType("uuid")
                .HasColumnName("bond_agent_id");

                b.Property <string>("Guest")
                .HasColumnType("text")
                .HasColumnName("guest");

                b.Property <long>("GuestPort")
                .HasColumnType("bigint")
                .HasColumnName("guest_port");

                b.Property <string>("Server")
                .HasColumnType("text")
                .HasColumnName("server");

                b.Property <long>("ServerPort")
                .HasColumnType("bigint")
                .HasColumnName("server_port");

                b.HasKey("Id");

                b.HasIndex("BondAgentId");

                b.ToTable("ssh_port");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.TaskEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <int>("Action")
                .HasColumnType("integer")
                .HasColumnName("action");

                b.Property <string>("ApiUrl")
                .HasColumnType("text")
                .HasColumnName("api_url");

                b.Property <Guid>("CreatedBy")
                .HasColumnType("uuid")
                .HasColumnName("created_by");

                b.Property <int>("CurrentIteration")
                .HasColumnType("integer")
                .HasColumnName("current_iteration");

                b.Property <DateTime>("DateCreated")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_created");

                b.Property <DateTime?>("DateModified")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_modified");

                b.Property <int>("DelaySeconds")
                .HasColumnType("integer")
                .HasColumnName("delay_seconds");

                b.Property <string>("Description")
                .HasColumnType("text")
                .HasColumnName("description");

                b.Property <string>("ExpectedOutput")
                .HasColumnType("text")
                .HasColumnName("expected_output");

                b.Property <int>("ExpirationSeconds")
                .HasColumnType("integer")
                .HasColumnName("expiration_seconds");

                b.Property <string>("InputString")
                .HasColumnType("text")
                .HasColumnName("input_string");

                b.Property <int>("IntervalSeconds")
                .HasColumnType("integer")
                .HasColumnName("interval_seconds");

                b.Property <int>("IterationTermination")
                .HasColumnType("integer")
                .HasColumnName("iteration_termination");

                b.Property <int>("Iterations")
                .HasColumnType("integer")
                .HasColumnName("iterations");

                b.Property <Guid?>("ModifiedBy")
                .HasColumnType("uuid")
                .HasColumnName("modified_by");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.Property <bool>("Repeatable")
                .HasColumnType("boolean")
                .HasColumnName("repeatable");

                b.Property <Guid?>("ScenarioId")
                .HasColumnType("uuid")
                .HasColumnName("scenario_id");

                b.Property <Guid?>("ScenarioTemplateId")
                .HasColumnType("uuid")
                .HasColumnName("scenario_template_id");

                b.Property <int>("Score")
                .HasColumnType("integer")
                .HasColumnName("score");

                b.Property <int>("Status")
                .HasColumnType("integer")
                .HasColumnName("status");

                b.Property <int>("TotalScore")
                .HasColumnType("integer")
                .HasColumnName("total_score");

                b.Property <int>("TotalScoreEarned")
                .HasColumnType("integer")
                .HasColumnName("total_score_earned");

                b.Property <int>("TotalStatus")
                .HasColumnType("integer")
                .HasColumnName("total_status");

                b.Property <int>("TriggerCondition")
                .HasColumnType("integer")
                .HasColumnName("trigger_condition");

                b.Property <Guid?>("TriggerTaskId")
                .HasColumnType("uuid")
                .HasColumnName("trigger_task_id");

                b.Property <bool>("UserExecutable")
                .HasColumnType("boolean")
                .HasColumnName("user_executable");

                b.Property <Guid?>("UserId")
                .HasColumnType("uuid")
                .HasColumnName("user_id");

                b.Property <string>("VmMask")
                .HasColumnType("text")
                .HasColumnName("vm_mask");

                b.HasKey("Id");

                b.HasIndex("ScenarioId");

                b.HasIndex("ScenarioTemplateId");

                b.HasIndex("TriggerTaskId");

                b.HasIndex("UserId");

                b.ToTable("tasks");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.UserEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <Guid>("CreatedBy")
                .HasColumnType("uuid")
                .HasColumnName("created_by");

                b.Property <DateTime>("DateCreated")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_created");

                b.Property <DateTime?>("DateModified")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_modified");

                b.Property <Guid?>("ModifiedBy")
                .HasColumnType("uuid")
                .HasColumnName("modified_by");

                b.Property <string>("Name")
                .HasColumnType("text")
                .HasColumnName("name");

                b.HasKey("Id");

                b.HasIndex("Id")
                .IsUnique();

                b.ToTable("users");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.UserPermissionEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <Guid>("PermissionId")
                .HasColumnType("uuid")
                .HasColumnName("permission_id");

                b.Property <Guid>("UserId")
                .HasColumnType("uuid")
                .HasColumnName("user_id");

                b.HasKey("Id");

                b.HasIndex("PermissionId");

                b.HasIndex("UserId", "PermissionId")
                .IsUnique();

                b.ToTable("user_permissions");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.UserScenarioEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <Guid>("ScenarioId")
                .HasColumnType("uuid")
                .HasColumnName("scenario_id");

                b.Property <Guid>("UserId")
                .HasColumnType("uuid")
                .HasColumnName("user_id");

                b.HasKey("Id");

                b.HasIndex("ScenarioId");

                b.HasIndex("UserId", "ScenarioId")
                .IsUnique();

                b.ToTable("user_scenario_entity");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.VmCredentialEntity", b =>
            {
                b.Property <Guid>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("uuid")
                .HasColumnName("id")
                .HasDefaultValueSql("uuid_generate_v4()");

                b.Property <Guid>("CreatedBy")
                .HasColumnType("uuid")
                .HasColumnName("created_by");

                b.Property <DateTime>("DateCreated")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_created");

                b.Property <DateTime?>("DateModified")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("date_modified");

                b.Property <string>("Description")
                .HasColumnType("text")
                .HasColumnName("description");

                b.Property <Guid?>("ModifiedBy")
                .HasColumnType("uuid")
                .HasColumnName("modified_by");

                b.Property <string>("Password")
                .HasColumnType("text")
                .HasColumnName("password");

                b.Property <Guid?>("ScenarioId")
                .HasColumnType("uuid")
                .HasColumnName("scenario_id");

                b.Property <Guid?>("ScenarioTemplateId")
                .HasColumnType("uuid")
                .HasColumnName("scenario_template_id");

                b.Property <string>("Username")
                .HasColumnType("text")
                .HasColumnName("username");

                b.HasKey("Id");

                b.HasIndex("ScenarioId");

                b.HasIndex("ScenarioTemplateId");

                b.ToTable("vm_credentials");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.BondAgent", b =>
            {
                b.HasOne("Steamfitter.Api.Data.Models.OS", "OperatingSystem")
                .WithMany()
                .HasForeignKey("OperatingSystemId");

                b.Navigation("OperatingSystem");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.LocalUser", b =>
            {
                b.HasOne("Steamfitter.Api.Data.Models.BondAgent", null)
                .WithMany("LocalUsers")
                .HasForeignKey("BondAgentId");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.MonitoredTool", b =>
            {
                b.HasOne("Steamfitter.Api.Data.Models.BondAgent", null)
                .WithMany("MonitoredTools")
                .HasForeignKey("BondAgentId");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.ResultEntity", b =>
            {
                b.HasOne("Steamfitter.Api.Data.Models.TaskEntity", "Task")
                .WithMany("Results")
                .HasForeignKey("TaskId")
                .OnDelete(DeleteBehavior.SetNull);

                b.Navigation("Task");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.ScenarioEntity", b =>
            {
                b.HasOne("Steamfitter.Api.Data.Models.ScenarioTemplateEntity", "ScenarioTemplate")
                .WithMany("Scenarios")
                .HasForeignKey("ScenarioTemplateId")
                .OnDelete(DeleteBehavior.SetNull);

                b.Navigation("ScenarioTemplate");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.SshPort", b =>
            {
                b.HasOne("Steamfitter.Api.Data.Models.BondAgent", null)
                .WithMany("SshPorts")
                .HasForeignKey("BondAgentId");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.TaskEntity", b =>
            {
                b.HasOne("Steamfitter.Api.Data.Models.ScenarioEntity", "Scenario")
                .WithMany("Tasks")
                .HasForeignKey("ScenarioId")
                .OnDelete(DeleteBehavior.Cascade);

                b.HasOne("Steamfitter.Api.Data.Models.ScenarioTemplateEntity", "ScenarioTemplate")
                .WithMany("Tasks")
                .HasForeignKey("ScenarioTemplateId")
                .OnDelete(DeleteBehavior.Cascade);

                b.HasOne("Steamfitter.Api.Data.Models.TaskEntity", "TriggerTask")
                .WithMany("Children")
                .HasForeignKey("TriggerTaskId")
                .OnDelete(DeleteBehavior.Cascade);

                b.Navigation("Scenario");

                b.Navigation("ScenarioTemplate");

                b.Navigation("TriggerTask");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.UserPermissionEntity", b =>
            {
                b.HasOne("Steamfitter.Api.Data.Models.PermissionEntity", "Permission")
                .WithMany("UserPermissions")
                .HasForeignKey("PermissionId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("Steamfitter.Api.Data.Models.UserEntity", "User")
                .WithMany("UserPermissions")
                .HasForeignKey("UserId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Permission");

                b.Navigation("User");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.UserScenarioEntity", b =>
            {
                b.HasOne("Steamfitter.Api.Data.Models.ScenarioEntity", "Scenario")
                .WithMany("Users")
                .HasForeignKey("ScenarioId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("Steamfitter.Api.Data.Models.UserEntity", "User")
                .WithMany("UserScenarios")
                .HasForeignKey("UserId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("Scenario");

                b.Navigation("User");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.VmCredentialEntity", b =>
            {
                b.HasOne("Steamfitter.Api.Data.Models.ScenarioEntity", "Scenario")
                .WithMany("VmCredentials")
                .HasForeignKey("ScenarioId")
                .OnDelete(DeleteBehavior.Cascade);

                b.HasOne("Steamfitter.Api.Data.Models.ScenarioTemplateEntity", "ScenarioTemplate")
                .WithMany("VmCredentials")
                .HasForeignKey("ScenarioTemplateId")
                .OnDelete(DeleteBehavior.Cascade);

                b.Navigation("Scenario");

                b.Navigation("ScenarioTemplate");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.BondAgent", b =>
            {
                b.Navigation("LocalUsers");

                b.Navigation("MonitoredTools");

                b.Navigation("SshPorts");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.PermissionEntity", b =>
            {
                b.Navigation("UserPermissions");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.ScenarioEntity", b =>
            {
                b.Navigation("Tasks");

                b.Navigation("Users");

                b.Navigation("VmCredentials");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.ScenarioTemplateEntity", b =>
            {
                b.Navigation("Scenarios");

                b.Navigation("Tasks");

                b.Navigation("VmCredentials");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.TaskEntity", b =>
            {
                b.Navigation("Children");

                b.Navigation("Results");
            });

            modelBuilder.Entity("Steamfitter.Api.Data.Models.UserEntity", b =>
            {
                b.Navigation("UserPermissions");

                b.Navigation("UserScenarios");
            });
#pragma warning restore 612, 618
        }
Beispiel #16
0
        protected override void BuildModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
            .HasAnnotation("ProductVersion", "6.0.0")
            .HasAnnotation("Relational:MaxIdentifierLength", 63);

            NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "uuid-ossp");
            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);

            modelBuilder.Entity("Audiochan.Domain.Entities.Audio", b =>
            {
                b.Property <long>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("Id"));

                b.Property <DateTime>("Created")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("created");

                b.Property <string>("Description")
                .HasColumnType("text")
                .HasColumnName("description");

                b.Property <decimal>("Duration")
                .HasColumnType("numeric")
                .HasColumnName("duration");

                b.Property <string>("File")
                .IsRequired()
                .HasMaxLength(256)
                .HasColumnType("character varying(256)")
                .HasColumnName("file");

                b.Property <DateTime?>("LastModified")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("last_modified");

                b.Property <string>("Picture")
                .HasMaxLength(256)
                .HasColumnType("character varying(256)")
                .HasColumnName("picture");

                b.Property <long>("Size")
                .HasColumnType("bigint")
                .HasColumnName("size");

                b.Property <List <string> >("Tags")
                .IsRequired()
                .HasColumnType("text[]")
                .HasColumnName("tags");

                b.Property <string>("Title")
                .IsRequired()
                .HasMaxLength(100)
                .HasColumnType("character varying(100)")
                .HasColumnName("title");

                b.Property <long>("UserId")
                .HasColumnType("bigint")
                .HasColumnName("user_id");

                b.HasKey("Id")
                .HasName("pk_audios");

                b.HasIndex("Created")
                .HasDatabaseName("ix_audios_created");

                b.HasIndex("Tags")
                .HasDatabaseName("ix_audios_tags");

                NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex("Tags"), "GIN");

                b.HasIndex("Title")
                .HasDatabaseName("ix_audios_title");

                b.HasIndex("UserId")
                .HasDatabaseName("ix_audios_user_id");

                b.ToTable("audios", (string)null);
            });

            modelBuilder.Entity("Audiochan.Domain.Entities.FavoriteAudio", b =>
            {
                b.Property <long>("AudioId")
                .HasColumnType("bigint")
                .HasColumnName("audio_id");

                b.Property <long>("UserId")
                .HasColumnType("bigint")
                .HasColumnName("user_id");

                b.Property <long?>("AudioId1")
                .HasColumnType("bigint")
                .HasColumnName("audio_id1");

                b.Property <DateTime>("Favorited")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("favorited");

                b.HasKey("AudioId", "UserId")
                .HasName("pk_favorite_audios");

                b.HasIndex("AudioId1")
                .HasDatabaseName("ix_favorite_audios_audio_id1");

                b.HasIndex("UserId")
                .HasDatabaseName("ix_favorite_audios_user_id");

                b.ToTable("favorite_audios", (string)null);
            });

            modelBuilder.Entity("Audiochan.Domain.Entities.FollowedUser", b =>
            {
                b.Property <long>("ObserverId")
                .HasColumnType("bigint")
                .HasColumnName("observer_id");

                b.Property <long>("TargetId")
                .HasColumnType("bigint")
                .HasColumnName("target_id");

                b.Property <DateTime>("FollowedDate")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("followed_date");

                b.Property <DateTime?>("UnfollowedDate")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("unfollowed_date");

                b.HasKey("ObserverId", "TargetId")
                .HasName("pk_followed_users");

                b.HasIndex("FollowedDate")
                .HasDatabaseName("ix_followed_users_followed_date");

                b.HasIndex("TargetId")
                .HasDatabaseName("ix_followed_users_target_id");

                b.ToTable("followed_users", (string)null);
            });

            modelBuilder.Entity("Audiochan.Domain.Entities.User", b =>
            {
                b.Property <long>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("bigint")
                .HasColumnName("id");

                NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property <long>("Id"));

                b.Property <DateTime>("Created")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("created");

                b.Property <string>("Email")
                .IsRequired()
                .HasMaxLength(256)
                .HasColumnType("character varying(256)")
                .HasColumnName("email");

                b.Property <DateTime?>("LastModified")
                .HasColumnType("timestamp with time zone")
                .HasColumnName("last_modified");

                b.Property <string>("PasswordHash")
                .IsRequired()
                .HasColumnType("text")
                .HasColumnName("password_hash");

                b.Property <string>("Picture")
                .HasColumnType("text")
                .HasColumnName("picture");

                b.Property <int>("Role")
                .HasColumnType("integer")
                .HasColumnName("role");

                b.Property <string>("UserName")
                .IsRequired()
                .HasMaxLength(256)
                .HasColumnType("character varying(256)")
                .HasColumnName("user_name");

                b.HasKey("Id")
                .HasName("pk_users");

                b.HasIndex("Email")
                .IsUnique()
                .HasDatabaseName("ix_users_email");

                b.HasIndex("UserName")
                .IsUnique()
                .HasDatabaseName("ix_users_user_name");

                b.ToTable("users", (string)null);
            });

            modelBuilder.Entity("Audiochan.Domain.Entities.Audio", b =>
            {
                b.HasOne("Audiochan.Domain.Entities.User", "User")
                .WithMany("Audios")
                .HasForeignKey("UserId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_audios_users_user_id");

                b.Navigation("User");
            });

            modelBuilder.Entity("Audiochan.Domain.Entities.FavoriteAudio", b =>
            {
                b.HasOne("Audiochan.Domain.Entities.Audio", "Audio")
                .WithMany()
                .HasForeignKey("AudioId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_favorite_audios_audios_audio_id");

                b.HasOne("Audiochan.Domain.Entities.Audio", null)
                .WithMany("FavoriteAudios")
                .HasForeignKey("AudioId1")
                .HasConstraintName("fk_favorite_audios_audios_audio_id1");

                b.HasOne("Audiochan.Domain.Entities.User", "User")
                .WithMany("FavoriteAudios")
                .HasForeignKey("UserId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_favorite_audios_users_user_id");

                b.Navigation("Audio");

                b.Navigation("User");
            });

            modelBuilder.Entity("Audiochan.Domain.Entities.FollowedUser", b =>
            {
                b.HasOne("Audiochan.Domain.Entities.User", "Observer")
                .WithMany("Followings")
                .HasForeignKey("ObserverId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_followed_users_users_observer_id");

                b.HasOne("Audiochan.Domain.Entities.User", "Target")
                .WithMany("Followers")
                .HasForeignKey("TargetId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired()
                .HasConstraintName("fk_followed_users_users_target_id");

                b.Navigation("Observer");

                b.Navigation("Target");
            });

            modelBuilder.Entity("Audiochan.Domain.Entities.Audio", b =>
            {
                b.Navigation("FavoriteAudios");
            });

            modelBuilder.Entity("Audiochan.Domain.Entities.User", b =>
            {
                b.Navigation("Audios");

                b.Navigation("FavoriteAudios");

                b.Navigation("Followers");

                b.Navigation("Followings");
            });
#pragma warning restore 612, 618
        }