// using System; using EntKube.Web.Data; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable namespace EntKube.Web.Data.Migrations.SqlServer { [DbContext(typeof(SqlServerApplicationDbContext))] [Migration("20260518082355_AddMongoEntities")] partial class AddMongoEntities { /// protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "10.0.8") .HasAnnotation("Relational:MaxIdentifierLength", 128); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); modelBuilder.Entity("EntKube.Web.Data.App", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("CreatedAt") .HasColumnType("datetime2"); b.Property("CustomerId") .HasColumnType("uniqueidentifier"); b.Property("Name") .IsRequired() .HasMaxLength(200) .HasColumnType("nvarchar(200)"); b.HasKey("Id"); b.HasIndex("CustomerId", "Name") .IsUnique(); b.ToTable("Apps"); }); modelBuilder.Entity("EntKube.Web.Data.AppDeployment", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("AppId") .HasColumnType("uniqueidentifier"); b.Property("ClusterId") .HasColumnType("uniqueidentifier"); b.Property("CreatedAt") .HasColumnType("datetime2"); b.Property("EnvironmentId") .HasColumnType("uniqueidentifier"); b.Property("HealthStatus") .IsRequired() .HasMaxLength(20) .HasColumnType("nvarchar(20)"); b.Property("HelmChartName") .HasMaxLength(200) .HasColumnType("nvarchar(200)"); b.Property("HelmChartVersion") .HasMaxLength(50) .HasColumnType("nvarchar(50)"); b.Property("HelmRepoUrl") .HasMaxLength(500) .HasColumnType("nvarchar(500)"); b.Property("HelmValues") .HasColumnType("nvarchar(max)"); b.Property("LastSyncedAt") .HasColumnType("datetime2"); b.Property("Name") .IsRequired() .HasMaxLength(200) .HasColumnType("nvarchar(200)"); b.Property("Namespace") .IsRequired() .HasMaxLength(63) .HasColumnType("nvarchar(63)"); b.Property("StatusMessage") .HasColumnType("nvarchar(max)"); b.Property("SyncStatus") .IsRequired() .HasMaxLength(20) .HasColumnType("nvarchar(20)"); b.Property("Type") .IsRequired() .HasMaxLength(20) .HasColumnType("nvarchar(20)"); b.HasKey("Id"); b.HasIndex("ClusterId"); b.HasIndex("EnvironmentId"); b.HasIndex("AppId", "Name") .IsUnique(); b.ToTable("AppDeployments"); }); modelBuilder.Entity("EntKube.Web.Data.AppEnvironment", b => { b.Property("AppId") .HasColumnType("uniqueidentifier"); b.Property("EnvironmentId") .HasColumnType("uniqueidentifier"); b.Property("LinkedAt") .HasColumnType("datetime2"); b.HasKey("AppId", "EnvironmentId"); b.HasIndex("EnvironmentId"); b.ToTable("AppEnvironments"); }); modelBuilder.Entity("EntKube.Web.Data.ApplicationUser", b => { b.Property("Id") .HasColumnType("nvarchar(450)"); b.Property("AccessFailedCount") .HasColumnType("int"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() .HasColumnType("nvarchar(max)"); b.Property("Email") .HasMaxLength(256) .HasColumnType("nvarchar(256)"); b.Property("EmailConfirmed") .HasColumnType("bit"); b.Property("LockoutEnabled") .HasColumnType("bit"); b.Property("LockoutEnd") .HasColumnType("datetimeoffset"); b.Property("NormalizedEmail") .HasMaxLength(256) .HasColumnType("nvarchar(256)"); b.Property("NormalizedUserName") .HasMaxLength(256) .HasColumnType("nvarchar(256)"); b.Property("PasswordHash") .HasColumnType("nvarchar(max)"); b.Property("PhoneNumber") .HasColumnType("nvarchar(max)"); b.Property("PhoneNumberConfirmed") .HasColumnType("bit"); b.Property("SecurityStamp") .HasColumnType("nvarchar(max)"); b.Property("TwoFactorEnabled") .HasColumnType("bit"); b.Property("UserName") .HasMaxLength(256) .HasColumnType("nvarchar(256)"); b.HasKey("Id"); b.HasIndex("NormalizedEmail") .HasDatabaseName("EmailIndex"); b.HasIndex("NormalizedUserName") .IsUnique() .HasDatabaseName("UserNameIndex") .HasFilter("[NormalizedUserName] IS NOT NULL"); b.ToTable("AspNetUsers", (string)null); }); modelBuilder.Entity("EntKube.Web.Data.ClusterComponent", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("ClusterId") .HasColumnType("uniqueidentifier"); b.Property("ComponentType") .IsRequired() .HasMaxLength(50) .HasColumnType("nvarchar(50)"); b.Property("Configuration") .HasColumnType("nvarchar(max)"); b.Property("CreatedAt") .HasColumnType("datetime2"); b.Property("HelmChartName") .HasColumnType("nvarchar(max)"); b.Property("HelmChartVersion") .HasColumnType("nvarchar(max)"); b.Property("HelmRepoUrl") .HasColumnType("nvarchar(max)"); b.Property("HelmValues") .HasColumnType("nvarchar(max)"); b.Property("InstalledAt") .HasColumnType("datetime2"); b.Property("LastError") .HasColumnType("nvarchar(max)"); b.Property("Name") .IsRequired() .HasMaxLength(200) .HasColumnType("nvarchar(200)"); b.Property("Namespace") .HasColumnType("nvarchar(max)"); b.Property("ReleaseName") .HasColumnType("nvarchar(max)"); b.Property("Status") .HasColumnType("int"); b.HasKey("Id"); b.HasIndex("ClusterId", "Name") .IsUnique(); b.ToTable("ClusterComponents"); }); modelBuilder.Entity("EntKube.Web.Data.CnpgBackup", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("CnpgClusterId") .HasColumnType("uniqueidentifier"); b.Property("CompletedAt") .HasColumnType("datetime2"); b.Property("LastError") .HasColumnType("nvarchar(max)"); b.Property("Name") .IsRequired() .HasMaxLength(253) .HasColumnType("nvarchar(253)"); b.Property("SizeBytes") .HasColumnType("bigint"); b.Property("StartedAt") .HasColumnType("datetime2"); b.Property("Status") .HasColumnType("int"); b.Property("Type") .HasColumnType("int"); b.HasKey("Id"); b.HasIndex("CnpgClusterId", "Name") .IsUnique(); b.ToTable("CnpgBackups"); }); modelBuilder.Entity("EntKube.Web.Data.CnpgCluster", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("BackupSchedule") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); b.Property("CreatedAt") .HasColumnType("datetime2"); b.Property("Instances") .HasColumnType("int"); b.Property("KubernetesClusterId") .HasColumnType("uniqueidentifier"); b.Property("LastError") .HasColumnType("nvarchar(max)"); b.Property("Name") .IsRequired() .HasMaxLength(63) .HasColumnType("nvarchar(63)"); b.Property("Namespace") .IsRequired() .HasMaxLength(63) .HasColumnType("nvarchar(63)"); b.Property("PostgresVersion") .IsRequired() .HasMaxLength(10) .HasColumnType("nvarchar(10)"); b.Property("RetentionDays") .HasColumnType("int"); b.Property("Status") .HasColumnType("int"); b.Property("StorageLinkId") .HasColumnType("uniqueidentifier"); b.Property("StorageSize") .IsRequired() .HasMaxLength(20) .HasColumnType("nvarchar(20)"); b.Property("TenantId") .HasColumnType("uniqueidentifier"); b.HasKey("Id"); b.HasIndex("StorageLinkId"); b.HasIndex("TenantId"); b.HasIndex("KubernetesClusterId", "Name", "Namespace") .IsUnique(); b.ToTable("CnpgClusters"); }); modelBuilder.Entity("EntKube.Web.Data.CnpgDatabase", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("CnpgClusterId") .HasColumnType("uniqueidentifier"); b.Property("CreatedAt") .HasColumnType("datetime2"); b.Property("Name") .IsRequired() .HasMaxLength(63) .HasColumnType("nvarchar(63)"); b.Property("Owner") .IsRequired() .HasMaxLength(63) .HasColumnType("nvarchar(63)"); b.Property("Status") .HasColumnType("int"); b.HasKey("Id"); b.HasIndex("CnpgClusterId", "Name") .IsUnique(); b.ToTable("CnpgDatabases"); }); modelBuilder.Entity("EntKube.Web.Data.Customer", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("CreatedAt") .HasColumnType("datetime2"); b.Property("Name") .IsRequired() .HasMaxLength(200) .HasColumnType("nvarchar(200)"); b.Property("TenantId") .HasColumnType("uniqueidentifier"); b.HasKey("Id"); b.HasIndex("TenantId", "Name") .IsUnique(); b.ToTable("Customers"); }); modelBuilder.Entity("EntKube.Web.Data.CustomerAccess", b => { b.Property("UserId") .HasColumnType("nvarchar(450)"); b.Property("CustomerId") .HasColumnType("uniqueidentifier"); b.Property("GrantedAt") .HasColumnType("datetime2"); b.Property("Role") .IsRequired() .HasMaxLength(20) .HasColumnType("nvarchar(20)"); b.HasKey("UserId", "CustomerId"); b.HasIndex("CustomerId"); b.ToTable("CustomerAccesses"); }); modelBuilder.Entity("EntKube.Web.Data.DeploymentManifest", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("CreatedAt") .HasColumnType("datetime2"); b.Property("DeploymentId") .HasColumnType("uniqueidentifier"); b.Property("Kind") .IsRequired() .HasMaxLength(100) .HasColumnType("nvarchar(100)"); b.Property("Name") .IsRequired() .HasMaxLength(253) .HasColumnType("nvarchar(253)"); b.Property("SortOrder") .HasColumnType("int"); b.Property("UpdatedAt") .HasColumnType("datetime2"); b.Property("YamlContent") .IsRequired() .HasColumnType("nvarchar(max)"); b.HasKey("Id"); b.HasIndex("DeploymentId"); b.ToTable("DeploymentManifests"); }); modelBuilder.Entity("EntKube.Web.Data.DeploymentResource", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("CreatedAt") .HasColumnType("datetime2"); b.Property("DeploymentId") .HasColumnType("uniqueidentifier"); b.Property("Group") .IsRequired() .HasMaxLength(100) .HasColumnType("nvarchar(100)"); b.Property("HealthStatus") .IsRequired() .HasMaxLength(20) .HasColumnType("nvarchar(20)"); b.Property("Kind") .IsRequired() .HasMaxLength(100) .HasColumnType("nvarchar(100)"); b.Property("LastUpdatedAt") .HasColumnType("datetime2"); b.Property("Name") .IsRequired() .HasMaxLength(253) .HasColumnType("nvarchar(253)"); b.Property("Namespace") .HasMaxLength(63) .HasColumnType("nvarchar(63)"); b.Property("ParentResourceId") .HasColumnType("uniqueidentifier"); b.Property("StatusMessage") .HasColumnType("nvarchar(max)"); b.Property("SyncStatus") .IsRequired() .HasMaxLength(20) .HasColumnType("nvarchar(20)"); b.Property("Version") .IsRequired() .HasMaxLength(20) .HasColumnType("nvarchar(20)"); b.HasKey("Id"); b.HasIndex("DeploymentId"); b.HasIndex("ParentResourceId"); b.ToTable("DeploymentResources"); }); modelBuilder.Entity("EntKube.Web.Data.Environment", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("CreatedAt") .HasColumnType("datetime2"); b.Property("Name") .IsRequired() .HasMaxLength(100) .HasColumnType("nvarchar(100)"); b.Property("TenantId") .HasColumnType("uniqueidentifier"); b.HasKey("Id"); b.HasIndex("TenantId", "Name") .IsUnique(); b.ToTable("Environments"); }); modelBuilder.Entity("EntKube.Web.Data.ExternalRoute", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("ClusterIssuerName") .HasMaxLength(200) .HasColumnType("nvarchar(200)"); b.Property("ComponentId") .HasColumnType("uniqueidentifier"); b.Property("CreatedAt") .HasColumnType("datetime2"); b.Property("GatewayName") .HasMaxLength(200) .HasColumnType("nvarchar(200)"); b.Property("GatewayNamespace") .HasMaxLength(63) .HasColumnType("nvarchar(63)"); b.Property("Hostname") .IsRequired() .HasMaxLength(253) .HasColumnType("nvarchar(253)"); b.Property("PathPrefix") .IsRequired() .HasMaxLength(200) .HasColumnType("nvarchar(200)"); b.Property("ServiceName") .HasMaxLength(200) .HasColumnType("nvarchar(200)"); b.Property("ServicePort") .HasColumnType("int"); b.Property("TlsCertificate") .HasColumnType("nvarchar(max)"); b.Property("TlsMode") .IsRequired() .HasMaxLength(20) .HasColumnType("nvarchar(20)"); b.Property("TlsPrivateKey") .HasColumnType("nvarchar(max)"); b.HasKey("Id"); b.HasIndex("ComponentId"); b.ToTable("ExternalRoutes"); }); modelBuilder.Entity("EntKube.Web.Data.Group", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("CreatedAt") .HasColumnType("datetime2"); b.Property("Name") .IsRequired() .HasMaxLength(200) .HasColumnType("nvarchar(200)"); b.Property("TenantId") .HasColumnType("uniqueidentifier"); b.HasKey("Id"); b.HasIndex("TenantId", "Name") .IsUnique(); b.ToTable("Groups"); }); modelBuilder.Entity("EntKube.Web.Data.GroupMembership", b => { b.Property("UserId") .HasColumnType("nvarchar(450)"); b.Property("GroupId") .HasColumnType("uniqueidentifier"); b.Property("JoinedAt") .HasColumnType("datetime2"); b.HasKey("UserId", "GroupId"); b.HasIndex("GroupId"); b.ToTable("GroupMemberships"); }); modelBuilder.Entity("EntKube.Web.Data.KubernetesCluster", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("ApiServerUrl") .IsRequired() .HasMaxLength(500) .HasColumnType("nvarchar(500)"); b.Property("ContextName") .HasColumnType("nvarchar(max)"); b.Property("CreatedAt") .HasColumnType("datetime2"); b.Property("EnvironmentId") .HasColumnType("uniqueidentifier"); b.Property("Kubeconfig") .HasColumnType("nvarchar(max)"); b.Property("Name") .IsRequired() .HasMaxLength(200) .HasColumnType("nvarchar(200)"); b.Property("TenantId") .HasColumnType("uniqueidentifier"); b.HasKey("Id"); b.HasIndex("EnvironmentId"); b.HasIndex("TenantId", "Name") .IsUnique(); b.ToTable("KubernetesClusters"); }); modelBuilder.Entity("EntKube.Web.Data.MongoBackup", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("CompletedAt") .HasColumnType("datetime2"); b.Property("MongoClusterId") .HasColumnType("uniqueidentifier"); b.Property("Name") .IsRequired() .HasMaxLength(253) .HasColumnType("nvarchar(253)"); b.Property("SizeBytes") .HasColumnType("bigint"); b.Property("StartedAt") .HasColumnType("datetime2"); b.Property("Status") .HasColumnType("int"); b.Property("Type") .HasColumnType("int"); b.HasKey("Id"); b.HasIndex("MongoClusterId", "Name") .IsUnique(); b.ToTable("MongoBackups"); }); modelBuilder.Entity("EntKube.Web.Data.MongoCluster", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("BackupSchedule") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); b.Property("CreatedAt") .HasColumnType("datetime2"); b.Property("KubernetesClusterId") .HasColumnType("uniqueidentifier"); b.Property("LastError") .HasColumnType("nvarchar(max)"); b.Property("Members") .HasColumnType("int"); b.Property("MongoVersion") .IsRequired() .HasMaxLength(20) .HasColumnType("nvarchar(20)"); b.Property("Name") .IsRequired() .HasMaxLength(63) .HasColumnType("nvarchar(63)"); b.Property("Namespace") .IsRequired() .HasMaxLength(63) .HasColumnType("nvarchar(63)"); b.Property("RetentionDays") .HasColumnType("int"); b.Property("Status") .HasColumnType("int"); b.Property("StorageLinkId") .HasColumnType("uniqueidentifier"); b.Property("StorageSize") .IsRequired() .HasMaxLength(20) .HasColumnType("nvarchar(20)"); b.Property("TenantId") .HasColumnType("uniqueidentifier"); b.HasKey("Id"); b.HasIndex("StorageLinkId"); b.HasIndex("TenantId"); b.HasIndex("KubernetesClusterId", "Name", "Namespace") .IsUnique(); b.ToTable("MongoClusters"); }); modelBuilder.Entity("EntKube.Web.Data.MongoDatabase", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("CreatedAt") .HasColumnType("datetime2"); b.Property("MongoClusterId") .HasColumnType("uniqueidentifier"); b.Property("Name") .IsRequired() .HasMaxLength(63) .HasColumnType("nvarchar(63)"); b.Property("Owner") .IsRequired() .HasColumnType("nvarchar(max)"); b.Property("Status") .HasColumnType("int"); b.HasKey("Id"); b.HasIndex("MongoClusterId", "Name") .IsUnique(); b.ToTable("MongoDatabases"); }); modelBuilder.Entity("EntKube.Web.Data.OpenStackConnection", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("AuthUrl") .IsRequired() .HasColumnType("nvarchar(max)"); b.Property("CreatedAt") .HasColumnType("datetime2"); b.Property("Name") .IsRequired() .HasColumnType("nvarchar(max)"); b.Property("ProjectDomainName") .HasColumnType("nvarchar(max)"); b.Property("ProjectId") .HasColumnType("nvarchar(max)"); b.Property("ProjectName") .HasColumnType("nvarchar(max)"); b.Property("Region") .HasColumnType("nvarchar(max)"); b.Property("TenantId") .HasColumnType("uniqueidentifier"); b.Property("UserDomainName") .HasColumnType("nvarchar(max)"); b.Property("Username") .HasColumnType("nvarchar(max)"); b.HasKey("Id"); b.HasIndex("TenantId"); b.ToTable("OpenStackConnections"); }); modelBuilder.Entity("EntKube.Web.Data.SecretVault", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("CreatedAt") .HasColumnType("datetime2"); b.Property("EncryptedDataKey") .IsRequired() .HasColumnType("varbinary(max)"); b.Property("Nonce") .IsRequired() .HasColumnType("varbinary(max)"); b.Property("TenantId") .HasColumnType("uniqueidentifier"); b.HasKey("Id"); b.HasIndex("TenantId") .IsUnique(); b.ToTable("SecretVaults"); }); modelBuilder.Entity("EntKube.Web.Data.StorageBinding", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("AppDeploymentId") .HasColumnType("uniqueidentifier"); b.Property("ComponentId") .HasColumnType("uniqueidentifier"); b.Property("CreatedAt") .HasColumnType("datetime2"); b.Property("KubernetesSecretName") .IsRequired() .HasMaxLength(253) .HasColumnType("nvarchar(253)"); b.Property("LastSyncedAt") .HasColumnType("datetime2"); b.Property("StorageLinkId") .HasColumnType("uniqueidentifier"); b.Property("SyncEnabled") .HasColumnType("bit"); b.HasKey("Id"); b.HasIndex("AppDeploymentId"); b.HasIndex("ComponentId"); b.HasIndex("StorageLinkId"); b.ToTable("StorageBindings"); }); modelBuilder.Entity("EntKube.Web.Data.StorageLink", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("BucketName") .HasColumnType("nvarchar(max)"); b.Property("ComponentId") .HasColumnType("uniqueidentifier"); b.Property("CreatedAt") .HasColumnType("datetime2"); b.Property("Endpoint") .HasColumnType("nvarchar(max)"); b.Property("EnvironmentId") .HasColumnType("uniqueidentifier"); b.Property("Name") .IsRequired() .HasColumnType("nvarchar(max)"); b.Property("Notes") .HasColumnType("nvarchar(max)"); b.Property("OpenStackConnectionId") .HasColumnType("uniqueidentifier"); b.Property("Provider") .HasColumnType("int"); b.Property("Region") .HasColumnType("nvarchar(max)"); b.Property("TenantId") .HasColumnType("uniqueidentifier"); b.HasKey("Id"); b.HasIndex("ComponentId"); b.HasIndex("EnvironmentId"); b.HasIndex("OpenStackConnectionId"); b.HasIndex("TenantId"); b.ToTable("StorageLinks"); }); modelBuilder.Entity("EntKube.Web.Data.Tenant", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("CreatedAt") .HasColumnType("datetime2"); b.Property("Name") .IsRequired() .HasMaxLength(200) .HasColumnType("nvarchar(200)"); b.Property("Slug") .IsRequired() .HasMaxLength(100) .HasColumnType("nvarchar(100)"); b.HasKey("Id"); b.HasIndex("Slug") .IsUnique(); b.ToTable("Tenants"); }); modelBuilder.Entity("EntKube.Web.Data.TenantMembership", b => { b.Property("UserId") .HasColumnType("nvarchar(450)"); b.Property("TenantId") .HasColumnType("uniqueidentifier"); b.Property("JoinedAt") .HasColumnType("datetime2"); b.Property("RoleId") .HasColumnType("uniqueidentifier"); b.HasKey("UserId", "TenantId"); b.HasIndex("RoleId"); b.HasIndex("TenantId"); b.ToTable("TenantMemberships"); }); modelBuilder.Entity("EntKube.Web.Data.TenantRole", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("Name") .IsRequired() .HasMaxLength(100) .HasColumnType("nvarchar(100)"); b.Property("TenantId") .HasColumnType("uniqueidentifier"); b.HasKey("Id"); b.HasIndex("TenantId", "Name") .IsUnique(); b.ToTable("TenantRoles"); }); modelBuilder.Entity("EntKube.Web.Data.VaultSecret", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); b.Property("AppId") .HasColumnType("uniqueidentifier"); b.Property("CnpgDatabaseId") .HasColumnType("uniqueidentifier"); b.Property("ComponentId") .HasColumnType("uniqueidentifier"); b.Property("CreatedAt") .HasColumnType("datetime2"); b.Property("EncryptedValue") .IsRequired() .HasColumnType("varbinary(max)"); b.Property("KubernetesNamespace") .HasMaxLength(63) .HasColumnType("nvarchar(63)"); b.Property("KubernetesSecretName") .HasMaxLength(253) .HasColumnType("nvarchar(253)"); b.Property("MongoDatabaseId") .HasColumnType("uniqueidentifier"); b.Property("Name") .IsRequired() .HasMaxLength(200) .HasColumnType("nvarchar(200)"); b.Property("Nonce") .IsRequired() .HasColumnType("varbinary(max)"); b.Property("OpenStackConnectionId") .HasColumnType("uniqueidentifier"); b.Property("StorageLinkId") .HasColumnType("uniqueidentifier"); b.Property("SyncToKubernetes") .HasColumnType("bit"); b.Property("UpdatedAt") .HasColumnType("datetime2"); b.Property("VaultId") .HasColumnType("uniqueidentifier"); b.HasKey("Id"); b.HasIndex("AppId"); b.HasIndex("CnpgDatabaseId"); b.HasIndex("ComponentId"); b.HasIndex("MongoDatabaseId"); b.HasIndex("StorageLinkId"); b.HasIndex("VaultId", "AppId", "Name") .IsUnique(); b.HasIndex("VaultId", "ComponentId", "Name") .IsUnique(); b.ToTable("VaultSecrets"); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => { b.Property("Id") .HasColumnType("nvarchar(450)"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() .HasColumnType("nvarchar(max)"); b.Property("Name") .HasMaxLength(256) .HasColumnType("nvarchar(256)"); b.Property("NormalizedName") .HasMaxLength(256) .HasColumnType("nvarchar(256)"); b.HasKey("Id"); b.HasIndex("NormalizedName") .IsUnique() .HasDatabaseName("RoleNameIndex") .HasFilter("[NormalizedName] IS NOT NULL"); b.ToTable("AspNetRoles", (string)null); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); b.Property("ClaimType") .HasColumnType("nvarchar(max)"); b.Property("ClaimValue") .HasColumnType("nvarchar(max)"); b.Property("RoleId") .IsRequired() .HasColumnType("nvarchar(450)"); b.HasKey("Id"); b.HasIndex("RoleId"); b.ToTable("AspNetRoleClaims", (string)null); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); b.Property("ClaimType") .HasColumnType("nvarchar(max)"); b.Property("ClaimValue") .HasColumnType("nvarchar(max)"); b.Property("UserId") .IsRequired() .HasColumnType("nvarchar(450)"); b.HasKey("Id"); b.HasIndex("UserId"); b.ToTable("AspNetUserClaims", (string)null); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => { b.Property("LoginProvider") .HasColumnType("nvarchar(450)"); b.Property("ProviderKey") .HasColumnType("nvarchar(450)"); b.Property("ProviderDisplayName") .HasColumnType("nvarchar(max)"); b.Property("UserId") .IsRequired() .HasColumnType("nvarchar(450)"); b.HasKey("LoginProvider", "ProviderKey"); b.HasIndex("UserId"); b.ToTable("AspNetUserLogins", (string)null); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => { b.Property("UserId") .HasColumnType("nvarchar(450)"); b.Property("RoleId") .HasColumnType("nvarchar(450)"); b.HasKey("UserId", "RoleId"); b.HasIndex("RoleId"); b.ToTable("AspNetUserRoles", (string)null); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => { b.Property("UserId") .HasColumnType("nvarchar(450)"); b.Property("LoginProvider") .HasColumnType("nvarchar(450)"); b.Property("Name") .HasColumnType("nvarchar(450)"); b.Property("Value") .HasColumnType("nvarchar(max)"); b.HasKey("UserId", "LoginProvider", "Name"); b.ToTable("AspNetUserTokens", (string)null); }); modelBuilder.Entity("EntKube.Web.Data.App", b => { b.HasOne("EntKube.Web.Data.Customer", "Customer") .WithMany("Apps") .HasForeignKey("CustomerId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Customer"); }); modelBuilder.Entity("EntKube.Web.Data.AppDeployment", b => { b.HasOne("EntKube.Web.Data.App", "App") .WithMany("Deployments") .HasForeignKey("AppId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("EntKube.Web.Data.KubernetesCluster", "Cluster") .WithMany() .HasForeignKey("ClusterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("EntKube.Web.Data.Environment", "Environment") .WithMany() .HasForeignKey("EnvironmentId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("App"); b.Navigation("Cluster"); b.Navigation("Environment"); }); modelBuilder.Entity("EntKube.Web.Data.AppEnvironment", b => { b.HasOne("EntKube.Web.Data.App", "App") .WithMany("AppEnvironments") .HasForeignKey("AppId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("EntKube.Web.Data.Environment", "Environment") .WithMany("AppEnvironments") .HasForeignKey("EnvironmentId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("App"); b.Navigation("Environment"); }); modelBuilder.Entity("EntKube.Web.Data.ClusterComponent", b => { b.HasOne("EntKube.Web.Data.KubernetesCluster", "Cluster") .WithMany("Components") .HasForeignKey("ClusterId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Cluster"); }); modelBuilder.Entity("EntKube.Web.Data.CnpgBackup", b => { b.HasOne("EntKube.Web.Data.CnpgCluster", "CnpgCluster") .WithMany("Backups") .HasForeignKey("CnpgClusterId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("CnpgCluster"); }); modelBuilder.Entity("EntKube.Web.Data.CnpgCluster", b => { b.HasOne("EntKube.Web.Data.KubernetesCluster", "KubernetesCluster") .WithMany() .HasForeignKey("KubernetesClusterId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("EntKube.Web.Data.StorageLink", "StorageLink") .WithMany() .HasForeignKey("StorageLinkId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("EntKube.Web.Data.Tenant", "Tenant") .WithMany() .HasForeignKey("TenantId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("KubernetesCluster"); b.Navigation("StorageLink"); b.Navigation("Tenant"); }); modelBuilder.Entity("EntKube.Web.Data.CnpgDatabase", b => { b.HasOne("EntKube.Web.Data.CnpgCluster", "CnpgCluster") .WithMany("Databases") .HasForeignKey("CnpgClusterId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("CnpgCluster"); }); modelBuilder.Entity("EntKube.Web.Data.Customer", b => { b.HasOne("EntKube.Web.Data.Tenant", "Tenant") .WithMany("Customers") .HasForeignKey("TenantId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Tenant"); }); modelBuilder.Entity("EntKube.Web.Data.CustomerAccess", b => { b.HasOne("EntKube.Web.Data.Customer", "Customer") .WithMany() .HasForeignKey("CustomerId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("EntKube.Web.Data.ApplicationUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Customer"); b.Navigation("User"); }); modelBuilder.Entity("EntKube.Web.Data.DeploymentManifest", b => { b.HasOne("EntKube.Web.Data.AppDeployment", "Deployment") .WithMany("Manifests") .HasForeignKey("DeploymentId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Deployment"); }); modelBuilder.Entity("EntKube.Web.Data.DeploymentResource", b => { b.HasOne("EntKube.Web.Data.AppDeployment", "Deployment") .WithMany("Resources") .HasForeignKey("DeploymentId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("EntKube.Web.Data.DeploymentResource", "ParentResource") .WithMany("ChildResources") .HasForeignKey("ParentResourceId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Deployment"); b.Navigation("ParentResource"); }); modelBuilder.Entity("EntKube.Web.Data.Environment", b => { b.HasOne("EntKube.Web.Data.Tenant", "Tenant") .WithMany("Environments") .HasForeignKey("TenantId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Tenant"); }); modelBuilder.Entity("EntKube.Web.Data.ExternalRoute", b => { b.HasOne("EntKube.Web.Data.ClusterComponent", "Component") .WithMany("ExternalRoutes") .HasForeignKey("ComponentId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Component"); }); modelBuilder.Entity("EntKube.Web.Data.Group", b => { b.HasOne("EntKube.Web.Data.Tenant", "Tenant") .WithMany("Groups") .HasForeignKey("TenantId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Tenant"); }); modelBuilder.Entity("EntKube.Web.Data.GroupMembership", b => { b.HasOne("EntKube.Web.Data.Group", "Group") .WithMany("Memberships") .HasForeignKey("GroupId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("EntKube.Web.Data.ApplicationUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Group"); b.Navigation("User"); }); modelBuilder.Entity("EntKube.Web.Data.KubernetesCluster", b => { b.HasOne("EntKube.Web.Data.Environment", "Environment") .WithMany("KubernetesClusters") .HasForeignKey("EnvironmentId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("EntKube.Web.Data.Tenant", "Tenant") .WithMany("KubernetesClusters") .HasForeignKey("TenantId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Environment"); b.Navigation("Tenant"); }); modelBuilder.Entity("EntKube.Web.Data.MongoBackup", b => { b.HasOne("EntKube.Web.Data.MongoCluster", "MongoCluster") .WithMany("Backups") .HasForeignKey("MongoClusterId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("MongoCluster"); }); modelBuilder.Entity("EntKube.Web.Data.MongoCluster", b => { b.HasOne("EntKube.Web.Data.KubernetesCluster", "KubernetesCluster") .WithMany() .HasForeignKey("KubernetesClusterId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("EntKube.Web.Data.StorageLink", "StorageLink") .WithMany() .HasForeignKey("StorageLinkId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("EntKube.Web.Data.Tenant", "Tenant") .WithMany() .HasForeignKey("TenantId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("KubernetesCluster"); b.Navigation("StorageLink"); b.Navigation("Tenant"); }); modelBuilder.Entity("EntKube.Web.Data.MongoDatabase", b => { b.HasOne("EntKube.Web.Data.MongoCluster", "MongoCluster") .WithMany("Databases") .HasForeignKey("MongoClusterId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("MongoCluster"); }); modelBuilder.Entity("EntKube.Web.Data.OpenStackConnection", b => { b.HasOne("EntKube.Web.Data.Tenant", "Tenant") .WithMany() .HasForeignKey("TenantId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Tenant"); }); modelBuilder.Entity("EntKube.Web.Data.SecretVault", b => { b.HasOne("EntKube.Web.Data.Tenant", "Tenant") .WithOne("Vault") .HasForeignKey("EntKube.Web.Data.SecretVault", "TenantId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Tenant"); }); modelBuilder.Entity("EntKube.Web.Data.StorageBinding", b => { b.HasOne("EntKube.Web.Data.AppDeployment", "AppDeployment") .WithMany("StorageBindings") .HasForeignKey("AppDeploymentId") .OnDelete(DeleteBehavior.Cascade); b.HasOne("EntKube.Web.Data.ClusterComponent", "Component") .WithMany("StorageBindings") .HasForeignKey("ComponentId") .OnDelete(DeleteBehavior.Cascade); b.HasOne("EntKube.Web.Data.StorageLink", "StorageLink") .WithMany("StorageBindings") .HasForeignKey("StorageLinkId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("AppDeployment"); b.Navigation("Component"); b.Navigation("StorageLink"); }); modelBuilder.Entity("EntKube.Web.Data.StorageLink", b => { b.HasOne("EntKube.Web.Data.ClusterComponent", "Component") .WithMany() .HasForeignKey("ComponentId"); b.HasOne("EntKube.Web.Data.Environment", "Environment") .WithMany() .HasForeignKey("EnvironmentId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("EntKube.Web.Data.OpenStackConnection", "OpenStackConnection") .WithMany("StorageLinks") .HasForeignKey("OpenStackConnectionId"); b.HasOne("EntKube.Web.Data.Tenant", "Tenant") .WithMany() .HasForeignKey("TenantId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Component"); b.Navigation("Environment"); b.Navigation("OpenStackConnection"); b.Navigation("Tenant"); }); modelBuilder.Entity("EntKube.Web.Data.TenantMembership", b => { b.HasOne("EntKube.Web.Data.TenantRole", "Role") .WithMany("Memberships") .HasForeignKey("RoleId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("EntKube.Web.Data.Tenant", "Tenant") .WithMany("Memberships") .HasForeignKey("TenantId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("EntKube.Web.Data.ApplicationUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Role"); b.Navigation("Tenant"); b.Navigation("User"); }); modelBuilder.Entity("EntKube.Web.Data.TenantRole", b => { b.HasOne("EntKube.Web.Data.Tenant", "Tenant") .WithMany("Roles") .HasForeignKey("TenantId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Tenant"); }); modelBuilder.Entity("EntKube.Web.Data.VaultSecret", b => { b.HasOne("EntKube.Web.Data.App", "App") .WithMany("Secrets") .HasForeignKey("AppId") .OnDelete(DeleteBehavior.Cascade); b.HasOne("EntKube.Web.Data.CnpgDatabase", "CnpgDatabase") .WithMany() .HasForeignKey("CnpgDatabaseId") .OnDelete(DeleteBehavior.Cascade); b.HasOne("EntKube.Web.Data.ClusterComponent", "Component") .WithMany("Secrets") .HasForeignKey("ComponentId") .OnDelete(DeleteBehavior.Cascade); b.HasOne("EntKube.Web.Data.MongoDatabase", "MongoDatabase") .WithMany() .HasForeignKey("MongoDatabaseId") .OnDelete(DeleteBehavior.Cascade); b.HasOne("EntKube.Web.Data.StorageLink", "StorageLink") .WithMany() .HasForeignKey("StorageLinkId"); b.HasOne("EntKube.Web.Data.SecretVault", "Vault") .WithMany("Secrets") .HasForeignKey("VaultId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("App"); b.Navigation("CnpgDatabase"); b.Navigation("Component"); b.Navigation("MongoDatabase"); b.Navigation("StorageLink"); b.Navigation("Vault"); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => { b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) .WithMany() .HasForeignKey("RoleId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => { b.HasOne("EntKube.Web.Data.ApplicationUser", null) .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => { b.HasOne("EntKube.Web.Data.ApplicationUser", null) .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => { b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) .WithMany() .HasForeignKey("RoleId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("EntKube.Web.Data.ApplicationUser", null) .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => { b.HasOne("EntKube.Web.Data.ApplicationUser", null) .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("EntKube.Web.Data.App", b => { b.Navigation("AppEnvironments"); b.Navigation("Deployments"); b.Navigation("Secrets"); }); modelBuilder.Entity("EntKube.Web.Data.AppDeployment", b => { b.Navigation("Manifests"); b.Navigation("Resources"); b.Navigation("StorageBindings"); }); modelBuilder.Entity("EntKube.Web.Data.ClusterComponent", b => { b.Navigation("ExternalRoutes"); b.Navigation("Secrets"); b.Navigation("StorageBindings"); }); modelBuilder.Entity("EntKube.Web.Data.CnpgCluster", b => { b.Navigation("Backups"); b.Navigation("Databases"); }); modelBuilder.Entity("EntKube.Web.Data.Customer", b => { b.Navigation("Apps"); }); modelBuilder.Entity("EntKube.Web.Data.DeploymentResource", b => { b.Navigation("ChildResources"); }); modelBuilder.Entity("EntKube.Web.Data.Environment", b => { b.Navigation("AppEnvironments"); b.Navigation("KubernetesClusters"); }); modelBuilder.Entity("EntKube.Web.Data.Group", b => { b.Navigation("Memberships"); }); modelBuilder.Entity("EntKube.Web.Data.KubernetesCluster", b => { b.Navigation("Components"); }); modelBuilder.Entity("EntKube.Web.Data.MongoCluster", b => { b.Navigation("Backups"); b.Navigation("Databases"); }); modelBuilder.Entity("EntKube.Web.Data.OpenStackConnection", b => { b.Navigation("StorageLinks"); }); modelBuilder.Entity("EntKube.Web.Data.SecretVault", b => { b.Navigation("Secrets"); }); modelBuilder.Entity("EntKube.Web.Data.StorageLink", b => { b.Navigation("StorageBindings"); }); modelBuilder.Entity("EntKube.Web.Data.Tenant", b => { b.Navigation("Customers"); b.Navigation("Environments"); b.Navigation("Groups"); b.Navigation("KubernetesClusters"); b.Navigation("Memberships"); b.Navigation("Roles"); b.Navigation("Vault"); }); modelBuilder.Entity("EntKube.Web.Data.TenantRole", b => { b.Navigation("Memberships"); }); #pragma warning restore 612, 618 } } }