//
using System;
using System.Collections.Generic;
using Manager.DTOs;
using ManagerService.DTOs;
using ManagerService.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using NetTopologySuite.Geometries;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using Pgvector;
#nullable disable
namespace ManagerService.Migrations
{
[DbContext(typeof(MyInfoMateDbContext))]
partial class MyInfoMateDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "9.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "postgis");
NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "vector");
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("ManagerService.Data.ApiKey", b =>
{
b.Property("Id")
.HasColumnType("text");
b.Property("AppType")
.HasColumnType("integer");
b.Property("DateCreation")
.HasColumnType("timestamp with time zone");
b.Property("DateExpiration")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdate")
.HasColumnType("timestamp with time zone");
b.Property("InstanceId")
.IsRequired()
.HasColumnType("text");
b.Property("IsActive")
.HasColumnType("boolean");
b.Property("Key")
.HasColumnType("text");
b.Property("KeyHash")
.HasColumnType("text");
b.Property("Name")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("InstanceId");
b.ToTable("ApiKeys");
});
modelBuilder.Entity("ManagerService.Data.AppConfigurationLink", b =>
{
b.Property("Id")
.HasColumnType("text");
b.Property("ApplicationInstanceId")
.IsRequired()
.HasColumnType("text");
b.Property("ConfigurationId")
.IsRequired()
.HasColumnType("text");
b.Property("DateCreation")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdate")
.HasColumnType("timestamp with time zone");
b.Property("DeviceId")
.HasColumnType("text");
b.Property("GridColSpan")
.HasColumnType("integer");
b.Property("GridRowSpan")
.HasColumnType("integer");
b.Property("IsActive")
.HasColumnType("boolean");
b.Property("IsDate")
.HasColumnType("boolean");
b.Property("IsHour")
.HasColumnType("boolean");
b.Property("IsSectionImageBackground")
.HasColumnType("boolean");
b.Property("LoaderImageId")
.HasColumnType("text");
b.Property("LoaderImageUrl")
.HasColumnType("text");
b.Property("Order")
.HasColumnType("integer");
b.Property("PrimaryColor")
.HasColumnType("text");
b.Property("RoundedValue")
.HasColumnType("integer");
b.Property("ScreenPercentageSectionsMainPage")
.HasColumnType("integer");
b.Property("SecondaryColor")
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("ApplicationInstanceId");
b.HasIndex("ConfigurationId");
b.HasIndex("DeviceId");
b.ToTable("AppConfigurationLinks");
});
modelBuilder.Entity("ManagerService.Data.ApplicationInstance", b =>
{
b.Property("Id")
.HasColumnType("text");
b.Property("AppType")
.HasColumnType("integer");
b.Property("DateCreation")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdate")
.HasColumnType("timestamp with time zone");
b.Property("InstanceId")
.IsRequired()
.HasColumnType("text");
b.Property("IsAssistant")
.HasColumnType("boolean");
b.PrimitiveCollection>("Languages")
.HasColumnType("text[]");
b.Property("LoaderImageId")
.HasColumnType("text");
b.Property("LoaderImageUrl")
.HasColumnType("text");
b.Property("MainImageId")
.HasColumnType("text");
b.Property("MainImageUrl")
.HasColumnType("text");
b.Property("PrimaryColor")
.HasColumnType("text");
b.Property("SecondaryColor")
.HasColumnType("text");
b.Property("SectionEventId")
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("InstanceId");
b.HasIndex("SectionEventId");
b.ToTable("ApplicationInstances");
});
modelBuilder.Entity("ManagerService.Data.AuditLog", b =>
{
b.Property("Id")
.HasColumnType("text");
b.Property("Action")
.HasColumnType("text");
b.Property("EntityId")
.HasColumnType("text");
b.Property("EntityType")
.HasColumnType("text");
b.Property("InstanceId")
.HasColumnType("text");
b.Property("NewValues")
.HasColumnType("text");
b.Property("OldValues")
.HasColumnType("text");
b.Property("Timestamp")
.HasColumnType("timestamp with time zone");
b.Property("UserId")
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("InstanceId");
b.ToTable("AuditLogs");
});
modelBuilder.Entity("ManagerService.Data.Configuration", b =>
{
b.Property("Id")
.HasColumnType("text");
b.Property("DateCreation")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdate")
.HasColumnType("timestamp with time zone");
b.Property("ImageId")
.HasColumnType("text");
b.Property("ImageSource")
.HasColumnType("text");
b.Property("InstanceId")
.IsRequired()
.HasColumnType("text");
b.Property("IsOffline")
.HasColumnType("boolean");
b.Property("IsQRCode")
.HasColumnType("boolean");
b.Property("IsSearchNumber")
.HasColumnType("boolean");
b.Property("IsSearchText")
.HasColumnType("boolean");
b.Property("Label")
.IsRequired()
.HasColumnType("text");
b.PrimitiveCollection>("Languages")
.HasColumnType("text[]");
b.Property("LoaderImageId")
.HasColumnType("text");
b.Property("LoaderImageUrl")
.HasColumnType("text");
b.Property("PrimaryColor")
.HasColumnType("text");
b.Property("SecondaryColor")
.HasColumnType("text");
b.Property("Title")
.IsRequired()
.HasColumnType("jsonb");
b.HasKey("Id");
b.HasIndex("InstanceId");
b.ToTable("Configurations");
});
modelBuilder.Entity("ManagerService.Data.ContentEmbedding", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("ChunkIndex")
.HasColumnType("integer");
b.Property("ConfigurationId")
.HasColumnType("text");
b.Property("ContentId")
.IsRequired()
.HasColumnType("text");
b.Property("ContentType")
.HasColumnType("integer");
b.Property("Embedding")
.IsRequired()
.HasColumnType("vector(768)");
b.Property("InstanceId")
.IsRequired()
.HasColumnType("text");
b.Property("Language")
.IsRequired()
.HasMaxLength(5)
.HasColumnType("character varying(5)");
b.Property("PageNumber")
.HasColumnType("integer");
b.Property("Text")
.IsRequired()
.HasColumnType("text");
b.Property("UpdatedAt")
.HasColumnType("timestamp with time zone");
b.HasKey("Id");
b.HasIndex("Embedding");
NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex("Embedding"), "hnsw");
NpgsqlIndexBuilderExtensions.HasOperators(b.HasIndex("Embedding"), new[] { "vector_cosine_ops" });
b.HasIndex("InstanceId", "ContentType");
b.HasIndex("ContentType", "ContentId", "ChunkIndex")
.IsUnique();
b.ToTable("ContentEmbeddings");
});
modelBuilder.Entity("ManagerService.Data.Device", b =>
{
b.Property("Id")
.HasColumnType("text");
b.Property("AppVersion")
.HasColumnType("text");
b.Property("BatteryLevel")
.HasColumnType("text");
b.Property("ConfigurationId")
.IsRequired()
.HasColumnType("text");
b.Property("Connected")
.HasColumnType("boolean");
b.Property("ConnectionLevel")
.HasColumnType("text");
b.Property("DateCreation")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdate")
.HasColumnType("timestamp with time zone");
b.Property("Identifier")
.HasColumnType("text");
b.Property("InstanceId")
.IsRequired()
.HasColumnType("text");
b.Property("IpAddressETH")
.HasColumnType("text");
b.Property("IpAddressWLAN")
.HasColumnType("text");
b.Property("LastBatteryLevel")
.HasColumnType("timestamp with time zone");
b.Property("LastConnectionLevel")
.HasColumnType("timestamp with time zone");
b.Property("LastSeen")
.HasColumnType("timestamp with time zone");
b.Property("Name")
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("ConfigurationId");
b.HasIndex("InstanceId");
b.ToTable("Devices");
});
modelBuilder.Entity("ManagerService.Data.Instance", b =>
{
b.Property("Id")
.HasColumnType("text");
b.Property("AiTokensPerMonth")
.HasColumnType("bigint");
b.Property("AiTokensThisMonth")
.HasColumnType("bigint");
b.Property("AiUsageMonthKey")
.HasColumnType("text");
b.Property("BillingAddress")
.HasColumnType("text");
b.Property("BillingCountry")
.HasColumnType("text");
b.Property("DateCreation")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdate")
.HasColumnType("timestamp with time zone");
b.Property("GuideFallbackMessages")
.HasColumnType("jsonb");
b.Property("GuideName")
.HasColumnType("text");
b.Property("GuidePersonaPrompt")
.HasColumnType("text");
b.Property("GuideVoiceId")
.HasColumnType("text");
b.Property("HasAdvancedStats")
.HasColumnType("boolean");
b.Property("HasStats")
.HasColumnType("boolean");
b.Property("IsActive")
.HasColumnType("boolean");
b.Property("IsAssistant")
.HasColumnType("boolean");
b.Property("IsMobile")
.HasColumnType("boolean");
b.Property("IsPushNotification")
.HasColumnType("boolean");
b.Property("IsTablet")
.HasColumnType("boolean");
b.Property("IsTrialActive")
.HasColumnType("boolean");
b.Property("IsVR")
.HasColumnType("boolean");
b.Property("IsWeb")
.HasColumnType("boolean");
b.Property("Name")
.IsRequired()
.HasColumnType("text");
b.Property("PinCode")
.HasColumnType("text");
b.Property("PublicApiKey")
.HasColumnType("text");
b.Property("StatsHistoryDays")
.HasColumnType("integer");
b.Property("StorageQuotaBytes")
.HasColumnType("bigint");
b.Property("StripeCustomerId")
.HasColumnType("text");
b.Property("StripeSubscriptionId")
.HasColumnType("text");
b.Property("SubscriptionPlanId")
.HasColumnType("text");
b.Property("TrialAiTokensUsed")
.HasColumnType("bigint");
b.Property("TrialCheckInEmailSent")
.HasColumnType("boolean");
b.Property("TrialEndsAt")
.HasColumnType("timestamp with time zone");
b.Property("TrialLastDayEmailSent")
.HasColumnType("boolean");
b.Property("TrialReminderEmailSent")
.HasColumnType("boolean");
b.Property("VatNumber")
.HasColumnType("text");
b.Property("VatRate")
.HasColumnType("numeric");
b.Property("WebSlug")
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("SubscriptionPlanId");
b.ToTable("Instances");
});
modelBuilder.Entity("ManagerService.Data.PushNotification", b =>
{
b.Property("Id")
.HasColumnType("text");
b.Property("Body")
.IsRequired()
.HasColumnType("text");
b.Property("DateCreation")
.HasColumnType("timestamp with time zone");
b.Property("HangfireJobId")
.HasColumnType("text");
b.Property("InstanceId")
.IsRequired()
.HasColumnType("text");
b.Property("ScheduledAt")
.HasColumnType("timestamp with time zone");
b.Property("SentAt")
.HasColumnType("timestamp with time zone");
b.Property("Status")
.HasColumnType("integer");
b.Property("Title")
.IsRequired()
.HasColumnType("text");
b.Property("Topic")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("InstanceId");
b.ToTable("PushNotifications");
});
modelBuilder.Entity("ManagerService.Data.Resource", b =>
{
b.Property("Id")
.HasColumnType("text");
b.Property("AiChunkCount")
.HasColumnType("integer");
b.Property("AiIndexMessage")
.HasColumnType("text");
b.Property("AiIndexStatus")
.HasColumnType("integer");
b.Property("AiIndexedAt")
.HasColumnType("timestamp with time zone");
b.Property("DateCreation")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdate")
.HasColumnType("timestamp with time zone");
b.Property("FileName")
.HasColumnType("text");
b.Property("IncludeInAiKnowledge")
.HasColumnType("boolean");
b.Property("InstanceId")
.IsRequired()
.HasColumnType("text");
b.Property("Label")
.IsRequired()
.HasColumnType("text");
b.Property("SizeBytes")
.HasColumnType("bigint");
b.Property("StoragePath")
.HasColumnType("text");
b.Property("Type")
.HasColumnType("integer");
b.Property("Url")
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("InstanceId");
b.ToTable("Resources");
});
modelBuilder.Entity("ManagerService.Data.Section", b =>
{
b.Property("Id")
.HasColumnType("text");
b.Property("BeaconId")
.HasColumnType("integer");
b.Property("ConfigurationId")
.IsRequired()
.HasColumnType("text");
b.Property("DateCreation")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdate")
.HasColumnType("timestamp with time zone");
b.Property("Description")
.HasColumnType("jsonb");
b.Property("Discriminator")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("character varying(50)");
b.Property("ImageId")
.HasColumnType("text");
b.Property("ImageSource")
.HasColumnType("text");
b.Property("InstanceId")
.IsRequired()
.HasColumnType("text");
b.Property("IsActive")
.HasColumnType("boolean");
b.Property("IsBeacon")
.HasColumnType("boolean");
b.Property("IsSubSection")
.HasColumnType("boolean");
b.Property("Label")
.IsRequired()
.HasColumnType("text");
b.Property("Latitude")
.HasColumnType("text");
b.Property("Longitude")
.HasColumnType("text");
b.Property("MeterZoneGPS")
.HasColumnType("integer");
b.Property("Order")
.HasColumnType("integer");
b.Property("ParentId")
.HasColumnType("text");
b.Property("SectionMenuId")
.HasColumnType("text");
b.Property("Title")
.IsRequired()
.HasColumnType("jsonb");
b.Property("Type")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("InstanceId");
b.HasIndex("SectionMenuId");
b.ToTable("Sections");
b.HasDiscriminator().HasValue("Base");
b.UseTphMappingStrategy();
});
modelBuilder.Entity("ManagerService.Data.SubSection.EventAgenda", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("Address")
.HasColumnType("jsonb");
b.Property("DateAdded")
.HasColumnType("timestamp with time zone");
b.Property("DateFrom")
.HasColumnType("timestamp with time zone");
b.Property("DateTo")
.HasColumnType("timestamp with time zone");
b.Property("Description")
.IsRequired()
.HasColumnType("jsonb");
b.Property("Email")
.HasColumnType("text");
b.Property("IdVideoYoutube")
.HasColumnType("text");
b.Property("IsSynced")
.HasColumnType("boolean");
b.Property("Label")
.IsRequired()
.HasColumnType("jsonb");
b.Property("Phone")
.HasColumnType("text");
b.Property("ResourceId")
.HasColumnType("text");
b.Property("SectionAgendaId")
.HasColumnType("text");
b.Property("SectionEventId")
.HasColumnType("text");
b.Property("SyncedImageUrl")
.HasColumnType("text");
b.Property("Type")
.HasColumnType("text");
b.Property("VideoLink")
.HasColumnType("text");
b.Property("VideoResourceId")
.HasColumnType("text");
b.Property("Website")
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("ResourceId");
b.HasIndex("SectionAgendaId");
b.HasIndex("SectionEventId");
b.HasIndex("VideoResourceId");
b.ToTable("EventAgendas");
});
modelBuilder.Entity("ManagerService.Data.SubSection.GeoPoint", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("CategorieId")
.HasColumnType("integer");
b.Property("Contents")
.IsRequired()
.HasColumnType("jsonb");
b.Property("Description")
.IsRequired()
.HasColumnType("jsonb");
b.Property("Email")
.IsRequired()
.HasColumnType("jsonb");
b.Property("Geometry")
.HasColumnType("geometry");
b.Property("ImageResourceId")
.HasColumnType("text");
b.Property("ImageUrl")
.HasColumnType("text");
b.Property("Phone")
.IsRequired()
.HasColumnType("jsonb");
b.Property("PolyColor")
.HasColumnType("text");
b.Property("Prices")
.IsRequired()
.HasColumnType("jsonb");
b.Property("Schedules")
.IsRequired()
.HasColumnType("jsonb");
b.Property("SectionEventId")
.HasColumnType("text");
b.Property("SectionMapId")
.HasColumnType("text");
b.Property("Site")
.IsRequired()
.HasColumnType("jsonb");
b.Property("Title")
.IsRequired()
.HasColumnType("jsonb");
b.HasKey("Id");
b.HasIndex("SectionEventId");
b.HasIndex("SectionMapId");
b.ToTable("GeoPoints");
});
modelBuilder.Entity("ManagerService.Data.SubSection.GuidedPath", b =>
{
b.Property("Id")
.HasColumnType("text");
b.Property("DateCreation")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdate")
.HasColumnType("timestamp with time zone");
b.Property("Description")
.HasColumnType("jsonb");
b.Property("EstimatedDurationMinutes")
.HasColumnType("integer");
b.Property("GameMessageDebut")
.HasColumnType("jsonb");
b.Property("GameMessageFin")
.HasColumnType("jsonb");
b.Property("HideNextStepsUntilComplete")
.HasColumnType("boolean");
b.Property("ImageResourceId")
.HasColumnType("text");
b.Property("InstanceId")
.IsRequired()
.HasColumnType("text");
b.Property("IsGameMode")
.HasColumnType("boolean");
b.Property("IsLinear")
.HasColumnType("boolean");
b.Property("Order")
.HasColumnType("integer");
b.Property("RequireSuccessToAdvance")
.HasColumnType("boolean");
b.Property("SectionEventId")
.HasColumnType("text");
b.Property("SectionParcoursId")
.HasColumnType("text");
b.Property("Title")
.IsRequired()
.HasColumnType("jsonb");
b.HasKey("Id");
b.HasIndex("ImageResourceId");
b.HasIndex("InstanceId");
b.HasIndex("SectionEventId");
b.HasIndex("SectionParcoursId");
b.ToTable("GuidedPaths");
});
modelBuilder.Entity("ManagerService.Data.SubSection.GuidedStep", b =>
{
b.Property("Id")
.HasColumnType("text");
b.Property("AudioIds")
.HasColumnType("jsonb");
b.Property("Contents")
.HasColumnType("jsonb");
b.Property("Description")
.HasColumnType("jsonb");
b.Property("Geometry")
.HasColumnType("geometry");
b.Property("GuidedPathId")
.IsRequired()
.HasColumnType("text");
b.Property("ImageUrl")
.HasColumnType("text");
b.Property("IsGeoTriggered")
.HasColumnType("boolean");
b.Property("IsStepTimer")
.HasColumnType("boolean");
b.Property("Order")
.HasColumnType("integer");
b.Property("TimerExpiredMessage")
.HasColumnType("jsonb");
b.Property("TimerSeconds")
.HasColumnType("integer");
b.Property("Title")
.IsRequired()
.HasColumnType("jsonb");
b.Property("ZoneRadiusMeters")
.HasColumnType("double precision");
b.HasKey("Id");
b.HasIndex("GuidedPathId");
b.ToTable("GuidedSteps");
});
modelBuilder.Entity("ManagerService.Data.SubSection.QuizQuestion", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("GuidedStepId")
.HasColumnType("text");
b.Property("IsSlidingPuzzle")
.HasColumnType("boolean");
b.Property