899 lines
32 KiB
C#
899 lines
32 KiB
C#
// <auto-generated />
|
|
using System;
|
|
using MicCheck.Api.Data;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
|
using Microsoft.EntityFrameworkCore.Migrations;
|
|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
|
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
|
|
|
#nullable disable
|
|
|
|
namespace MicCheck.Api.Migrations
|
|
{
|
|
[DbContext(typeof(MicCheckDbContext))]
|
|
[Migration("20260410175950_AddWebhookDeliveryAttemptNumber")]
|
|
partial class AddWebhookDeliveryAttemptNumber
|
|
{
|
|
/// <inheritdoc />
|
|
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
|
{
|
|
#pragma warning disable 612, 618
|
|
modelBuilder
|
|
.HasAnnotation("ProductVersion", "10.0.5")
|
|
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
|
|
|
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Common.Security.ApiKeys.ApiKey", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("integer");
|
|
|
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<DateTimeOffset>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTimeOffset?>("ExpiresAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<bool>("IsActive")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<string>("Key")
|
|
.IsRequired()
|
|
.HasMaxLength(512)
|
|
.HasColumnType("character varying(512)");
|
|
|
|
b.Property<string>("Name")
|
|
.IsRequired()
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<int>("OrganizationId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("Prefix")
|
|
.IsRequired()
|
|
.HasMaxLength(8)
|
|
.HasColumnType("character varying(8)");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("Key")
|
|
.IsUnique();
|
|
|
|
b.HasIndex("OrganizationId");
|
|
|
|
b.ToTable("ApiKeys");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Audit.AuditLog", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("integer");
|
|
|
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<string>("Action")
|
|
.IsRequired()
|
|
.HasMaxLength(50)
|
|
.HasColumnType("character varying(50)");
|
|
|
|
b.Property<int?>("ActorUserId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("Changes")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTimeOffset>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<int?>("EnvironmentId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("OrganizationId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int?>("ProjectId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("ResourceId")
|
|
.IsRequired()
|
|
.HasMaxLength(100)
|
|
.HasColumnType("character varying(100)");
|
|
|
|
b.Property<string>("ResourceType")
|
|
.IsRequired()
|
|
.HasMaxLength(100)
|
|
.HasColumnType("character varying(100)");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("OrganizationId", "CreatedAt");
|
|
|
|
b.ToTable("AuditLogs");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Common.Security.Authorization.UserProjectPermission", b =>
|
|
{
|
|
b.Property<int>("UserId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("ProjectId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<bool>("IsAdmin")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<string>("Permissions")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.HasKey("UserId", "ProjectId");
|
|
|
|
b.ToTable("UserProjectPermissions");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Environments.Environment", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("integer");
|
|
|
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<string>("ApiKey")
|
|
.IsRequired()
|
|
.HasMaxLength(100)
|
|
.HasColumnType("character varying(100)");
|
|
|
|
b.Property<DateTimeOffset>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("Name")
|
|
.IsRequired()
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<int>("ProjectId")
|
|
.HasColumnType("integer");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("ApiKey")
|
|
.IsUnique();
|
|
|
|
b.HasIndex("ProjectId");
|
|
|
|
b.ToTable("Environments");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Features.Feature", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("integer");
|
|
|
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<DateTimeOffset>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<bool>("DefaultEnabled")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<string>("Description")
|
|
.HasMaxLength(2000)
|
|
.HasColumnType("character varying(2000)");
|
|
|
|
b.Property<string>("InitialValue")
|
|
.HasMaxLength(20000)
|
|
.HasColumnType("character varying(20000)");
|
|
|
|
b.Property<string>("Name")
|
|
.IsRequired()
|
|
.HasMaxLength(150)
|
|
.HasColumnType("character varying(150)");
|
|
|
|
b.Property<int>("ProjectId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("Type")
|
|
.HasColumnType("integer");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("ProjectId", "Name")
|
|
.IsUnique();
|
|
|
|
b.ToTable("Features");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Features.FeatureSegment", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("integer");
|
|
|
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<int>("EnvironmentId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("FeatureId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("Priority")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("SegmentId")
|
|
.HasColumnType("integer");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.ToTable("FeatureSegments");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Features.FeatureState", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("integer");
|
|
|
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<DateTimeOffset>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<bool>("Enabled")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<int>("EnvironmentId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("FeatureId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int?>("FeatureSegmentId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int?>("IdentityId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<DateTimeOffset>("UpdatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("Value")
|
|
.HasMaxLength(20000)
|
|
.HasColumnType("character varying(20000)");
|
|
|
|
b.Property<int>("Version")
|
|
.IsConcurrencyToken()
|
|
.HasColumnType("integer");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("EnvironmentId");
|
|
|
|
b.HasIndex("FeatureSegmentId")
|
|
.IsUnique();
|
|
|
|
b.HasIndex("IdentityId");
|
|
|
|
b.HasIndex("FeatureId", "EnvironmentId", "IdentityId")
|
|
.IsUnique();
|
|
|
|
b.ToTable("FeatureStates");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Features.Tag", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("integer");
|
|
|
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<string>("Color")
|
|
.IsRequired()
|
|
.HasMaxLength(20)
|
|
.HasColumnType("character varying(20)");
|
|
|
|
b.Property<string>("Label")
|
|
.IsRequired()
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<int>("ProjectId")
|
|
.HasColumnType("integer");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("ProjectId");
|
|
|
|
b.ToTable("Tags");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Identities.Identity", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("integer");
|
|
|
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<DateTimeOffset>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<int>("EnvironmentId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("Identifier")
|
|
.IsRequired()
|
|
.HasMaxLength(2000)
|
|
.HasColumnType("character varying(2000)");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("EnvironmentId", "Identifier")
|
|
.IsUnique();
|
|
|
|
b.ToTable("Identities");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Identities.IdentityTrait", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("integer");
|
|
|
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<int>("IdentityId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("Key")
|
|
.IsRequired()
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<string>("Value")
|
|
.IsRequired()
|
|
.HasMaxLength(2000)
|
|
.HasColumnType("character varying(2000)");
|
|
|
|
b.Property<int>("ValueType")
|
|
.HasColumnType("integer");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("IdentityId", "Key")
|
|
.IsUnique();
|
|
|
|
b.ToTable("IdentityTraits");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Organizations.Organization", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("integer");
|
|
|
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<DateTimeOffset>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("Name")
|
|
.IsRequired()
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.ToTable("Organizations");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Organizations.OrganizationUser", b =>
|
|
{
|
|
b.Property<int>("OrganizationId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("UserId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("Role")
|
|
.HasColumnType("integer");
|
|
|
|
b.HasKey("OrganizationId", "UserId");
|
|
|
|
b.HasIndex("UserId");
|
|
|
|
b.ToTable("OrganizationUsers");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Projects.Project", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("integer");
|
|
|
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<DateTimeOffset>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<bool>("HideDisabledFlags")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<string>("Name")
|
|
.IsRequired()
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<int>("OrganizationId")
|
|
.HasColumnType("integer");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("OrganizationId");
|
|
|
|
b.ToTable("Projects");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Segments.Segment", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("integer");
|
|
|
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<DateTimeOffset>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("Name")
|
|
.IsRequired()
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<int>("ProjectId")
|
|
.HasColumnType("integer");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("ProjectId");
|
|
|
|
b.ToTable("Segments");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Segments.SegmentCondition", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("integer");
|
|
|
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<int>("Operator")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("Property")
|
|
.IsRequired()
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<int>("RuleId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("Value")
|
|
.IsRequired()
|
|
.HasMaxLength(1000)
|
|
.HasColumnType("character varying(1000)");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("RuleId");
|
|
|
|
b.ToTable("SegmentConditions");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Segments.SegmentRule", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("integer");
|
|
|
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<int?>("ParentRuleId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("SegmentId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("Type")
|
|
.HasColumnType("integer");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("ParentRuleId");
|
|
|
|
b.HasIndex("SegmentId");
|
|
|
|
b.ToTable("SegmentRules");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Users.RefreshToken", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("integer");
|
|
|
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<DateTimeOffset>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTimeOffset>("ExpiresAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<bool>("IsRevoked")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<string>("Token")
|
|
.IsRequired()
|
|
.HasMaxLength(512)
|
|
.HasColumnType("character varying(512)");
|
|
|
|
b.Property<int>("UserId")
|
|
.HasColumnType("integer");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("Token")
|
|
.IsUnique();
|
|
|
|
b.HasIndex("UserId");
|
|
|
|
b.ToTable("RefreshTokens");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Users.User", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("integer");
|
|
|
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<DateTimeOffset>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("Email")
|
|
.IsRequired()
|
|
.HasMaxLength(500)
|
|
.HasColumnType("character varying(500)");
|
|
|
|
b.Property<string>("FirstName")
|
|
.IsRequired()
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<bool>("IsActive")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<bool>("IsTwoFactorEnabled")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<DateTimeOffset?>("LastLoginAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("LastName")
|
|
.IsRequired()
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<string>("PasswordHash")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("Email")
|
|
.IsUnique();
|
|
|
|
b.ToTable("Users");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Webhooks.Webhook", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("integer");
|
|
|
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<DateTimeOffset>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<bool>("Enabled")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<int?>("EnvironmentId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int?>("OrganizationId")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("Scope")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("Secret")
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<string>("Url")
|
|
.IsRequired()
|
|
.HasMaxLength(500)
|
|
.HasColumnType("character varying(500)");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("EnvironmentId");
|
|
|
|
b.ToTable("Webhooks");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Webhooks.WebhookDeliveryLog", b =>
|
|
{
|
|
b.Property<int>("Id")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("integer");
|
|
|
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
|
|
|
b.Property<int>("AttemptNumber")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<DateTimeOffset>("AttemptedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<TimeSpan>("Duration")
|
|
.HasColumnType("interval");
|
|
|
|
b.Property<string>("ErrorMessage")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("EventType")
|
|
.IsRequired()
|
|
.HasMaxLength(100)
|
|
.HasColumnType("character varying(100)");
|
|
|
|
b.Property<string>("PayloadJson")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("ResponseBody")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<int?>("ResponseStatusCode")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<bool>("Success")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<int>("WebhookId")
|
|
.HasColumnType("integer");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("WebhookId");
|
|
|
|
b.ToTable("WebhookDeliveryLogs");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Common.Security.ApiKeys.ApiKey", b =>
|
|
{
|
|
b.HasOne("MicCheck.Api.Organizations.Organization", null)
|
|
.WithMany("ApiKeys")
|
|
.HasForeignKey("OrganizationId")
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.IsRequired();
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Environments.Environment", b =>
|
|
{
|
|
b.HasOne("MicCheck.Api.Projects.Project", null)
|
|
.WithMany("Environments")
|
|
.HasForeignKey("ProjectId")
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.IsRequired();
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Features.Feature", b =>
|
|
{
|
|
b.HasOne("MicCheck.Api.Projects.Project", null)
|
|
.WithMany("Features")
|
|
.HasForeignKey("ProjectId")
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.IsRequired();
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Features.FeatureState", b =>
|
|
{
|
|
b.HasOne("MicCheck.Api.Environments.Environment", null)
|
|
.WithMany("FeatureStates")
|
|
.HasForeignKey("EnvironmentId")
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.IsRequired();
|
|
|
|
b.HasOne("MicCheck.Api.Features.Feature", null)
|
|
.WithMany("FeatureStates")
|
|
.HasForeignKey("FeatureId")
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.IsRequired();
|
|
|
|
b.HasOne("MicCheck.Api.Features.FeatureSegment", null)
|
|
.WithOne("FeatureState")
|
|
.HasForeignKey("MicCheck.Api.Features.FeatureState", "FeatureSegmentId")
|
|
.OnDelete(DeleteBehavior.SetNull);
|
|
|
|
b.HasOne("MicCheck.Api.Identities.Identity", null)
|
|
.WithMany("FeatureStateOverrides")
|
|
.HasForeignKey("IdentityId")
|
|
.OnDelete(DeleteBehavior.Cascade);
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Features.Tag", b =>
|
|
{
|
|
b.HasOne("MicCheck.Api.Features.Feature", null)
|
|
.WithMany("Tags")
|
|
.HasForeignKey("ProjectId")
|
|
.OnDelete(DeleteBehavior.NoAction)
|
|
.IsRequired();
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Identities.IdentityTrait", b =>
|
|
{
|
|
b.HasOne("MicCheck.Api.Identities.Identity", null)
|
|
.WithMany("Traits")
|
|
.HasForeignKey("IdentityId")
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.IsRequired();
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Organizations.OrganizationUser", b =>
|
|
{
|
|
b.HasOne("MicCheck.Api.Organizations.Organization", null)
|
|
.WithMany("Members")
|
|
.HasForeignKey("OrganizationId")
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.IsRequired();
|
|
|
|
b.HasOne("MicCheck.Api.Users.User", null)
|
|
.WithMany("Organizations")
|
|
.HasForeignKey("UserId")
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.IsRequired();
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Projects.Project", b =>
|
|
{
|
|
b.HasOne("MicCheck.Api.Organizations.Organization", null)
|
|
.WithMany("Projects")
|
|
.HasForeignKey("OrganizationId")
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.IsRequired();
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Segments.Segment", b =>
|
|
{
|
|
b.HasOne("MicCheck.Api.Projects.Project", null)
|
|
.WithMany("Segments")
|
|
.HasForeignKey("ProjectId")
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.IsRequired();
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Segments.SegmentCondition", b =>
|
|
{
|
|
b.HasOne("MicCheck.Api.Segments.SegmentRule", null)
|
|
.WithMany("Conditions")
|
|
.HasForeignKey("RuleId")
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.IsRequired();
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Segments.SegmentRule", b =>
|
|
{
|
|
b.HasOne("MicCheck.Api.Segments.SegmentRule", null)
|
|
.WithMany("ChildRules")
|
|
.HasForeignKey("ParentRuleId")
|
|
.OnDelete(DeleteBehavior.NoAction);
|
|
|
|
b.HasOne("MicCheck.Api.Segments.Segment", null)
|
|
.WithMany("Rules")
|
|
.HasForeignKey("SegmentId")
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.IsRequired();
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Users.RefreshToken", b =>
|
|
{
|
|
b.HasOne("MicCheck.Api.Users.User", "User")
|
|
.WithMany()
|
|
.HasForeignKey("UserId")
|
|
.OnDelete(DeleteBehavior.Cascade)
|
|
.IsRequired();
|
|
|
|
b.Navigation("User");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Environments.Environment", b =>
|
|
{
|
|
b.Navigation("FeatureStates");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Features.Feature", b =>
|
|
{
|
|
b.Navigation("FeatureStates");
|
|
|
|
b.Navigation("Tags");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Features.FeatureSegment", b =>
|
|
{
|
|
b.Navigation("FeatureState");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Identities.Identity", b =>
|
|
{
|
|
b.Navigation("FeatureStateOverrides");
|
|
|
|
b.Navigation("Traits");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Organizations.Organization", b =>
|
|
{
|
|
b.Navigation("ApiKeys");
|
|
|
|
b.Navigation("Members");
|
|
|
|
b.Navigation("Projects");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Projects.Project", b =>
|
|
{
|
|
b.Navigation("Environments");
|
|
|
|
b.Navigation("Features");
|
|
|
|
b.Navigation("Segments");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Segments.Segment", b =>
|
|
{
|
|
b.Navigation("Rules");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Segments.SegmentRule", b =>
|
|
{
|
|
b.Navigation("ChildRules");
|
|
|
|
b.Navigation("Conditions");
|
|
});
|
|
|
|
modelBuilder.Entity("MicCheck.Api.Users.User", b =>
|
|
{
|
|
b.Navigation("Organizations");
|
|
});
|
|
#pragma warning restore 612, 618
|
|
}
|
|
}
|
|
}
|