diff --git a/api/src/Kurs.Platform.Domain/Entities/LogEntry.cs b/api/src/Kurs.Platform.Domain/Entities/LogEntry.cs new file mode 100644 index 00000000..9cdc8d81 --- /dev/null +++ b/api/src/Kurs.Platform.Domain/Entities/LogEntry.cs @@ -0,0 +1,15 @@ +using System; +using System.Text.Json; +using Volo.Abp.Domain.Entities; + +namespace Kurs.Platform.Entities; + +public class LogEntry: Entity +{ + public DateTime Timestamp { get; set; } + public string Level { get; set; } + public string Message { get; set; } + public string? MessageTemplate { get; set; } + public string? Exception { get; set; } + public JsonDocument? Properties { get; set; } +} diff --git a/api/src/Kurs.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs b/api/src/Kurs.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs index ec63e6e3..dc369eaf 100644 --- a/api/src/Kurs.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs +++ b/api/src/Kurs.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs @@ -39,6 +39,7 @@ public class PlatformDbContext : public DbSet PublicApis { get; set; } public DbSet GlobalSearchs { get; set; } public DbSet AiBots { get; set; } + public DbSet LogEntrys { get; set; } #region Entities from the modules @@ -205,5 +206,11 @@ public class PlatformDbContext : b.ToTable(PlatformConsts.DbTablePrefix + nameof(AiBot), PlatformConsts.DbSchema); b.ConfigureByConvention(); }); + + builder.Entity(b => + { + b.ToTable(PlatformConsts.DbTablePrefix + nameof(LogEntry), PlatformConsts.DbSchema); + b.ConfigureByConvention(); + }); } } diff --git a/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20250507065018_LogEntry.Designer.cs b/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20250507065018_LogEntry.Designer.cs new file mode 100644 index 00000000..c7565eab --- /dev/null +++ b/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20250507065018_LogEntry.Designer.cs @@ -0,0 +1,3915 @@ +// +using System; +using System.Text.Json; +using Kurs.Platform.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace Kurs.Platform.Migrations +{ + [DbContext(typeof(PlatformDbContext))] + [Migration("20250507065018_LogEntry")] + partial class LogEntry + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) + .HasAnnotation("ProductVersion", "9.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Kurs.Languages.Entities.Language", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CultureName") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("character varying(10)") + .UseCollation("tr-x-icu"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsEnabled") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MultipleCultures") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("TwoLetterISOLanguageName") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("UiCultureName") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("character varying(10)") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.ToTable("PLanguage", (string)null); + }); + + modelBuilder.Entity("Kurs.Languages.Entities.LanguageKey", b => + { + b.Property("ResourceName") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("Key") + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.HasKey("ResourceName", "Key"); + + b.ToTable("PLanguageKey", (string)null); + }); + + modelBuilder.Entity("Kurs.Languages.Entities.LanguageText", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CultureName") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("character varying(10)") + .UseCollation("tr-x-icu"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Key") + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ResourceName") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.HasIndex("ResourceName", "Key"); + + b.ToTable("PLanguageText", (string)null); + }); + + modelBuilder.Entity("Kurs.MailQueue.Domain.Entities.BackgroundWorker_MailQueue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Attachment") + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("AttachmentParameter") + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .UseCollation("tr-x-icu"); + + b.Property("AwsMessageId") + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("From") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MailParameter") + .HasMaxLength(8000) + .HasColumnType("character varying(8000)") + .UseCollation("tr-x-icu"); + + b.Property("RelatedRecordId") + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("SendStatus") + .HasColumnType("boolean"); + + b.Property("SendTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Table") + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("TableParameter") + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .UseCollation("tr-x-icu"); + + b.Property("TemplateId") + .HasColumnType("uuid"); + + b.Property("To") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.ToTable("PBackgroundWorker_MailQueue", (string)null); + }); + + modelBuilder.Entity("Kurs.MailQueue.Domain.Entities.BackgroundWorker_MailQueueEvents", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AwsMessageId") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("Event") + .HasMaxLength(20) + .HasColumnType("character varying(20)") + .UseCollation("tr-x-icu"); + + b.Property("EventDate") + .HasColumnType("timestamp with time zone"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MailAddress") + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("ResponseDescription") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.ToTable("PBackgroundWorker_MailQueueEvents", (string)null); + }); + + modelBuilder.Entity("Kurs.MailQueue.Domain.Entities.BackgroundWorker_MailQueueTableFormat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Caption") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("ColumnName") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("Css") + .HasMaxLength(1000) + .HasColumnType("character varying(1000)") + .UseCollation("tr-x-icu"); + + b.Property("DataFormat") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("DataType") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("FooterCss") + .HasMaxLength(1000) + .HasColumnType("character varying(1000)") + .UseCollation("tr-x-icu"); + + b.Property("HeaderCss") + .HasMaxLength(1000) + .HasColumnType("character varying(1000)") + .UseCollation("tr-x-icu"); + + b.Property("IsHidden") + .HasColumnType("boolean"); + + b.Property("IsProtected") + .HasColumnType("boolean"); + + b.Property("Order") + .HasColumnType("smallint"); + + b.Property("SubTotal") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("TableName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("Width") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "TableName", "Order" }, "IX_MailQueueTableFormat") + .IsUnique(); + + b.ToTable("PBackgroundWorker_MailQueueTableFormat", (string)null); + }); + + modelBuilder.Entity("Kurs.Notifications.Entities.Notification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("Identifier") + .IsRequired() + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsRead") + .HasColumnType("boolean"); + + b.Property("IsSent") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Message") + .IsRequired() + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("NotificationChannel") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("character varying(10)") + .UseCollation("tr-x-icu"); + + b.Property("NotificationRuleId") + .HasColumnType("uuid"); + + b.Property("NotificationType") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("ReadTime") + .HasColumnType("timestamp with time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.ToTable("PNotification", (string)null); + }); + + modelBuilder.Entity("Kurs.Notifications.Entities.NotificationRule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Channel") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("character varying(10)") + .UseCollation("tr-x-icu"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsActive") + .HasColumnType("boolean"); + + b.Property("IsCustomized") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsFixed") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("NotificationType") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("RecipientId") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("RecipientType") + .IsRequired() + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.ToTable("PNotificationRule", (string)null); + }); + + modelBuilder.Entity("Kurs.Platform.Entities.AiBot", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("BotName") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.ToTable("PAiBot", (string)null); + }); + + modelBuilder.Entity("Kurs.Platform.Entities.BackgroundWorker", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AfterSp") + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("BeforeSp") + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Cron") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("DataSourceCode") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsActive") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("Options") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("WorkerType") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.ToTable("PBackgroundWorker", (string)null); + }); + + modelBuilder.Entity("Kurs.Platform.Entities.Chart", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AdaptiveLayoutJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("AnimationJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("AnnotationsJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("ArgumentAxisJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("ChartCode") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("CommonAnnotationsSettingsJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("CommonAxisSettingsJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("CommonJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("CommonPaneSettingsJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("CommonSeriesSettingsJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CrosshairJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("CultureName") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("text") + .HasDefaultValue("en") + .UseCollation("tr-x-icu"); + + b.Property("DataSourceCode") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("DataSourceJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExportJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsOrganizationUnit") + .HasColumnType("boolean"); + + b.Property("IsTenant") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LegendJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("MarginJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("PanesJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("PermissionJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("RoleId") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("ScrollBarJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("SeriesJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("SizeJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("TitleJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("TooltipJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("UserId") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("ValueAxisJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("ZoomAndPanJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.ToTable("PChart", (string)null); + }); + + modelBuilder.Entity("Kurs.Platform.Entities.DataSource", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("ConnectionString") + .HasMaxLength(200) + .HasColumnType("character varying(200)") + .UseCollation("tr-x-icu"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DataSourceType") + .HasColumnType("integer"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.HasKey("Id"); + + b.ToTable("PDataSource", (string)null); + }); + + modelBuilder.Entity("Kurs.Platform.Entities.GlobalSearch", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Group") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("System") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Term") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Url") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Weight") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.ToTable("PGlobalSearch", (string)null); + }); + + modelBuilder.Entity("Kurs.Platform.Entities.IpRestriction", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("IP") + .IsRequired() + .HasMaxLength(32) + .HasColumnType("character varying(32)") + .UseCollation("tr-x-icu"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ResourceId") + .HasMaxLength(32) + .HasColumnType("character varying(32)") + .UseCollation("tr-x-icu"); + + b.Property("ResourceType") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("character varying(10)") + .UseCollation("tr-x-icu"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("PIpRestriction", (string)null); + }); + + modelBuilder.Entity("Kurs.Platform.Entities.ListForm", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ColumnOptionJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("CommandColumnJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CultureName") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("CustomJsSourcesJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("CustomStyleSourcesJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("DataSourceCode") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("DefaultFilter") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("DeleteCommand") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("DeleteFieldsDefaultValueJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("DeleteServiceAddress") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("EditingFormJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("EditingOptionJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("FilterPanelJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("FilterRowJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("FormFieldsDefaultValueJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("GroupPanelJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("HeaderFilterJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Height") + .HasColumnType("integer"); + + b.Property("InsertCommand") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("InsertFieldsDefaultValueJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("InsertServiceAddress") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsOrganizationUnit") + .HasColumnType("boolean"); + + b.Property("IsSubForm") + .HasColumnType("boolean"); + + b.Property("IsTenant") + .HasColumnType("boolean"); + + b.Property("KeyFieldDbSourceType") + .HasColumnType("integer"); + + b.Property("KeyFieldName") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ListFormCode") + .IsRequired() + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("ListFormType") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Name") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("PageSize") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(10); + + b.Property("PagerOptionJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("PermissionJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("SearchPanelJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("SelectCommand") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("SelectCommandType") + .HasColumnType("integer"); + + b.Property("SelectFieldsDefaultValueJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("SelectionJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("SortMode") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("StateStoringJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("SubFormsJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("TableName") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Title") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("UpdateCommand") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("UpdateFieldsDefaultValueJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("UpdateServiceAddress") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Width") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.ToTable("PListForm", (string)null); + }); + + modelBuilder.Entity("Kurs.Platform.Entities.ListFormCustomization", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CustomizationData") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("CustomizationType") + .HasColumnType("integer"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("FilterName") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ListFormCode") + .IsRequired() + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("RoleId") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("UserId") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.HasIndex("ListFormCode"); + + b.ToTable("PListFormCustomization", (string)null); + }); + + modelBuilder.Entity("Kurs.Platform.Entities.ListFormField", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Alignment") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("AllowSearch") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false); + + b.Property("BandName") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("CaptionName") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("ColumnCssClass") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("ColumnCssValue") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("ColumnCustomizationJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("ColumnFilterJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("ColumnHeaderJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("ColumnStylingJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CultureName") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("EditingJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("EditorOptions") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("FieldName") + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("Format") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("GroupSummaryJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("GroupingJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("IsActive") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(true); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("JoinTableJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ListFormCode") + .IsRequired() + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("ListOrderNo") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(30); + + b.Property("LookupJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("PermissionJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("PivotSettingsJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("RoleId") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("SortDirection") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("SortIndex") + .HasColumnType("integer"); + + b.Property("SourceDbType") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(16); + + b.Property("TotalSummaryJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("UserId") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("ValidationRuleJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Visible") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(true); + + b.Property("Width") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(100); + + b.HasKey("Id"); + + b.HasIndex("ListFormCode"); + + b.ToTable("PListFormField", (string)null); + }); + + modelBuilder.Entity("Kurs.Platform.Entities.LogEntry", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Exception") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Level") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Message") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("MessageTemplate") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Properties") + .HasColumnType("jsonb"); + + b.Property("Timestamp") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.ToTable("PLogEntry", (string)null); + }); + + modelBuilder.Entity("Kurs.Platform.Entities.Menu", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CssClass") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("CultureName") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("ElementId") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("Icon") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsDisabled") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Order") + .HasColumnType("integer"); + + b.Property("ParentCode") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("RequiredPermissionName") + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.Property("RoleId") + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .UseCollation("tr-x-icu"); + + b.Property("Target") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("Url") + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("UserId") + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.ToTable("PMenu", (string)null); + }); + + modelBuilder.Entity("Kurs.Platform.Entities.PublicApi", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DataSourceCode") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Method") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Name") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("ParametersJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("PermissionsJson") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Sql") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Url") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.ToTable("PPublicApi", (string)null); + }); + + modelBuilder.Entity("Kurs.Settings.Entities.SettingDefinition", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DataType") + .IsRequired() + .HasMaxLength(16) + .HasColumnType("character varying(16)") + .UseCollation("tr-x-icu"); + + b.Property("DefaultValue") + .HasMaxLength(2048) + .HasColumnType("character varying(2048)") + .UseCollation("tr-x-icu"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("DescriptionKey") + .HasMaxLength(512) + .HasColumnType("character varying(512)") + .UseCollation("tr-x-icu"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsEncrypted") + .HasColumnType("boolean"); + + b.Property("IsInherited") + .HasColumnType("boolean"); + + b.Property("IsVisibleToClients") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MainGroupKey") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.Property("NameKey") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.Property("Order") + .HasColumnType("integer"); + + b.Property("Providers") + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.Property("RequiredPermissionName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.Property("SelectOptions") + .HasColumnType("text"); + + b.Property("SubGroupKey") + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.ToTable("PSettingDefinition", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("character varying(96)") + .HasColumnName("ApplicationName") + .UseCollation("tr-x-icu"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("character varying(512)") + .HasColumnName("BrowserInfo") + .UseCollation("tr-x-icu"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .HasColumnName("ClientId") + .UseCollation("tr-x-icu"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .HasColumnName("ClientIpAddress") + .UseCollation("tr-x-icu"); + + b.Property("ClientName") + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .HasColumnName("ClientName") + .UseCollation("tr-x-icu"); + + b.Property("Comments") + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .HasColumnName("Comments") + .UseCollation("tr-x-icu"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp") + .UseCollation("tr-x-icu"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .HasColumnName("CorrelationId") + .UseCollation("tr-x-icu"); + + b.Property("Exceptions") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("ExecutionDuration") + .HasColumnType("integer") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("timestamp with time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("HttpMethod") + .HasMaxLength(16) + .HasColumnType("character varying(16)") + .HasColumnName("HttpMethod") + .UseCollation("tr-x-icu"); + + b.Property("HttpStatusCode") + .HasColumnType("integer") + .HasColumnName("HttpStatusCode"); + + b.Property("ImpersonatorTenantId") + .HasColumnType("uuid") + .HasColumnName("ImpersonatorTenantId"); + + b.Property("ImpersonatorTenantName") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .HasColumnName("ImpersonatorTenantName") + .UseCollation("tr-x-icu"); + + b.Property("ImpersonatorUserId") + .HasColumnType("uuid") + .HasColumnName("ImpersonatorUserId"); + + b.Property("ImpersonatorUserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .HasColumnName("ImpersonatorUserName") + .UseCollation("tr-x-icu"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .HasColumnName("TenantName") + .UseCollation("tr-x-icu"); + + b.Property("Url") + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .HasColumnName("Url") + .UseCollation("tr-x-icu"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("UserId"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .HasColumnName("UserName") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "ExecutionTime"); + + b.HasIndex("TenantId", "UserId", "ExecutionTime"); + + b.ToTable("AbpAuditLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AuditLogId") + .HasColumnType("uuid") + .HasColumnName("AuditLogId"); + + b.Property("ExecutionDuration") + .HasColumnType("integer") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("ExecutionTime"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("MethodName") + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .HasColumnName("MethodName") + .UseCollation("tr-x-icu"); + + b.Property("Parameters") + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("Parameters") + .UseCollation("tr-x-icu"); + + b.Property("ServiceName") + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .HasColumnName("ServiceName") + .UseCollation("tr-x-icu"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "ServiceName", "MethodName", "ExecutionTime"); + + b.ToTable("AbpAuditLogActions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AuditLogId") + .HasColumnType("uuid") + .HasColumnName("AuditLogId"); + + b.Property("ChangeTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("ChangeTime"); + + b.Property("ChangeType") + .HasColumnType("smallint") + .HasColumnName("ChangeType"); + + b.Property("EntityId") + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .HasColumnName("EntityId") + .UseCollation("tr-x-icu"); + + b.Property("EntityTenantId") + .HasColumnType("uuid"); + + b.Property("EntityTypeFullName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .HasColumnName("EntityTypeFullName") + .UseCollation("tr-x-icu"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "EntityTypeFullName", "EntityId"); + + b.ToTable("AbpEntityChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("EntityChangeId") + .HasColumnType("uuid"); + + b.Property("NewValue") + .HasMaxLength(512) + .HasColumnType("character varying(512)") + .HasColumnName("NewValue") + .UseCollation("tr-x-icu"); + + b.Property("OriginalValue") + .HasMaxLength(512) + .HasColumnType("character varying(512)") + .HasColumnName("OriginalValue") + .UseCollation("tr-x-icu"); + + b.Property("PropertyName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .HasColumnName("PropertyName") + .UseCollation("tr-x-icu"); + + b.Property("PropertyTypeFullName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .HasColumnName("PropertyTypeFullName") + .UseCollation("tr-x-icu"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("EntityChangeId"); + + b.ToTable("AbpEntityPropertyChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.BackgroundJobs.BackgroundJobRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp") + .UseCollation("tr-x-icu"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsAbandoned") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false); + + b.Property("JobArgs") + .IsRequired() + .HasMaxLength(1048576) + .HasColumnType("character varying(1048576)") + .UseCollation("tr-x-icu"); + + b.Property("JobName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.Property("LastTryTime") + .HasColumnType("timestamp with time zone"); + + b.Property("NextTryTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Priority") + .ValueGeneratedOnAdd() + .HasColumnType("smallint") + .HasDefaultValue((byte)15); + + b.Property("TryCount") + .ValueGeneratedOnAdd() + .HasColumnType("smallint") + .HasDefaultValue((short)0); + + b.HasKey("Id"); + + b.HasIndex("IsAbandoned", "NextTryTime"); + + b.ToTable("AbpBackgroundJobs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AllowedProviders") + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .UseCollation("tr-x-icu"); + + b.Property("DefaultValue") + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .UseCollation("tr-x-icu"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .UseCollation("tr-x-icu"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .UseCollation("tr-x-icu"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("GroupName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.Property("IsAvailableToHost") + .HasColumnType("boolean"); + + b.Property("IsVisibleToClients") + .HasColumnType("boolean"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.Property("ParentName") + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.Property("ValueType") + .HasMaxLength(2048) + .HasColumnType("character varying(2048)") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.HasIndex("GroupName"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpFeatures", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureGroupDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .UseCollation("tr-x-icu"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpFeatureGroups", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .UseCollation("tr-x-icu"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .UseCollation("tr-x-icu"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique(); + + b.ToTable("AbpFeatureValues", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp") + .UseCollation("tr-x-icu"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .UseCollation("tr-x-icu"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsStatic") + .HasColumnType("boolean"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .UseCollation("tr-x-icu"); + + b.Property("Regex") + .HasMaxLength(512) + .HasColumnType("character varying(512)") + .UseCollation("tr-x-icu"); + + b.Property("RegexDescription") + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.Property("Required") + .HasColumnType("boolean"); + + b.Property("ValueType") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.ToTable("AbpClaimTypes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("SourceTenantId") + .HasColumnType("uuid"); + + b.Property("SourceUserId") + .HasColumnType("uuid"); + + b.Property("TargetTenantId") + .HasColumnType("uuid"); + + b.Property("TargetUserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") + .IsUnique(); + + b.ToTable("AbpLinkUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp") + .UseCollation("tr-x-icu"); + + b.Property("EntityVersion") + .HasColumnType("integer"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDefault") + .HasColumnType("boolean") + .HasColumnName("IsDefault"); + + b.Property("IsPublic") + .HasColumnType("boolean") + .HasColumnName("IsPublic"); + + b.Property("IsStatic") + .HasColumnType("boolean") + .HasColumnName("IsStatic"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .UseCollation("tr-x-icu"); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .UseCollation("tr-x-icu"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .UseCollation("tr-x-icu"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .UseCollation("tr-x-icu"); + + b.Property("RoleId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AbpRoleClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Action") + .HasMaxLength(96) + .HasColumnType("character varying(96)") + .UseCollation("tr-x-icu"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("character varying(96)") + .UseCollation("tr-x-icu"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("character varying(512)") + .UseCollation("tr-x-icu"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .UseCollation("tr-x-icu"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .UseCollation("tr-x-icu"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp") + .UseCollation("tr-x-icu"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .UseCollation("tr-x-icu"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("Identity") + .HasMaxLength(96) + .HasColumnType("character varying(96)") + .UseCollation("tr-x-icu"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .UseCollation("tr-x-icu"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Action"); + + b.HasIndex("TenantId", "ApplicationName"); + + b.HasIndex("TenantId", "Identity"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSecurityLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySession", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .UseCollation("tr-x-icu"); + + b.Property("Device") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .UseCollation("tr-x-icu"); + + b.Property("DeviceInfo") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .UseCollation("tr-x-icu"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IpAddresses") + .HasMaxLength(2048) + .HasColumnType("character varying(2048)") + .UseCollation("tr-x-icu"); + + b.Property("LastAccessed") + .HasColumnType("timestamp with time zone"); + + b.Property("SessionId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.Property("SignedIn") + .HasColumnType("timestamp with time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("Device"); + + b.HasIndex("SessionId"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSessions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AccessFailedCount") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("AccessFailedCount"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp") + .UseCollation("tr-x-icu"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .HasColumnName("Email") + .UseCollation("tr-x-icu"); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("EmailConfirmed"); + + b.Property("EntityVersion") + .HasColumnType("integer"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsActive") + .HasColumnType("boolean") + .HasColumnName("IsActive"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsExternal") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsExternal"); + + b.Property("IsVerified") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastPasswordChangeTime") + .HasColumnType("timestamp with time zone"); + + b.Property("LockoutEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("LockoutEnabled"); + + b.Property("LockoutEnd") + .HasColumnType("timestamp with time zone"); + + b.Property("LoginEndDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .HasColumnName("Name") + .UseCollation("tr-x-icu"); + + b.Property("NormalizedEmail") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .HasColumnName("NormalizedEmail") + .UseCollation("tr-x-icu"); + + b.Property("NormalizedUserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .HasColumnName("NormalizedUserName") + .UseCollation("tr-x-icu"); + + b.Property("PasswordHash") + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .HasColumnName("PasswordHash") + .UseCollation("tr-x-icu"); + + b.Property("PhoneNumber") + .HasMaxLength(16) + .HasColumnType("character varying(16)") + .HasColumnName("PhoneNumber") + .UseCollation("tr-x-icu"); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("PhoneNumberConfirmed"); + + b.Property("RocketUsername") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("SecurityStamp") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .HasColumnName("SecurityStamp") + .UseCollation("tr-x-icu"); + + b.Property("ShouldChangePasswordOnNextLogin") + .HasColumnType("boolean"); + + b.Property("Surname") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .HasColumnName("Surname") + .UseCollation("tr-x-icu"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("TwoFactorEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("TwoFactorEnabled"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .HasColumnName("UserName") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.HasIndex("Email"); + + b.HasIndex("NormalizedEmail"); + + b.HasIndex("NormalizedUserName"); + + b.HasIndex("UserName"); + + b.ToTable("AbpUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .UseCollation("tr-x-icu"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .UseCollation("tr-x-icu"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpUserClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserDelegation", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("EndTime") + .HasColumnType("timestamp with time zone"); + + b.Property("SourceUserId") + .HasColumnType("uuid"); + + b.Property("StartTime") + .HasColumnType("timestamp with time zone"); + + b.Property("TargetUserId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("AbpUserDelegations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .UseCollation("tr-x-icu"); + + b.Property("ProviderDisplayName") + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(196) + .HasColumnType("character varying(196)") + .UseCollation("tr-x-icu"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "LoginProvider"); + + b.HasIndex("LoginProvider", "ProviderKey"); + + b.ToTable("AbpUserLogins", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uuid"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "UserId"); + + b.HasIndex("UserId", "OrganizationUnitId"); + + b.ToTable("AbpUserOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("RoleId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId", "UserId"); + + b.ToTable("AbpUserRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .UseCollation("tr-x-icu"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Value") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AbpUserTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(95) + .HasColumnType("character varying(95)") + .HasColumnName("Code") + .UseCollation("tr-x-icu"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp") + .UseCollation("tr-x-icu"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .HasColumnName("DisplayName") + .UseCollation("tr-x-icu"); + + b.Property("EntityVersion") + .HasColumnType("integer"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ParentId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Code"); + + b.HasIndex("ParentId"); + + b.ToTable("AbpOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uuid"); + + b.Property("RoleId") + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "RoleId"); + + b.HasIndex("RoleId", "OrganizationUnitId"); + + b.ToTable("AbpOrganizationUnitRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ApplicationType") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("ClientId") + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("ClientSecret") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("ClientType") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("ClientUri") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp") + .UseCollation("tr-x-icu"); + + b.Property("ConsentType") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("DisplayNames") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("JsonWebKeySet") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LogoUri") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Permissions") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("PostLogoutRedirectUris") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Properties") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("RedirectUris") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Requirements") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Settings") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("OpenIddictApplications", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp") + .UseCollation("tr-x-icu"); + + b.Property("CreationDate") + .HasColumnType("timestamp with time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("Properties") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Scopes") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("character varying(400)") + .UseCollation("tr-x-icu"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictAuthorizations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Scopes.OpenIddictScope", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp") + .UseCollation("tr-x-icu"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Descriptions") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("DisplayName") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("DisplayNames") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasMaxLength(200) + .HasColumnType("character varying(200)") + .UseCollation("tr-x-icu"); + + b.Property("Properties") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Resources") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("OpenIddictScopes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AuthorizationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp") + .UseCollation("tr-x-icu"); + + b.Property("CreationDate") + .HasColumnType("timestamp with time zone"); + + b.Property("ExpirationDate") + .HasColumnType("timestamp with time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("Payload") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Properties") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("RedemptionDate") + .HasColumnType("timestamp with time zone"); + + b.Property("ReferenceId") + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .UseCollation("tr-x-icu"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("character varying(400)") + .UseCollation("tr-x-icu"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.HasIndex("AuthorizationId"); + + b.HasIndex("ReferenceId"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .UseCollation("tr-x-icu"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("GroupName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.Property("IsEnabled") + .HasColumnType("boolean"); + + b.Property("MultiTenancySide") + .HasColumnType("smallint"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.Property("ParentName") + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.Property("Providers") + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.Property("StateCheckers") + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.HasIndex("GroupName"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .UseCollation("tr-x-icu"); + + b.Property("ProviderName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .UseCollation("tr-x-icu"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Name", "ProviderName", "ProviderKey") + .IsUnique(); + + b.ToTable("AbpPermissionGrants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGroupDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .UseCollation("tr-x-icu"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissionGroups", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .UseCollation("tr-x-icu"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .UseCollation("tr-x-icu"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2048) + .HasColumnType("character varying(2048)") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique(); + + b.ToTable("AbpSettings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.SettingDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("DefaultValue") + .HasMaxLength(2048) + .HasColumnType("character varying(2048)") + .UseCollation("tr-x-icu"); + + b.Property("Description") + .HasMaxLength(512) + .HasColumnType("character varying(512)") + .UseCollation("tr-x-icu"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)") + .UseCollation("tr-x-icu"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsEncrypted") + .HasColumnType("boolean"); + + b.Property("IsInherited") + .HasColumnType("boolean"); + + b.Property("IsVisibleToClients") + .HasColumnType("boolean"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)") + .UseCollation("tr-x-icu"); + + b.Property("Providers") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpSettingDefinitions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp") + .UseCollation("tr-x-icu"); + + b.Property("CreationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("DeletionTime"); + + b.Property("EntityVersion") + .HasColumnType("integer"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .UseCollation("tr-x-icu"); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .UseCollation("tr-x-icu"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpTenants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.Property("TenantId") + .HasColumnType("uuid"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("character varying(64)") + .UseCollation("tr-x-icu"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)") + .UseCollation("tr-x-icu"); + + b.HasKey("TenantId", "Name"); + + b.ToTable("AbpTenantConnectionStrings", (string)null); + }); + + modelBuilder.Entity("Kurs.Languages.Entities.LanguageText", b => + { + b.HasOne("Kurs.Languages.Entities.LanguageKey", null) + .WithMany("Texts") + .HasForeignKey("ResourceName", "Key") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("Kurs.Platform.Entities.ListFormCustomization", b => + { + b.HasOne("Kurs.Platform.Entities.ListForm", null) + .WithMany() + .HasForeignKey("ListFormCode") + .HasPrincipalKey("ListFormCode") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Kurs.Platform.Entities.ListFormField", b => + { + b.HasOne("Kurs.Platform.Entities.ListForm", null) + .WithMany() + .HasForeignKey("ListFormCode") + .HasPrincipalKey("ListFormCode") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("Actions") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("EntityChanges") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.EntityChange", null) + .WithMany("PropertyChanges") + .HasForeignKey("EntityChangeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany("Claims") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Claims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Logins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("OrganizationUnits") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Tokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("ParentId"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany("Roles") + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + + b.HasOne("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", null) + .WithMany() + .HasForeignKey("AuthorizationId"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.HasOne("Volo.Abp.TenantManagement.Tenant", null) + .WithMany("ConnectionStrings") + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Kurs.Languages.Entities.LanguageKey", b => + { + b.Navigation("Texts"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Navigation("Actions"); + + b.Navigation("EntityChanges"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Navigation("PropertyChanges"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Navigation("Claims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Navigation("Claims"); + + b.Navigation("Logins"); + + b.Navigation("OrganizationUnits"); + + b.Navigation("Roles"); + + b.Navigation("Tokens"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Navigation("Roles"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Navigation("ConnectionStrings"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20250507065018_LogEntry.cs b/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20250507065018_LogEntry.cs new file mode 100644 index 00000000..02917e6f --- /dev/null +++ b/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20250507065018_LogEntry.cs @@ -0,0 +1,40 @@ +using System; +using System.Text.Json; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Kurs.Platform.Migrations +{ + /// + public partial class LogEntry : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "PLogEntry", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + Timestamp = table.Column(type: "timestamp with time zone", nullable: false), + Level = table.Column(type: "text", nullable: true, collation: "tr-x-icu"), + Message = table.Column(type: "text", nullable: true, collation: "tr-x-icu"), + MessageTemplate = table.Column(type: "text", nullable: true, collation: "tr-x-icu"), + Exception = table.Column(type: "text", nullable: true, collation: "tr-x-icu"), + Properties = table.Column(type: "jsonb", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_PLogEntry", x => x.Id); + }); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "PLogEntry"); + } + } +} diff --git a/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs b/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs index 99a276c2..690f6933 100644 --- a/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs +++ b/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs @@ -1,5 +1,6 @@ // using System; +using System.Text.Json; using Kurs.Platform.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; @@ -1472,6 +1473,38 @@ namespace Kurs.Platform.Migrations b.ToTable("PListFormField", (string)null); }); + modelBuilder.Entity("Kurs.Platform.Entities.LogEntry", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Exception") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Level") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Message") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("MessageTemplate") + .HasColumnType("text") + .UseCollation("tr-x-icu"); + + b.Property("Properties") + .HasColumnType("jsonb"); + + b.Property("Timestamp") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.ToTable("PLogEntry", (string)null); + }); + modelBuilder.Entity("Kurs.Platform.Entities.Menu", b => { b.Property("Id") diff --git a/api/src/Kurs.Platform.HttpApi.Host/Kurs.Platform.HttpApi.Host.csproj b/api/src/Kurs.Platform.HttpApi.Host/Kurs.Platform.HttpApi.Host.csproj index 422bdf8b..fb39b326 100644 --- a/api/src/Kurs.Platform.HttpApi.Host/Kurs.Platform.HttpApi.Host.csproj +++ b/api/src/Kurs.Platform.HttpApi.Host/Kurs.Platform.HttpApi.Host.csproj @@ -24,7 +24,7 @@ - + diff --git a/api/src/Kurs.Platform.HttpApi.Host/Program.cs b/api/src/Kurs.Platform.HttpApi.Host/Program.cs index fa5e512a..edd99052 100644 --- a/api/src/Kurs.Platform.HttpApi.Host/Program.cs +++ b/api/src/Kurs.Platform.HttpApi.Host/Program.cs @@ -1,10 +1,6 @@ using System; using System.IO; using System.Threading.Tasks; -using Elastic.Channels; -using Elastic.Ingest.Elasticsearch; -using Elastic.Ingest.Elasticsearch.DataStreams; -using Elastic.Serilog.Sinks; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -23,31 +19,10 @@ public class Program .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? ""}.json", true) .Build(); - var url = configuration.GetValue("Elastic:Url"); - var index = configuration.GetValue("Elastic:Index"); - Log.Logger = new LoggerConfiguration() .ReadFrom.Configuration(configuration) - .WriteTo.Elasticsearch([new Uri(url)], opts => - { - opts.DataStream = new DataStreamName("kurs_platform", "api_logs", index); - opts.BootstrapMethod = BootstrapMethod.Failure; - }) .CreateLogger(); - - // Elastic.Serilog.Sinks paketi appsettings'ten okuyabilir hale gelince bu kullanılacak: - /* - "WriteTo": [ - { - "Name": "Elasticsearch", - "Args": { - "bootstrapMethod": "Failure", - "nodes": ["http://localhost:9200"], - "dataStream": "kurs_platform-api_logs-dev" - } - } - ] - */ + try { Log.Information("Starting Kurs.Platform.HttpApi.Host."); diff --git a/api/src/Kurs.Platform.HttpApi.Host/appsettings.json b/api/src/Kurs.Platform.HttpApi.Host/appsettings.json index c45f4d1a..63c21ced 100644 --- a/api/src/Kurs.Platform.HttpApi.Host/appsettings.json +++ b/api/src/Kurs.Platform.HttpApi.Host/appsettings.json @@ -29,29 +29,33 @@ "Index": "dev" }, "Serilog": { - "Using": ["Elastic.Serilog.Sinks", "Serilog.Sinks.Console"], "MinimumLevel": { "Default": "Information", "Override": { - "Microsoft": "Information", - "Microsoft.EntityFrameworkCore": "Warning", - "Microsoft.AspNetCore": "Warning", - "OpenIddict": "Information" + "Microsoft": "Warning", + "System": "Warning" } }, - "Enrich": ["FromLogContext"], - "WriteTo:Async": { - "Name": "Async", - "Args": { - "configure": [ - { - "Name": "Console", - "Args": { - "outputTemplate": "{Level}: {Message:lj} {Properties:j}{NewLine}{Exception}" + "WriteTo": [ + { + "Name": "PostgreSQL", + "Args": { + "connectionString": "User ID=sa;Password=NvQp8s@l;Host=localhost;Port=5432;Database=Demo;", + "tableName": "LogEntry", + "needAutoCreateTable": false, + "columnOptions": { + "timestamp": { "ColumnName": "timestamp" }, + "level": { "ColumnName": "level" }, + "message": { "ColumnName": "message" }, + "messageTemplate": { "ColumnName": "message_template" }, + "exception": { "ColumnName": "exception" }, + "properties": { + "ColumnName": "properties", + "Store": "Json" } } - ] + } } - } + ] } } diff --git a/configs/deployment/docker-compose-data.yml b/configs/deployment/docker-compose-data.yml index d65b8c6d..99f36678 100644 --- a/configs/deployment/docker-compose-data.yml +++ b/configs/deployment/docker-compose-data.yml @@ -8,9 +8,6 @@ networks: external: false volumes: - sql: - elastic: - kibana: sql-pg: services: @@ -24,56 +21,6 @@ services: networks: - db restart: always - sql: - image: mcr.microsoft.com/mssql/server:2022-CU16-ubuntu-22.04 - user: root - environment: - - SA_PASSWORD=NvQp8s@l - - ACCEPT_EULA=Y - - MSSQL_PID=Express - ports: - - 1433:1433 - volumes: - - sql:/var/opt/mssql - networks: - - db - restart: always - elastic: - image: docker.elastic.co/elasticsearch/elasticsearch:8.15.3 - volumes: - - ./configs/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml - - elastic:/usr/share/elasticsearch/data - ports: - - 9200:9200 - environment: - - xpack.security.enabled=false - - discovery.type=single-node - ulimits: - memlock: - soft: -1 - hard: -1 - nofile: - soft: 65536 - hard: 65536 - cap_add: - - IPC_LOCK - networks: - - log - restart: always - kibana: - depends_on: - - elastic - image: docker.elastic.co/kibana/kibana:8.15.3 - volumes: - - kibana:/usr/share/kibana/data - ports: - - 5601:5601 - environment: - - XPACK_SECURITY_ENABLED=false - - ELASTICSEARCH_HOSTS=http://elastic:9200 - networks: - - log - restart: always postgres: image: postgres:17 ports: diff --git a/configs/docker/docker-compose-data.yml b/configs/docker/docker-compose-data.yml index a09ef697..73094628 100644 --- a/configs/docker/docker-compose-data.yml +++ b/configs/docker/docker-compose-data.yml @@ -2,9 +2,6 @@ name: kurs-platform volumes: - sql: - elastic: - kibana: sql-pg: services: @@ -15,17 +12,6 @@ services: volumes: - ./configs/redis.conf:/redis.conf command: ["redis-server", "/redis.conf"] - sql: - image: mcr.microsoft.com/mssql/server:2019-CU8-ubuntu-16.04 - user: root - environment: - - SA_PASSWORD=NvQp8s@l - - ACCEPT_EULA=Y - - MSSQL_PID=Express - ports: - - 1433:1433 - volumes: - - sql:/var/opt/mssql cdn: image: tozlu/http-server:latest ports: @@ -34,36 +20,6 @@ services: volumes: - ./data/cdn:/public command: "/public -c10 --cors" - elastic: - image: docker.elastic.co/elasticsearch/elasticsearch:8.15.3 - volumes: - - ./configs/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml - - elastic:/usr/share/elasticsearch/data - ports: - - 9200:9200 - environment: - - xpack.security.enabled=false - - discovery.type=single-node - ulimits: - memlock: - soft: -1 - hard: -1 - nofile: - soft: 65536 - hard: 65536 - cap_add: - - IPC_LOCK - kibana: - depends_on: - - elastic - image: docker.elastic.co/kibana/kibana:8.15.3 - volumes: - - kibana:/usr/share/kibana/data - ports: - - 5601:5601 - environment: - - XPACK_SECURITY_ENABLED=false - - ELASTICSEARCH_HOSTS=http://elastic:9200 postgres: image: postgres:17 ports: