< Summary - Heimdall API

Line coverage
100%
Covered lines: 1222
Uncovered lines: 0
Coverable lines: 1222
Total lines: 1314
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage
100%
Covered methods: 3
Fully covered methods: 3
Total methods: 3
Method coverage: 100%
Full method coverage: 100%

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
File 1: Up(...)100%11100%
File 1: Down(...)100%11100%
File 2: BuildTargetModel(...)100%11100%

File(s)

/home/ci/agent/workspace/heimdall-api-docs_main/app/src/Infrastructure/ArturRios.Heimdall.Data/Migrations/20261014052753_AddPendingRegistrationPublicId.cs

#LineLine coverage
 1using System;
 2using Microsoft.EntityFrameworkCore.Migrations;
 3
 4#nullable disable
 5
 6namespace ArturRios.Heimdall.Data.Migrations
 7{
 8    /// <summary>
 9    ///     Adds PENDING_REGISTRATION.public_id — the administrative reference by which a scope's owners
 10    ///     list and discard a self-registration that is waiting for confirmation (UC-49, UC-50) — and
 11    ///     the unique index that keeps it an identifier.
 12    /// </summary>
 13    /// <remarks>
 14    ///     Existing rows are backfilled with gen_random_uuid(): a constant default, which is what
 15    ///     scaffolding produces for a non-nullable column, would give every existing row the same id
 16    ///     and fail the unique index. The default exists only for that backfill and is dropped again,
 17    ///     so the column matches the model, where the entity supplies the id.
 18    ///
 19    ///     The id is random and carries no personal data; its purpose is recorded in §5.1 of the Data
 20    ///     Protection Document. The row's lifetime is unchanged, so the Data Retention Schedule is too.
 21    /// </remarks>
 22    public partial class AddPendingRegistrationPublicId : Migration
 23    {
 24        /// <inheritdoc />
 25        protected override void Up(MigrationBuilder migrationBuilder)
 26        {
 1927            migrationBuilder.AddColumn<Guid>(
 1928                name: "public_id",
 1929                schema: "heimdall",
 1930                table: "pending_registration",
 1931                type: "uuid",
 1932                nullable: false,
 1933                defaultValueSql: "gen_random_uuid()");
 34
 1935            migrationBuilder.Sql(
 1936                "ALTER TABLE heimdall.pending_registration ALTER COLUMN public_id DROP DEFAULT;");
 37
 1938            migrationBuilder.CreateIndex(
 1939                name: "ix_pending_registration_public_id",
 1940                schema: "heimdall",
 1941                table: "pending_registration",
 1942                column: "public_id",
 1943                unique: true);
 1944        }
 45
 46        /// <inheritdoc />
 47        protected override void Down(MigrationBuilder migrationBuilder)
 48        {
 149            migrationBuilder.DropIndex(
 150                name: "ix_pending_registration_public_id",
 151                schema: "heimdall",
 152                table: "pending_registration");
 53
 154            migrationBuilder.DropColumn(
 155                name: "public_id",
 156                schema: "heimdall",
 157                table: "pending_registration");
 158        }
 59    }
 60}

/home/ci/agent/workspace/heimdall-api-docs_main/app/src/Infrastructure/ArturRios.Heimdall.Data/Migrations/20261014052753_AddPendingRegistrationPublicId.Designer.cs

#LineLine coverage
 1// <auto-generated />
 2using System;
 3using ArturRios.Heimdall.Data.Configuration;
 4using Microsoft.EntityFrameworkCore;
 5using Microsoft.EntityFrameworkCore.Infrastructure;
 6using Microsoft.EntityFrameworkCore.Migrations;
 7using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
 8using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
 9
 10#nullable disable
 11
 12namespace ArturRios.Heimdall.Data.Migrations
 13{
 14    [DbContext(typeof(AppDbContext))]
 15    [Migration("20261014052753_AddPendingRegistrationPublicId")]
 16    partial class AddPendingRegistrationPublicId
 17    {
 18        /// <inheritdoc />
 19        protected override void BuildTargetModel(ModelBuilder modelBuilder)
 20        {
 21#pragma warning disable 612, 618
 1022            modelBuilder
 1023                .HasDefaultSchema("heimdall")
 1024                .HasAnnotation("ProductVersion", "10.0.13")
 1025                .HasAnnotation("Relational:MaxIdentifierLength", 63);
 26
 1027            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
 28
 1029            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Application", b =>
 1030                {
 1031                    b.Property<long>("Id")
 1032                        .ValueGeneratedOnAdd()
 1033                        .HasColumnType("bigint")
 1034                        .HasColumnName("id")
 1035                        .HasColumnOrder(1);
 1036
 1037                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 1038
 1039                    b.Property<DateTime>("CreatedAt")
 1040                        .ValueGeneratedOnAdd()
 1041                        .HasColumnType("timestamp with time zone")
 1042                        .HasColumnName("created_at")
 1043                        .HasDefaultValueSql("now()");
 1044
 1045                    b.Property<bool>("IsDeleted")
 1046                        .ValueGeneratedOnAdd()
 1047                        .HasColumnType("boolean")
 1048                        .HasDefaultValue(false)
 1049                        .HasColumnName("is_deleted");
 1050
 1051                    b.Property<string>("Name")
 1052                        .IsRequired()
 1053                        .HasMaxLength(200)
 1054                        .HasColumnType("character varying(200)")
 1055                        .HasColumnName("name");
 1056
 1057                    b.Property<long>("OwnerId")
 1058                        .HasColumnType("bigint")
 1059                        .HasColumnName("owner_id");
 1060
 1061                    b.Property<Guid>("PublicId")
 1062                        .HasColumnType("uuid")
 1063                        .HasColumnName("public_id");
 1064
 1065                    b.Property<long>("ScopeId")
 1066                        .HasColumnType("bigint")
 1067                        .HasColumnName("scope_id");
 1068
 1069                    b.Property<DateTime>("UpdatedAt")
 1070                        .ValueGeneratedOnAdd()
 1071                        .HasColumnType("timestamp with time zone")
 1072                        .HasColumnName("updated_at")
 1073                        .HasDefaultValueSql("now()");
 1074
 1075                    b.HasKey("Id")
 1076                        .HasName("pk_application");
 1077
 1078                    b.HasIndex("OwnerId")
 1079                        .HasDatabaseName("ix_application_owner_id");
 1080
 1081                    b.HasIndex("PublicId")
 1082                        .IsUnique()
 1083                        .HasDatabaseName("ix_application_public_id");
 1084
 1085                    b.HasIndex("ScopeId")
 1086                        .HasDatabaseName("ix_application_scope_id");
 1087
 1088                    b.ToTable("application", "heimdall");
 2089                });
 90
 1091            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.AuditLog", b =>
 1092                {
 1093                    b.Property<long>("Id")
 1094                        .ValueGeneratedOnAdd()
 1095                        .HasColumnType("bigint")
 1096                        .HasColumnName("id")
 1097                        .HasColumnOrder(1);
 1098
 1099                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 10100
 10101                    b.Property<string>("Action")
 10102                        .IsRequired()
 10103                        .HasMaxLength(200)
 10104                        .HasColumnType("character varying(200)")
 10105                        .HasColumnName("action");
 10106
 10107                    b.Property<Guid?>("ActorPersonId")
 10108                        .HasColumnType("uuid")
 10109                        .HasColumnName("actor_person_id");
 10110
 10111                    b.Property<int?>("ActorRole")
 10112                        .HasColumnType("integer")
 10113                        .HasColumnName("actor_role");
 10114
 10115                    b.Property<DateTime>("CreatedAt")
 10116                        .ValueGeneratedOnAdd()
 10117                        .HasColumnType("timestamp with time zone")
 10118                        .HasColumnName("created_at")
 10119                        .HasDefaultValueSql("now()");
 10120
 10121                    b.Property<string>("FailureReason")
 10122                        .HasMaxLength(500)
 10123                        .HasColumnType("character varying(500)")
 10124                        .HasColumnName("failure_reason");
 10125
 10126                    b.Property<Guid>("PublicId")
 10127                        .HasColumnType("uuid")
 10128                        .HasColumnName("public_id");
 10129
 10130                    b.Property<bool>("Succeeded")
 10131                        .HasColumnType("boolean")
 10132                        .HasColumnName("succeeded");
 10133
 10134                    b.Property<Guid?>("TargetId")
 10135                        .HasColumnType("uuid")
 10136                        .HasColumnName("target_id");
 10137
 10138                    b.HasKey("Id")
 10139                        .HasName("pk_audit_log");
 10140
 10141                    b.HasIndex("ActorPersonId")
 10142                        .HasDatabaseName("ix_audit_log_actor_person_id");
 10143
 10144                    b.HasIndex("CreatedAt")
 10145                        .HasDatabaseName("ix_audit_log_created_at");
 10146
 10147                    b.HasIndex("PublicId")
 10148                        .IsUnique()
 10149                        .HasDatabaseName("ix_audit_log_public_id");
 10150
 10151                    b.ToTable("audit_log", "heimdall");
 20152                });
 153
 10154            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.EmailVerificationToken", b =>
 10155                {
 10156                    b.Property<long>("Id")
 10157                        .ValueGeneratedOnAdd()
 10158                        .HasColumnType("bigint")
 10159                        .HasColumnName("id")
 10160                        .HasColumnOrder(1);
 10161
 10162                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 10163
 10164                    b.Property<DateTime>("ExpiresAt")
 10165                        .HasColumnType("timestamp with time zone")
 10166                        .HasColumnName("expires_at");
 10167
 10168                    b.Property<long>("PersonId")
 10169                        .HasColumnType("bigint")
 10170                        .HasColumnName("person_id");
 10171
 10172                    b.Property<string>("TokenHash")
 10173                        .IsRequired()
 10174                        .HasMaxLength(64)
 10175                        .HasColumnType("character varying(64)")
 10176                        .HasColumnName("token_hash");
 10177
 10178                    b.Property<bool>("Used")
 10179                        .ValueGeneratedOnAdd()
 10180                        .HasColumnType("boolean")
 10181                        .HasDefaultValue(false)
 10182                        .HasColumnName("used");
 10183
 10184                    b.HasKey("Id")
 10185                        .HasName("pk_email_verification_token");
 10186
 10187                    b.HasIndex("PersonId")
 10188                        .HasDatabaseName("ix_email_verification_token_person_id");
 10189
 10190                    b.HasIndex("TokenHash")
 10191                        .IsUnique()
 10192                        .HasDatabaseName("ix_email_verification_token_token_hash");
 10193
 10194                    b.ToTable("email_verification_token", "heimdall");
 20195                });
 196
 10197            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.GoogleUser", b =>
 10198                {
 10199                    b.Property<long>("Id")
 10200                        .ValueGeneratedOnAdd()
 10201                        .HasColumnType("bigint")
 10202                        .HasColumnName("id")
 10203                        .HasColumnOrder(1);
 10204
 10205                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 10206
 10207                    b.Property<DateTime?>("AnonymisedAt")
 10208                        .HasColumnType("timestamp with time zone")
 10209                        .HasColumnName("anonymised_at");
 10210
 10211                    b.Property<DateTime?>("BasisRecordedAt")
 10212                        .HasColumnType("timestamp with time zone")
 10213                        .HasColumnName("basis_recorded_at");
 10214
 10215                    b.Property<DateTime>("CreatedAt")
 10216                        .ValueGeneratedOnAdd()
 10217                        .HasColumnType("timestamp with time zone")
 10218                        .HasColumnName("created_at")
 10219                        .HasDefaultValueSql("now()");
 10220
 10221                    b.Property<DateTime?>("DeletedAt")
 10222                        .HasColumnType("timestamp with time zone")
 10223                        .HasColumnName("deleted_at");
 10224
 10225                    b.Property<int?>("DeletionKind")
 10226                        .HasColumnType("integer")
 10227                        .HasColumnName("deletion_kind");
 10228
 10229                    b.Property<string>("Email")
 10230                        .IsRequired()
 10231                        .HasMaxLength(256)
 10232                        .HasColumnType("character varying(256)")
 10233                        .HasColumnName("email");
 10234
 10235                    b.Property<bool>("EmailVerified")
 10236                        .ValueGeneratedOnAdd()
 10237                        .HasColumnType("boolean")
 10238                        .HasDefaultValue(false)
 10239                        .HasColumnName("email_verified");
 10240
 10241                    b.Property<string>("ErasureBlockedReason")
 10242                        .HasMaxLength(500)
 10243                        .HasColumnType("character varying(500)")
 10244                        .HasColumnName("erasure_blocked_reason");
 10245
 10246                    b.Property<DateTime?>("ErasureDueAt")
 10247                        .HasColumnType("timestamp with time zone")
 10248                        .HasColumnName("erasure_due_at");
 10249
 10250                    b.Property<DateTime?>("ErasureRequestedAt")
 10251                        .HasColumnType("timestamp with time zone")
 10252                        .HasColumnName("erasure_requested_at");
 10253
 10254                    b.Property<string>("GoogleId")
 10255                        .IsRequired()
 10256                        .HasMaxLength(255)
 10257                        .HasColumnType("character varying(255)")
 10258                        .HasColumnName("google_id");
 10259
 10260                    b.Property<bool>("IsDeleted")
 10261                        .ValueGeneratedOnAdd()
 10262                        .HasColumnType("boolean")
 10263                        .HasDefaultValue(false)
 10264                        .HasColumnName("is_deleted");
 10265
 10266                    b.Property<int>("LegalBasis")
 10267                        .ValueGeneratedOnAdd()
 10268                        .HasColumnType("integer")
 10269                        .HasDefaultValue(0)
 10270                        .HasColumnName("legal_basis");
 10271
 10272                    b.Property<string>("Name")
 10273                        .IsRequired()
 10274                        .HasMaxLength(200)
 10275                        .HasColumnType("character varying(200)")
 10276                        .HasColumnName("name");
 10277
 10278                    b.Property<string>("PrivacyNoticeVersion")
 10279                        .HasMaxLength(50)
 10280                        .HasColumnType("character varying(50)")
 10281                        .HasColumnName("privacy_notice_version");
 10282
 10283                    b.Property<DateTime?>("ProcessingRestrictedAt")
 10284                        .HasColumnType("timestamp with time zone")
 10285                        .HasColumnName("processing_restricted_at");
 10286
 10287                    b.Property<string>("ProfilePictureUrl")
 10288                        .HasMaxLength(2048)
 10289                        .HasColumnType("character varying(2048)")
 10290                        .HasColumnName("profile_picture_url");
 10291
 10292                    b.Property<Guid>("PublicId")
 10293                        .HasColumnType("uuid")
 10294                        .HasColumnName("public_id");
 10295
 10296                    b.Property<int?>("RestrictionGround")
 10297                        .HasColumnType("integer")
 10298                        .HasColumnName("restriction_ground");
 10299
 10300                    b.Property<DateTime?>("RestrictionLiftNotifiedAt")
 10301                        .HasColumnType("timestamp with time zone")
 10302                        .HasColumnName("restriction_lift_notified_at");
 10303
 10304                    b.Property<long>("ScopeId")
 10305                        .HasColumnType("bigint")
 10306                        .HasColumnName("scope_id");
 10307
 10308                    b.Property<DateTime>("UpdatedAt")
 10309                        .ValueGeneratedOnAdd()
 10310                        .HasColumnType("timestamp with time zone")
 10311                        .HasColumnName("updated_at")
 10312                        .HasDefaultValueSql("now()");
 10313
 10314                    b.HasKey("Id")
 10315                        .HasName("pk_google_user");
 10316
 10317                    b.HasIndex("DeletedAt")
 10318                        .HasDatabaseName("ix_google_user_deleted_at")
 10319                        .HasFilter("is_deleted = true AND anonymised_at IS NULL");
 10320
 10321                    b.HasIndex("ProcessingRestrictedAt")
 10322                        .HasDatabaseName("ix_google_user_processing_restricted_at")
 10323                        .HasFilter("processing_restricted_at IS NOT NULL");
 10324
 10325                    b.HasIndex("PublicId")
 10326                        .IsUnique()
 10327                        .HasDatabaseName("ix_google_user_public_id");
 10328
 10329                    b.HasIndex("ScopeId", "Email")
 10330                        .IsUnique()
 10331                        .HasDatabaseName("ix_google_user_scope_id_email");
 10332
 10333                    b.HasIndex("ScopeId", "GoogleId")
 10334                        .IsUnique()
 10335                        .HasDatabaseName("ix_google_user_scope_id_google_id");
 10336
 10337                    b.ToTable("google_user", "heimdall");
 20338                });
 339
 10340            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.PasswordResetToken", b =>
 10341                {
 10342                    b.Property<long>("Id")
 10343                        .ValueGeneratedOnAdd()
 10344                        .HasColumnType("bigint")
 10345                        .HasColumnName("id")
 10346                        .HasColumnOrder(1);
 10347
 10348                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 10349
 10350                    b.Property<DateTime>("ExpiresAt")
 10351                        .HasColumnType("timestamp with time zone")
 10352                        .HasColumnName("expires_at");
 10353
 10354                    b.Property<long>("PersonId")
 10355                        .HasColumnType("bigint")
 10356                        .HasColumnName("person_id");
 10357
 10358                    b.Property<string>("TokenHash")
 10359                        .IsRequired()
 10360                        .HasMaxLength(64)
 10361                        .HasColumnType("character varying(64)")
 10362                        .HasColumnName("token_hash");
 10363
 10364                    b.Property<bool>("Used")
 10365                        .ValueGeneratedOnAdd()
 10366                        .HasColumnType("boolean")
 10367                        .HasDefaultValue(false)
 10368                        .HasColumnName("used");
 10369
 10370                    b.HasKey("Id")
 10371                        .HasName("pk_password_reset_token");
 10372
 10373                    b.HasIndex("PersonId")
 10374                        .HasDatabaseName("ix_password_reset_token_person_id");
 10375
 10376                    b.HasIndex("TokenHash")
 10377                        .IsUnique()
 10378                        .HasDatabaseName("ix_password_reset_token_token_hash");
 10379
 10380                    b.ToTable("password_reset_token", "heimdall");
 20381                });
 382
 10383            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.PendingRegistration", b =>
 10384                {
 10385                    b.Property<long>("Id")
 10386                        .ValueGeneratedOnAdd()
 10387                        .HasColumnType("bigint")
 10388                        .HasColumnName("id")
 10389                        .HasColumnOrder(1);
 10390
 10391                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 10392
 10393                    b.Property<DateTime>("CreatedAt")
 10394                        .ValueGeneratedOnAdd()
 10395                        .HasColumnType("timestamp with time zone")
 10396                        .HasColumnName("created_at")
 10397                        .HasDefaultValueSql("now()");
 10398
 10399                    b.Property<string>("Email")
 10400                        .IsRequired()
 10401                        .HasMaxLength(256)
 10402                        .HasColumnType("character varying(256)")
 10403                        .HasColumnName("email");
 10404
 10405                    b.Property<DateTime>("ExpiresAt")
 10406                        .HasColumnType("timestamp with time zone")
 10407                        .HasColumnName("expires_at");
 10408
 10409                    b.Property<int>("FailedAttempts")
 10410                        .ValueGeneratedOnAdd()
 10411                        .HasColumnType("integer")
 10412                        .HasDefaultValue(0)
 10413                        .HasColumnName("failed_attempts");
 10414
 10415                    b.Property<string>("Name")
 10416                        .IsRequired()
 10417                        .HasMaxLength(200)
 10418                        .HasColumnType("character varying(200)")
 10419                        .HasColumnName("name");
 10420
 10421                    b.Property<byte[]>("PasswordHash")
 10422                        .IsRequired()
 10423                        .HasColumnType("bytea")
 10424                        .HasColumnName("password_hash");
 10425
 10426                    b.Property<Guid>("PublicId")
 10427                        .HasColumnType("uuid")
 10428                        .HasColumnName("public_id");
 10429
 10430                    b.Property<byte[]>("Salt")
 10431                        .IsRequired()
 10432                        .HasColumnType("bytea")
 10433                        .HasColumnName("salt");
 10434
 10435                    b.Property<long>("ScopeId")
 10436                        .HasColumnType("bigint")
 10437                        .HasColumnName("scope_id");
 10438
 10439                    b.Property<string>("TokenHash")
 10440                        .IsRequired()
 10441                        .HasMaxLength(64)
 10442                        .HasColumnType("character varying(64)")
 10443                        .HasColumnName("token_hash");
 10444
 10445                    b.HasKey("Id")
 10446                        .HasName("pk_pending_registration");
 10447
 10448                    b.HasIndex("PublicId")
 10449                        .IsUnique()
 10450                        .HasDatabaseName("ix_pending_registration_public_id");
 10451
 10452                    b.HasIndex("ScopeId")
 10453                        .HasDatabaseName("ix_pending_registration_scope_id");
 10454
 10455                    b.HasIndex("TokenHash")
 10456                        .IsUnique()
 10457                        .HasDatabaseName("ix_pending_registration_token_hash");
 10458
 10459                    b.ToTable("pending_registration", "heimdall");
 20460                });
 461
 10462            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Person", b =>
 10463                {
 10464                    b.Property<long>("Id")
 10465                        .ValueGeneratedOnAdd()
 10466                        .HasColumnType("bigint")
 10467                        .HasColumnName("id")
 10468                        .HasColumnOrder(1);
 10469
 10470                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 10471
 10472                    b.Property<DateTime?>("AnonymisedAt")
 10473                        .HasColumnType("timestamp with time zone")
 10474                        .HasColumnName("anonymised_at");
 10475
 10476                    b.Property<DateTime?>("BasisRecordedAt")
 10477                        .HasColumnType("timestamp with time zone")
 10478                        .HasColumnName("basis_recorded_at");
 10479
 10480                    b.Property<DateTime>("CreatedAt")
 10481                        .ValueGeneratedOnAdd()
 10482                        .HasColumnType("timestamp with time zone")
 10483                        .HasColumnName("created_at")
 10484                        .HasDefaultValueSql("now()");
 10485
 10486                    b.Property<DateTime?>("DeletedAt")
 10487                        .HasColumnType("timestamp with time zone")
 10488                        .HasColumnName("deleted_at");
 10489
 10490                    b.Property<int?>("DeletionKind")
 10491                        .HasColumnType("integer")
 10492                        .HasColumnName("deletion_kind");
 10493
 10494                    b.Property<string>("Email")
 10495                        .IsRequired()
 10496                        .HasMaxLength(256)
 10497                        .HasColumnType("character varying(256)")
 10498                        .HasColumnName("email");
 10499
 10500                    b.Property<bool>("EmailVerified")
 10501                        .ValueGeneratedOnAdd()
 10502                        .HasColumnType("boolean")
 10503                        .HasDefaultValue(false)
 10504                        .HasColumnName("email_verified");
 10505
 10506                    b.Property<string>("ErasureBlockedReason")
 10507                        .HasMaxLength(500)
 10508                        .HasColumnType("character varying(500)")
 10509                        .HasColumnName("erasure_blocked_reason");
 10510
 10511                    b.Property<DateTime?>("ErasureDueAt")
 10512                        .HasColumnType("timestamp with time zone")
 10513                        .HasColumnName("erasure_due_at");
 10514
 10515                    b.Property<DateTime?>("ErasureRequestedAt")
 10516                        .HasColumnType("timestamp with time zone")
 10517                        .HasColumnName("erasure_requested_at");
 10518
 10519                    b.Property<int>("FailedLoginAttempts")
 10520                        .HasColumnType("integer")
 10521                        .HasColumnName("failed_login_attempts");
 10522
 10523                    b.Property<bool>("IsDeleted")
 10524                        .ValueGeneratedOnAdd()
 10525                        .HasColumnType("boolean")
 10526                        .HasDefaultValue(false)
 10527                        .HasColumnName("is_deleted");
 10528
 10529                    b.Property<int>("LegalBasis")
 10530                        .ValueGeneratedOnAdd()
 10531                        .HasColumnType("integer")
 10532                        .HasDefaultValue(0)
 10533                        .HasColumnName("legal_basis");
 10534
 10535                    b.Property<DateTime?>("LockedOutUntil")
 10536                        .HasColumnType("timestamp with time zone")
 10537                        .HasColumnName("locked_out_until");
 10538
 10539                    b.Property<string>("Name")
 10540                        .IsRequired()
 10541                        .HasMaxLength(200)
 10542                        .HasColumnType("character varying(200)")
 10543                        .HasColumnName("name");
 10544
 10545                    b.Property<byte[]>("PasswordHash")
 10546                        .IsRequired()
 10547                        .HasColumnType("bytea")
 10548                        .HasColumnName("password_hash");
 10549
 10550                    b.Property<string>("PrivacyNoticeVersion")
 10551                        .HasMaxLength(50)
 10552                        .HasColumnType("character varying(50)")
 10553                        .HasColumnName("privacy_notice_version");
 10554
 10555                    b.Property<DateTime?>("ProcessingRestrictedAt")
 10556                        .HasColumnType("timestamp with time zone")
 10557                        .HasColumnName("processing_restricted_at");
 10558
 10559                    b.Property<Guid>("PublicId")
 10560                        .HasColumnType("uuid")
 10561                        .HasColumnName("public_id");
 10562
 10563                    b.Property<int?>("RestrictionGround")
 10564                        .HasColumnType("integer")
 10565                        .HasColumnName("restriction_ground");
 10566
 10567                    b.Property<DateTime?>("RestrictionLiftNotifiedAt")
 10568                        .HasColumnType("timestamp with time zone")
 10569                        .HasColumnName("restriction_lift_notified_at");
 10570
 10571                    b.Property<long>("RoleId")
 10572                        .HasColumnType("bigint")
 10573                        .HasColumnName("role_id");
 10574
 10575                    b.Property<byte[]>("Salt")
 10576                        .IsRequired()
 10577                        .HasColumnType("bytea")
 10578                        .HasColumnName("salt");
 10579
 10580                    b.Property<long?>("ScopeId")
 10581                        .HasColumnType("bigint")
 10582                        .HasColumnName("scope_id");
 10583
 10584                    b.Property<DateTime>("UpdatedAt")
 10585                        .ValueGeneratedOnAdd()
 10586                        .HasColumnType("timestamp with time zone")
 10587                        .HasColumnName("updated_at")
 10588                        .HasDefaultValueSql("now()");
 10589
 10590                    b.HasKey("Id")
 10591                        .HasName("pk_person");
 10592
 10593                    b.HasIndex("DeletedAt")
 10594                        .HasDatabaseName("ix_person_deleted_at")
 10595                        .HasFilter("is_deleted = true AND anonymised_at IS NULL");
 10596
 10597                    b.HasIndex("Email")
 10598                        .HasDatabaseName("ix_person_email");
 10599
 10600                    b.HasIndex("ProcessingRestrictedAt")
 10601                        .HasDatabaseName("ix_person_processing_restricted_at")
 10602                        .HasFilter("processing_restricted_at IS NOT NULL");
 10603
 10604                    b.HasIndex("PublicId")
 10605                        .IsUnique()
 10606                        .HasDatabaseName("ix_person_public_id");
 10607
 10608                    b.HasIndex("RoleId")
 10609                        .HasDatabaseName("ix_person_role_id");
 10610
 10611                    b.ToTable("person", "heimdall");
 20612                });
 613
 10614            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Role", b =>
 10615                {
 10616                    b.Property<long>("Id")
 10617                        .HasColumnType("bigint")
 10618                        .HasColumnName("id")
 10619                        .HasColumnOrder(1);
 10620
 10621                    b.Property<string>("Description")
 10622                        .HasMaxLength(500)
 10623                        .HasColumnType("character varying(500)")
 10624                        .HasColumnName("description");
 10625
 10626                    b.Property<string>("Name")
 10627                        .IsRequired()
 10628                        .HasMaxLength(200)
 10629                        .HasColumnType("character varying(200)")
 10630                        .HasColumnName("name");
 10631
 10632                    b.Property<Guid>("PublicId")
 10633                        .HasColumnType("uuid")
 10634                        .HasColumnName("public_id");
 10635
 10636                    b.HasKey("Id")
 10637                        .HasName("pk_role");
 10638
 10639                    b.HasIndex("Name")
 10640                        .IsUnique()
 10641                        .HasDatabaseName("ix_role_name");
 10642
 10643                    b.HasIndex("PublicId")
 10644                        .IsUnique()
 10645                        .HasDatabaseName("ix_role_public_id");
 10646
 10647                    b.ToTable("role", "heimdall");
 20648                });
 649
 10650            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Scope", b =>
 10651                {
 10652                    b.Property<long>("Id")
 10653                        .ValueGeneratedOnAdd()
 10654                        .HasColumnType("bigint")
 10655                        .HasColumnName("id")
 10656                        .HasColumnOrder(1);
 10657
 10658                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 10659
 10660                    b.Property<DateTime>("CreatedAt")
 10661                        .ValueGeneratedOnAdd()
 10662                        .HasColumnType("timestamp with time zone")
 10663                        .HasColumnName("created_at")
 10664                        .HasDefaultValueSql("now()");
 10665
 10666                    b.Property<int?>("DefaultLegalBasis")
 10667                        .HasColumnType("integer")
 10668                        .HasColumnName("default_legal_basis");
 10669
 10670                    b.Property<string>("Description")
 10671                        .HasMaxLength(500)
 10672                        .HasColumnType("character varying(500)")
 10673                        .HasColumnName("description");
 10674
 10675                    b.Property<string>("EmailVerificationUrl")
 10676                        .HasMaxLength(2048)
 10677                        .HasColumnType("character varying(2048)")
 10678                        .HasColumnName("email_verification_url");
 10679
 10680                    b.Property<bool>("GoogleSignInEnabled")
 10681                        .ValueGeneratedOnAdd()
 10682                        .HasColumnType("boolean")
 10683                        .HasDefaultValue(false)
 10684                        .HasColumnName("google_sign_in_enabled");
 10685
 10686                    b.Property<bool>("IsDeleted")
 10687                        .ValueGeneratedOnAdd()
 10688                        .HasColumnType("boolean")
 10689                        .HasDefaultValue(false)
 10690                        .HasColumnName("is_deleted");
 10691
 10692                    b.Property<string>("Name")
 10693                        .IsRequired()
 10694                        .HasMaxLength(200)
 10695                        .HasColumnType("character varying(200)")
 10696                        .HasColumnName("name");
 10697
 10698                    b.Property<string>("PasswordResetUrl")
 10699                        .HasMaxLength(2048)
 10700                        .HasColumnType("character varying(2048)")
 10701                        .HasColumnName("password_reset_url");
 10702
 10703                    b.Property<string>("PrivacyNoticeUri")
 10704                        .HasMaxLength(2048)
 10705                        .HasColumnType("character varying(2048)")
 10706                        .HasColumnName("privacy_notice_uri");
 10707
 10708                    b.Property<Guid>("PublicId")
 10709                        .HasColumnType("uuid")
 10710                        .HasColumnName("public_id");
 10711
 10712                    b.Property<bool>("SelfRegistrationEnabled")
 10713                        .ValueGeneratedOnAdd()
 10714                        .HasColumnType("boolean")
 10715                        .HasDefaultValue(false)
 10716                        .HasColumnName("self_registration_enabled");
 10717
 10718                    b.Property<DateTime>("UpdatedAt")
 10719                        .ValueGeneratedOnAdd()
 10720                        .HasColumnType("timestamp with time zone")
 10721                        .HasColumnName("updated_at")
 10722                        .HasDefaultValueSql("now()");
 10723
 10724                    b.HasKey("Id")
 10725                        .HasName("pk_scope");
 10726
 10727                    b.HasIndex("Name")
 10728                        .IsUnique()
 10729                        .HasDatabaseName("ix_scope_name");
 10730
 10731                    b.HasIndex("PublicId")
 10732                        .IsUnique()
 10733                        .HasDatabaseName("ix_scope_public_id");
 10734
 10735                    b.ToTable("scope", "heimdall");
 20736                });
 737
 10738            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.ScopeOwner", b =>
 10739                {
 10740                    b.Property<long>("ScopeId")
 10741                        .HasColumnType("bigint")
 10742                        .HasColumnName("scope_id");
 10743
 10744                    b.Property<long>("PersonId")
 10745                        .HasColumnType("bigint")
 10746                        .HasColumnName("person_id");
 10747
 10748                    b.HasKey("ScopeId", "PersonId")
 10749                        .HasName("pk_scope_owner");
 10750
 10751                    b.HasIndex("PersonId")
 10752                        .HasDatabaseName("ix_scope_owner_person_id");
 10753
 10754                    b.ToTable("scope_owner", "heimdall");
 20755                });
 756
 10757            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.ScopePermission", b =>
 10758                {
 10759                    b.Property<long>("Id")
 10760                        .ValueGeneratedOnAdd()
 10761                        .HasColumnType("bigint")
 10762                        .HasColumnName("id")
 10763                        .HasColumnOrder(1);
 10764
 10765                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 10766
 10767                    b.Property<DateTime>("CreatedAt")
 10768                        .ValueGeneratedOnAdd()
 10769                        .HasColumnType("timestamp with time zone")
 10770                        .HasColumnName("created_at")
 10771                        .HasDefaultValueSql("now()");
 10772
 10773                    b.Property<string>("Description")
 10774                        .HasMaxLength(500)
 10775                        .HasColumnType("character varying(500)")
 10776                        .HasColumnName("description");
 10777
 10778                    b.Property<bool>("IncludeAsJwtClaim")
 10779                        .ValueGeneratedOnAdd()
 10780                        .HasColumnType("boolean")
 10781                        .HasDefaultValue(false)
 10782                        .HasColumnName("include_as_jwt_claim");
 10783
 10784                    b.Property<bool>("IsDeleted")
 10785                        .ValueGeneratedOnAdd()
 10786                        .HasColumnType("boolean")
 10787                        .HasDefaultValue(false)
 10788                        .HasColumnName("is_deleted");
 10789
 10790                    b.Property<string>("Name")
 10791                        .IsRequired()
 10792                        .HasMaxLength(200)
 10793                        .HasColumnType("character varying(200)")
 10794                        .HasColumnName("name");
 10795
 10796                    b.Property<Guid>("PublicId")
 10797                        .HasColumnType("uuid")
 10798                        .HasColumnName("public_id");
 10799
 10800                    b.Property<long>("ScopeId")
 10801                        .HasColumnType("bigint")
 10802                        .HasColumnName("scope_id");
 10803
 10804                    b.Property<DateTime>("UpdatedAt")
 10805                        .ValueGeneratedOnAdd()
 10806                        .HasColumnType("timestamp with time zone")
 10807                        .HasColumnName("updated_at")
 10808                        .HasDefaultValueSql("now()");
 10809
 10810                    b.HasKey("Id")
 10811                        .HasName("pk_scope_permission");
 10812
 10813                    b.HasIndex("PublicId")
 10814                        .IsUnique()
 10815                        .HasDatabaseName("ix_scope_permission_public_id");
 10816
 10817                    b.HasIndex("ScopeId")
 10818                        .HasDatabaseName("ix_scope_permission_scope_id");
 10819
 10820                    b.ToTable("scope_permission", "heimdall");
 20821                });
 822
 10823            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.ScopeUser", b =>
 10824                {
 10825                    b.Property<long>("ScopeId")
 10826                        .HasColumnType("bigint")
 10827                        .HasColumnName("scope_id");
 10828
 10829                    b.Property<long>("PersonId")
 10830                        .HasColumnType("bigint")
 10831                        .HasColumnName("person_id");
 10832
 10833                    b.HasKey("ScopeId", "PersonId")
 10834                        .HasName("pk_scope_user");
 10835
 10836                    b.HasIndex("PersonId")
 10837                        .IsUnique()
 10838                        .HasDatabaseName("ix_scope_user_person_id");
 10839
 10840                    b.ToTable("scope_user", "heimdall");
 20841                });
 842
 10843            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.TwoFactorAuth", b =>
 10844                {
 10845                    b.Property<long>("Id")
 10846                        .ValueGeneratedOnAdd()
 10847                        .HasColumnType("bigint")
 10848                        .HasColumnName("id")
 10849                        .HasColumnOrder(1);
 10850
 10851                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 10852
 10853                    b.Property<bool>("AppEnabled")
 10854                        .ValueGeneratedOnAdd()
 10855                        .HasColumnType("boolean")
 10856                        .HasDefaultValue(false)
 10857                        .HasColumnName("app_enabled");
 10858
 10859                    b.Property<int>("ChallengeAttempts")
 10860                        .ValueGeneratedOnAdd()
 10861                        .HasColumnType("integer")
 10862                        .HasDefaultValue(0)
 10863                        .HasColumnName("challenge_attempts");
 10864
 10865                    b.Property<Guid?>("ChallengeId")
 10866                        .HasColumnType("uuid")
 10867                        .HasColumnName("challenge_id");
 10868
 10869                    b.Property<DateTime>("CreatedAt")
 10870                        .ValueGeneratedOnAdd()
 10871                        .HasColumnType("timestamp with time zone")
 10872                        .HasColumnName("created_at")
 10873                        .HasDefaultValueSql("now()");
 10874
 10875                    b.Property<int>("EmailCodeReissueCount")
 10876                        .ValueGeneratedOnAdd()
 10877                        .HasColumnType("integer")
 10878                        .HasDefaultValue(0)
 10879                        .HasColumnName("email_code_reissue_count");
 10880
 10881                    b.Property<bool>("EmailEnabled")
 10882                        .ValueGeneratedOnAdd()
 10883                        .HasColumnType("boolean")
 10884                        .HasDefaultValue(false)
 10885                        .HasColumnName("email_enabled");
 10886
 10887                    b.Property<bool>("IsActive")
 10888                        .ValueGeneratedOnAdd()
 10889                        .HasColumnType("boolean")
 10890                        .HasDefaultValue(false)
 10891                        .HasColumnName("is_active");
 10892
 10893                    b.Property<long?>("LastTotpTimeStepUsed")
 10894                        .HasColumnType("bigint")
 10895                        .HasColumnName("last_totp_time_step_used");
 10896
 10897                    b.Property<long>("PersonId")
 10898                        .HasColumnType("bigint")
 10899                        .HasColumnName("person_id");
 10900
 10901                    b.Property<byte[]>("TotpSecretEncrypted")
 10902                        .HasColumnType("bytea")
 10903                        .HasColumnName("totp_secret_encrypted");
 10904
 10905                    b.Property<DateTime>("UpdatedAt")
 10906                        .ValueGeneratedOnAdd()
 10907                        .HasColumnType("timestamp with time zone")
 10908                        .HasColumnName("updated_at")
 10909                        .HasDefaultValueSql("now()");
 10910
 10911                    b.HasKey("Id")
 10912                        .HasName("pk_two_factor_auth");
 10913
 10914                    b.HasIndex("PersonId")
 10915                        .IsUnique()
 10916                        .HasDatabaseName("ix_two_factor_auth_person_id");
 10917
 10918                    b.ToTable("two_factor_auth", "heimdall");
 20919                });
 920
 10921            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.TwoFactorEmailCode", b =>
 10922                {
 10923                    b.Property<long>("Id")
 10924                        .ValueGeneratedOnAdd()
 10925                        .HasColumnType("bigint")
 10926                        .HasColumnName("id")
 10927                        .HasColumnOrder(1);
 10928
 10929                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 10930
 10931                    b.Property<byte[]>("CodeHash")
 10932                        .IsRequired()
 10933                        .HasColumnType("bytea")
 10934                        .HasColumnName("code_hash");
 10935
 10936                    b.Property<DateTime>("CreatedAt")
 10937                        .ValueGeneratedOnAdd()
 10938                        .HasColumnType("timestamp with time zone")
 10939                        .HasColumnName("created_at")
 10940                        .HasDefaultValueSql("now()");
 10941
 10942                    b.Property<DateTime>("ExpiresAt")
 10943                        .HasColumnType("timestamp with time zone")
 10944                        .HasColumnName("expires_at");
 10945
 10946                    b.Property<int>("FailedAttempts")
 10947                        .HasColumnType("integer")
 10948                        .HasColumnName("failed_attempts");
 10949
 10950                    b.Property<byte[]>("Salt")
 10951                        .IsRequired()
 10952                        .HasColumnType("bytea")
 10953                        .HasColumnName("salt");
 10954
 10955                    b.Property<long>("TwoFactorAuthId")
 10956                        .HasColumnType("bigint")
 10957                        .HasColumnName("two_factor_auth_id");
 10958
 10959                    b.Property<bool>("Used")
 10960                        .ValueGeneratedOnAdd()
 10961                        .HasColumnType("boolean")
 10962                        .HasDefaultValue(false)
 10963                        .HasColumnName("used");
 10964
 10965                    b.HasKey("Id")
 10966                        .HasName("pk_two_factor_email_code");
 10967
 10968                    b.HasIndex("TwoFactorAuthId")
 10969                        .HasDatabaseName("ix_two_factor_email_code_two_factor_auth_id");
 10970
 10971                    b.ToTable("two_factor_email_code", "heimdall");
 20972                });
 973
 10974            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.TwoFactorRecoveryCode", b =>
 10975                {
 10976                    b.Property<long>("Id")
 10977                        .ValueGeneratedOnAdd()
 10978                        .HasColumnType("bigint")
 10979                        .HasColumnName("id")
 10980                        .HasColumnOrder(1);
 10981
 10982                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 10983
 10984                    b.Property<byte[]>("CodeHash")
 10985                        .IsRequired()
 10986                        .HasColumnType("bytea")
 10987                        .HasColumnName("code_hash");
 10988
 10989                    b.Property<DateTime>("CreatedAt")
 10990                        .ValueGeneratedOnAdd()
 10991                        .HasColumnType("timestamp with time zone")
 10992                        .HasColumnName("created_at")
 10993                        .HasDefaultValueSql("now()");
 10994
 10995                    b.Property<long>("TwoFactorAuthId")
 10996                        .HasColumnType("bigint")
 10997                        .HasColumnName("two_factor_auth_id");
 10998
 10999                    b.Property<bool>("Used")
 101000                        .ValueGeneratedOnAdd()
 101001                        .HasColumnType("boolean")
 101002                        .HasDefaultValue(false)
 101003                        .HasColumnName("used");
 101004
 101005                    b.Property<DateTime?>("UsedAt")
 101006                        .HasColumnType("timestamp with time zone")
 101007                        .HasColumnName("used_at");
 101008
 101009                    b.HasKey("Id")
 101010                        .HasName("pk_two_factor_recovery_code");
 101011
 101012                    b.HasIndex("TwoFactorAuthId")
 101013                        .HasDatabaseName("ix_two_factor_recovery_code_two_factor_auth_id");
 101014
 101015                    b.ToTable("two_factor_recovery_code", "heimdall");
 201016                });
 1017
 101018            modelBuilder.Entity("Microsoft.AspNetCore.DataProtection.EntityFrameworkCore.DataProtectionKey", b =>
 101019                {
 101020                    b.Property<int>("Id")
 101021                        .ValueGeneratedOnAdd()
 101022                        .HasColumnType("integer")
 101023                        .HasColumnName("id");
 101024
 101025                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 101026
 101027                    b.Property<string>("FriendlyName")
 101028                        .HasColumnType("text")
 101029                        .HasColumnName("friendly_name");
 101030
 101031                    b.Property<string>("Xml")
 101032                        .HasColumnType("text")
 101033                        .HasColumnName("xml");
 101034
 101035                    b.HasKey("Id")
 101036                        .HasName("pk_data_protection_keys");
 101037
 101038                    b.ToTable("data_protection_keys", "heimdall");
 201039                });
 1040
 101041            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Application", b =>
 101042                {
 101043                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Person", "Owner")
 101044                        .WithMany("OwnedApplications")
 101045                        .HasForeignKey("OwnerId")
 101046                        .OnDelete(DeleteBehavior.Cascade)
 101047                        .IsRequired()
 101048                        .HasConstraintName("fk_application_person_owner_id");
 101049
 101050                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Scope", "Scope")
 101051                        .WithMany("Applications")
 101052                        .HasForeignKey("ScopeId")
 101053                        .OnDelete(DeleteBehavior.Cascade)
 101054                        .IsRequired()
 101055                        .HasConstraintName("fk_application_scope_scope_id");
 101056
 101057                    b.Navigation("Owner");
 101058
 101059                    b.Navigation("Scope");
 201060                });
 1061
 101062            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.EmailVerificationToken", b =>
 101063                {
 101064                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Person", "Person")
 101065                        .WithMany("EmailVerificationTokens")
 101066                        .HasForeignKey("PersonId")
 101067                        .OnDelete(DeleteBehavior.Cascade)
 101068                        .IsRequired()
 101069                        .HasConstraintName("fk_email_verification_token_person_person_id");
 101070
 101071                    b.Navigation("Person");
 201072                });
 1073
 101074            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.GoogleUser", b =>
 101075                {
 101076                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Scope", "Scope")
 101077                        .WithMany("GoogleUsers")
 101078                        .HasForeignKey("ScopeId")
 101079                        .OnDelete(DeleteBehavior.Cascade)
 101080                        .IsRequired()
 101081                        .HasConstraintName("fk_google_user_scope_scope_id");
 101082
 101083                    b.Navigation("Scope");
 201084                });
 1085
 101086            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.PasswordResetToken", b =>
 101087                {
 101088                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Person", "Person")
 101089                        .WithMany("PasswordResetTokens")
 101090                        .HasForeignKey("PersonId")
 101091                        .OnDelete(DeleteBehavior.Cascade)
 101092                        .IsRequired()
 101093                        .HasConstraintName("fk_password_reset_token_person_person_id");
 101094
 101095                    b.Navigation("Person");
 201096                });
 1097
 101098            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.PendingRegistration", b =>
 101099                {
 101100                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Scope", "Scope")
 101101                        .WithMany()
 101102                        .HasForeignKey("ScopeId")
 101103                        .OnDelete(DeleteBehavior.Cascade)
 101104                        .IsRequired()
 101105                        .HasConstraintName("fk_pending_registration_scope_scope_id");
 101106
 101107                    b.Navigation("Scope");
 201108                });
 1109
 101110            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Person", b =>
 101111                {
 101112                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Role", "Role")
 101113                        .WithMany("Persons")
 101114                        .HasForeignKey("RoleId")
 101115                        .OnDelete(DeleteBehavior.Restrict)
 101116                        .IsRequired()
 101117                        .HasConstraintName("fk_person_roles_role_id");
 101118
 101119                    b.Navigation("Role");
 201120                });
 1121
 101122            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.ScopeOwner", b =>
 101123                {
 101124                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Person", "Person")
 101125                        .WithMany("ScopeOwnerships")
 101126                        .HasForeignKey("PersonId")
 101127                        .OnDelete(DeleteBehavior.Cascade)
 101128                        .IsRequired()
 101129                        .HasConstraintName("fk_scope_owner_person_person_id");
 101130
 101131                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Scope", "Scope")
 101132                        .WithMany("Owners")
 101133                        .HasForeignKey("ScopeId")
 101134                        .OnDelete(DeleteBehavior.Cascade)
 101135                        .IsRequired()
 101136                        .HasConstraintName("fk_scope_owner_scope_scope_id");
 101137
 101138                    b.Navigation("Person");
 101139
 101140                    b.Navigation("Scope");
 201141                });
 1142
 101143            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.ScopePermission", b =>
 101144                {
 101145                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Scope", "Scope")
 101146                        .WithMany("ScopePermissions")
 101147                        .HasForeignKey("ScopeId")
 101148                        .OnDelete(DeleteBehavior.Cascade)
 101149                        .IsRequired()
 101150                        .HasConstraintName("fk_scope_permission_scope_scope_id");
 101151
 101152                    b.Navigation("Scope");
 201153                });
 1154
 101155            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.ScopeUser", b =>
 101156                {
 101157                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Person", "Person")
 101158                        .WithOne("ScopeMembership")
 101159                        .HasForeignKey("ArturRios.Heimdall.Domain.Entities.ScopeUser", "PersonId")
 101160                        .OnDelete(DeleteBehavior.Cascade)
 101161                        .IsRequired()
 101162                        .HasConstraintName("fk_scope_user_person_person_id");
 101163
 101164                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Scope", "Scope")
 101165                        .WithMany("Users")
 101166                        .HasForeignKey("ScopeId")
 101167                        .OnDelete(DeleteBehavior.Cascade)
 101168                        .IsRequired()
 101169                        .HasConstraintName("fk_scope_user_scope_scope_id");
 101170
 101171                    b.Navigation("Person");
 101172
 101173                    b.Navigation("Scope");
 201174                });
 1175
 101176            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.TwoFactorAuth", b =>
 101177                {
 101178                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Person", "Person")
 101179                        .WithOne("TwoFactorAuth")
 101180                        .HasForeignKey("ArturRios.Heimdall.Domain.Entities.TwoFactorAuth", "PersonId")
 101181                        .OnDelete(DeleteBehavior.Cascade)
 101182                        .IsRequired()
 101183                        .HasConstraintName("fk_two_factor_auth_person_person_id");
 101184
 101185                    b.Navigation("Person");
 201186                });
 1187
 101188            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.TwoFactorEmailCode", b =>
 101189                {
 101190                    b.HasOne("ArturRios.Heimdall.Domain.Entities.TwoFactorAuth", "TwoFactorAuth")
 101191                        .WithMany("EmailCodes")
 101192                        .HasForeignKey("TwoFactorAuthId")
 101193                        .OnDelete(DeleteBehavior.Cascade)
 101194                        .IsRequired()
 101195                        .HasConstraintName("fk_two_factor_email_code_two_factor_auth_two_factor_auth_id");
 101196
 101197                    b.Navigation("TwoFactorAuth");
 201198                });
 1199
 101200            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.TwoFactorRecoveryCode", b =>
 101201                {
 101202                    b.HasOne("ArturRios.Heimdall.Domain.Entities.TwoFactorAuth", "TwoFactorAuth")
 101203                        .WithMany("RecoveryCodes")
 101204                        .HasForeignKey("TwoFactorAuthId")
 101205                        .OnDelete(DeleteBehavior.Cascade)
 101206                        .IsRequired()
 101207                        .HasConstraintName("fk_two_factor_recovery_code_two_factor_auth_two_factor_auth_id");
 101208
 101209                    b.Navigation("TwoFactorAuth");
 201210                });
 1211
 101212            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Person", b =>
 101213                {
 101214                    b.Navigation("EmailVerificationTokens");
 101215
 101216                    b.Navigation("OwnedApplications");
 101217
 101218                    b.Navigation("PasswordResetTokens");
 101219
 101220                    b.Navigation("ScopeMembership");
 101221
 101222                    b.Navigation("ScopeOwnerships");
 101223
 101224                    b.Navigation("TwoFactorAuth");
 201225                });
 1226
 101227            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Role", b =>
 101228                {
 101229                    b.Navigation("Persons");
 201230                });
 1231
 101232            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Scope", b =>
 101233                {
 101234                    b.Navigation("Applications");
 101235
 101236                    b.Navigation("GoogleUsers");
 101237
 101238                    b.Navigation("Owners");
 101239
 101240                    b.Navigation("ScopePermissions");
 101241
 101242                    b.Navigation("Users");
 201243                });
 1244
 101245            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.TwoFactorAuth", b =>
 101246                {
 101247                    b.Navigation("EmailCodes");
 101248
 101249                    b.Navigation("RecoveryCodes");
 201250                });
 1251#pragma warning restore 612, 618
 101252        }
 1253    }
 1254}