< Summary - Heimdall API

Line coverage
100%
Covered lines: 918
Uncovered lines: 0
Coverable lines: 918
Total lines: 993
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/20260811203209_AddAuditLog.cs

#LineLine coverage
 1using System;
 2using Microsoft.EntityFrameworkCore.Migrations;
 3using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
 4
 5#nullable disable
 6
 7namespace ArturRios.Heimdall.Data.Migrations
 8{
 9    /// <inheritdoc />
 10    public partial class AddAuditLog : Migration
 11    {
 12        /// <inheritdoc />
 13        protected override void Up(MigrationBuilder migrationBuilder)
 14        {
 1915            migrationBuilder.CreateTable(
 1916                name: "audit_log",
 1917                schema: "heimdall",
 1918                columns: table => new
 1919                {
 1920                    id = table.Column<long>(type: "bigint", nullable: false)
 1921                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultCol
 1922                    public_id = table.Column<Guid>(type: "uuid", nullable: false),
 1923                    actor_person_id = table.Column<Guid>(type: "uuid", nullable: true),
 1924                    actor_role = table.Column<int>(type: "integer", nullable: true),
 1925                    action = table.Column<string>(type: "text", nullable: false),
 1926                    target_id = table.Column<Guid>(type: "uuid", nullable: true),
 1927                    created_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: false, defaultValueS
 1928                },
 1929                constraints: table =>
 1930                {
 1931                    table.PrimaryKey("pk_audit_log", x => x.id);
 3832                });
 33
 1934            migrationBuilder.CreateIndex(
 1935                name: "ix_audit_log_public_id",
 1936                schema: "heimdall",
 1937                table: "audit_log",
 1938                column: "public_id",
 1939                unique: true);
 1940        }
 41
 42        /// <inheritdoc />
 43        protected override void Down(MigrationBuilder migrationBuilder)
 44        {
 145            migrationBuilder.DropTable(
 146                name: "audit_log",
 147                schema: "heimdall");
 148        }
 49    }
 50}

/home/ci/agent/workspace/heimdall-api-docs_main/app/src/Infrastructure/ArturRios.Heimdall.Data/Migrations/20260811203209_AddAuditLog.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("20260811203209_AddAuditLog")]
 16    partial class AddAuditLog
 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.10")
 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                        .HasColumnType("text")
 10104                        .HasColumnName("action");
 10105
 10106                    b.Property<Guid?>("ActorPersonId")
 10107                        .HasColumnType("uuid")
 10108                        .HasColumnName("actor_person_id");
 10109
 10110                    b.Property<int?>("ActorRole")
 10111                        .HasColumnType("integer")
 10112                        .HasColumnName("actor_role");
 10113
 10114                    b.Property<DateTime>("CreatedAt")
 10115                        .ValueGeneratedOnAdd()
 10116                        .HasColumnType("timestamp with time zone")
 10117                        .HasColumnName("created_at")
 10118                        .HasDefaultValueSql("now()");
 10119
 10120                    b.Property<Guid>("PublicId")
 10121                        .HasColumnType("uuid")
 10122                        .HasColumnName("public_id");
 10123
 10124                    b.Property<Guid?>("TargetId")
 10125                        .HasColumnType("uuid")
 10126                        .HasColumnName("target_id");
 10127
 10128                    b.HasKey("Id")
 10129                        .HasName("pk_audit_log");
 10130
 10131                    b.HasIndex("PublicId")
 10132                        .IsUnique()
 10133                        .HasDatabaseName("ix_audit_log_public_id");
 10134
 10135                    b.ToTable("audit_log", "heimdall");
 20136                });
 137
 10138            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.EmailVerificationToken", b =>
 10139                {
 10140                    b.Property<long>("Id")
 10141                        .ValueGeneratedOnAdd()
 10142                        .HasColumnType("bigint")
 10143                        .HasColumnName("id")
 10144                        .HasColumnOrder(1);
 10145
 10146                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 10147
 10148                    b.Property<DateTime>("ExpiresAt")
 10149                        .HasColumnType("timestamp with time zone")
 10150                        .HasColumnName("expires_at");
 10151
 10152                    b.Property<long>("PersonId")
 10153                        .HasColumnType("bigint")
 10154                        .HasColumnName("person_id");
 10155
 10156                    b.Property<string>("Token")
 10157                        .IsRequired()
 10158                        .HasMaxLength(256)
 10159                        .HasColumnType("character varying(256)")
 10160                        .HasColumnName("token");
 10161
 10162                    b.Property<bool>("Used")
 10163                        .ValueGeneratedOnAdd()
 10164                        .HasColumnType("boolean")
 10165                        .HasDefaultValue(false)
 10166                        .HasColumnName("used");
 10167
 10168                    b.HasKey("Id")
 10169                        .HasName("pk_email_verification_token");
 10170
 10171                    b.HasIndex("PersonId")
 10172                        .HasDatabaseName("ix_email_verification_token_person_id");
 10173
 10174                    b.HasIndex("Token")
 10175                        .IsUnique()
 10176                        .HasDatabaseName("ix_email_verification_token_token");
 10177
 10178                    b.ToTable("email_verification_token", "heimdall");
 20179                });
 180
 10181            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.GoogleUser", b =>
 10182                {
 10183                    b.Property<long>("Id")
 10184                        .ValueGeneratedOnAdd()
 10185                        .HasColumnType("bigint")
 10186                        .HasColumnName("id")
 10187                        .HasColumnOrder(1);
 10188
 10189                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 10190
 10191                    b.Property<DateTime>("CreatedAt")
 10192                        .ValueGeneratedOnAdd()
 10193                        .HasColumnType("timestamp with time zone")
 10194                        .HasColumnName("created_at")
 10195                        .HasDefaultValueSql("now()");
 10196
 10197                    b.Property<string>("Email")
 10198                        .IsRequired()
 10199                        .HasMaxLength(256)
 10200                        .HasColumnType("character varying(256)")
 10201                        .HasColumnName("email");
 10202
 10203                    b.Property<bool>("EmailVerified")
 10204                        .ValueGeneratedOnAdd()
 10205                        .HasColumnType("boolean")
 10206                        .HasDefaultValue(false)
 10207                        .HasColumnName("email_verified");
 10208
 10209                    b.Property<string>("GoogleId")
 10210                        .IsRequired()
 10211                        .HasMaxLength(255)
 10212                        .HasColumnType("character varying(255)")
 10213                        .HasColumnName("google_id");
 10214
 10215                    b.Property<bool>("IsDeleted")
 10216                        .ValueGeneratedOnAdd()
 10217                        .HasColumnType("boolean")
 10218                        .HasDefaultValue(false)
 10219                        .HasColumnName("is_deleted");
 10220
 10221                    b.Property<string>("Name")
 10222                        .IsRequired()
 10223                        .HasMaxLength(200)
 10224                        .HasColumnType("character varying(200)")
 10225                        .HasColumnName("name");
 10226
 10227                    b.Property<string>("ProfilePictureUrl")
 10228                        .HasMaxLength(2048)
 10229                        .HasColumnType("character varying(2048)")
 10230                        .HasColumnName("profile_picture_url");
 10231
 10232                    b.Property<Guid>("PublicId")
 10233                        .HasColumnType("uuid")
 10234                        .HasColumnName("public_id");
 10235
 10236                    b.Property<long>("ScopeId")
 10237                        .HasColumnType("bigint")
 10238                        .HasColumnName("scope_id");
 10239
 10240                    b.Property<DateTime>("UpdatedAt")
 10241                        .ValueGeneratedOnAdd()
 10242                        .HasColumnType("timestamp with time zone")
 10243                        .HasColumnName("updated_at")
 10244                        .HasDefaultValueSql("now()");
 10245
 10246                    b.HasKey("Id")
 10247                        .HasName("pk_google_user");
 10248
 10249                    b.HasIndex("PublicId")
 10250                        .IsUnique()
 10251                        .HasDatabaseName("ix_google_user_public_id");
 10252
 10253                    b.HasIndex("ScopeId", "Email")
 10254                        .IsUnique()
 10255                        .HasDatabaseName("ix_google_user_scope_id_email");
 10256
 10257                    b.HasIndex("ScopeId", "GoogleId")
 10258                        .IsUnique()
 10259                        .HasDatabaseName("ix_google_user_scope_id_google_id");
 10260
 10261                    b.ToTable("google_user", "heimdall");
 20262                });
 263
 10264            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.PasswordResetToken", b =>
 10265                {
 10266                    b.Property<long>("Id")
 10267                        .ValueGeneratedOnAdd()
 10268                        .HasColumnType("bigint")
 10269                        .HasColumnName("id")
 10270                        .HasColumnOrder(1);
 10271
 10272                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 10273
 10274                    b.Property<DateTime>("ExpiresAt")
 10275                        .HasColumnType("timestamp with time zone")
 10276                        .HasColumnName("expires_at");
 10277
 10278                    b.Property<long>("PersonId")
 10279                        .HasColumnType("bigint")
 10280                        .HasColumnName("person_id");
 10281
 10282                    b.Property<string>("Token")
 10283                        .IsRequired()
 10284                        .HasMaxLength(256)
 10285                        .HasColumnType("character varying(256)")
 10286                        .HasColumnName("token");
 10287
 10288                    b.Property<bool>("Used")
 10289                        .ValueGeneratedOnAdd()
 10290                        .HasColumnType("boolean")
 10291                        .HasDefaultValue(false)
 10292                        .HasColumnName("used");
 10293
 10294                    b.HasKey("Id")
 10295                        .HasName("pk_password_reset_token");
 10296
 10297                    b.HasIndex("PersonId")
 10298                        .HasDatabaseName("ix_password_reset_token_person_id");
 10299
 10300                    b.HasIndex("Token")
 10301                        .IsUnique()
 10302                        .HasDatabaseName("ix_password_reset_token_token");
 10303
 10304                    b.ToTable("password_reset_token", "heimdall");
 20305                });
 306
 10307            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Person", b =>
 10308                {
 10309                    b.Property<long>("Id")
 10310                        .ValueGeneratedOnAdd()
 10311                        .HasColumnType("bigint")
 10312                        .HasColumnName("id")
 10313                        .HasColumnOrder(1);
 10314
 10315                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 10316
 10317                    b.Property<DateTime>("CreatedAt")
 10318                        .ValueGeneratedOnAdd()
 10319                        .HasColumnType("timestamp with time zone")
 10320                        .HasColumnName("created_at")
 10321                        .HasDefaultValueSql("now()");
 10322
 10323                    b.Property<string>("Email")
 10324                        .IsRequired()
 10325                        .HasMaxLength(256)
 10326                        .HasColumnType("character varying(256)")
 10327                        .HasColumnName("email");
 10328
 10329                    b.Property<bool>("EmailVerified")
 10330                        .ValueGeneratedOnAdd()
 10331                        .HasColumnType("boolean")
 10332                        .HasDefaultValue(false)
 10333                        .HasColumnName("email_verified");
 10334
 10335                    b.Property<bool>("IsDeleted")
 10336                        .ValueGeneratedOnAdd()
 10337                        .HasColumnType("boolean")
 10338                        .HasDefaultValue(false)
 10339                        .HasColumnName("is_deleted");
 10340
 10341                    b.Property<string>("Name")
 10342                        .IsRequired()
 10343                        .HasMaxLength(200)
 10344                        .HasColumnType("character varying(200)")
 10345                        .HasColumnName("name");
 10346
 10347                    b.Property<byte[]>("PasswordHash")
 10348                        .IsRequired()
 10349                        .HasColumnType("bytea")
 10350                        .HasColumnName("password_hash");
 10351
 10352                    b.Property<Guid>("PublicId")
 10353                        .HasColumnType("uuid")
 10354                        .HasColumnName("public_id");
 10355
 10356                    b.Property<long>("RoleId")
 10357                        .HasColumnType("bigint")
 10358                        .HasColumnName("role_id");
 10359
 10360                    b.Property<byte[]>("Salt")
 10361                        .IsRequired()
 10362                        .HasColumnType("bytea")
 10363                        .HasColumnName("salt");
 10364
 10365                    b.Property<DateTime>("UpdatedAt")
 10366                        .ValueGeneratedOnAdd()
 10367                        .HasColumnType("timestamp with time zone")
 10368                        .HasColumnName("updated_at")
 10369                        .HasDefaultValueSql("now()");
 10370
 10371                    b.HasKey("Id")
 10372                        .HasName("pk_person");
 10373
 10374                    b.HasIndex("Email")
 10375                        .HasDatabaseName("ix_person_email");
 10376
 10377                    b.HasIndex("PublicId")
 10378                        .IsUnique()
 10379                        .HasDatabaseName("ix_person_public_id");
 10380
 10381                    b.HasIndex("RoleId")
 10382                        .HasDatabaseName("ix_person_role_id");
 10383
 10384                    b.ToTable("person", "heimdall");
 20385                });
 386
 10387            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Role", b =>
 10388                {
 10389                    b.Property<long>("Id")
 10390                        .HasColumnType("bigint")
 10391                        .HasColumnName("id")
 10392                        .HasColumnOrder(1);
 10393
 10394                    b.Property<string>("Description")
 10395                        .HasMaxLength(500)
 10396                        .HasColumnType("character varying(500)")
 10397                        .HasColumnName("description");
 10398
 10399                    b.Property<string>("Name")
 10400                        .IsRequired()
 10401                        .HasMaxLength(200)
 10402                        .HasColumnType("character varying(200)")
 10403                        .HasColumnName("name");
 10404
 10405                    b.Property<Guid>("PublicId")
 10406                        .HasColumnType("uuid")
 10407                        .HasColumnName("public_id");
 10408
 10409                    b.HasKey("Id")
 10410                        .HasName("pk_role");
 10411
 10412                    b.HasIndex("Name")
 10413                        .IsUnique()
 10414                        .HasDatabaseName("ix_role_name");
 10415
 10416                    b.HasIndex("PublicId")
 10417                        .IsUnique()
 10418                        .HasDatabaseName("ix_role_public_id");
 10419
 10420                    b.ToTable("role", "heimdall");
 20421                });
 422
 10423            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Scope", b =>
 10424                {
 10425                    b.Property<long>("Id")
 10426                        .ValueGeneratedOnAdd()
 10427                        .HasColumnType("bigint")
 10428                        .HasColumnName("id")
 10429                        .HasColumnOrder(1);
 10430
 10431                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 10432
 10433                    b.Property<DateTime>("CreatedAt")
 10434                        .ValueGeneratedOnAdd()
 10435                        .HasColumnType("timestamp with time zone")
 10436                        .HasColumnName("created_at")
 10437                        .HasDefaultValueSql("now()");
 10438
 10439                    b.Property<string>("Description")
 10440                        .HasMaxLength(500)
 10441                        .HasColumnType("character varying(500)")
 10442                        .HasColumnName("description");
 10443
 10444                    b.Property<bool>("GoogleSignInEnabled")
 10445                        .ValueGeneratedOnAdd()
 10446                        .HasColumnType("boolean")
 10447                        .HasDefaultValue(false)
 10448                        .HasColumnName("google_sign_in_enabled");
 10449
 10450                    b.Property<bool>("IsDeleted")
 10451                        .ValueGeneratedOnAdd()
 10452                        .HasColumnType("boolean")
 10453                        .HasDefaultValue(false)
 10454                        .HasColumnName("is_deleted");
 10455
 10456                    b.Property<string>("Name")
 10457                        .IsRequired()
 10458                        .HasMaxLength(200)
 10459                        .HasColumnType("character varying(200)")
 10460                        .HasColumnName("name");
 10461
 10462                    b.Property<Guid>("PublicId")
 10463                        .HasColumnType("uuid")
 10464                        .HasColumnName("public_id");
 10465
 10466                    b.Property<DateTime>("UpdatedAt")
 10467                        .ValueGeneratedOnAdd()
 10468                        .HasColumnType("timestamp with time zone")
 10469                        .HasColumnName("updated_at")
 10470                        .HasDefaultValueSql("now()");
 10471
 10472                    b.HasKey("Id")
 10473                        .HasName("pk_scope");
 10474
 10475                    b.HasIndex("Name")
 10476                        .IsUnique()
 10477                        .HasDatabaseName("ix_scope_name");
 10478
 10479                    b.HasIndex("PublicId")
 10480                        .IsUnique()
 10481                        .HasDatabaseName("ix_scope_public_id");
 10482
 10483                    b.ToTable("scope", "heimdall");
 20484                });
 485
 10486            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.ScopeOwner", b =>
 10487                {
 10488                    b.Property<long>("ScopeId")
 10489                        .HasColumnType("bigint")
 10490                        .HasColumnName("scope_id");
 10491
 10492                    b.Property<long>("PersonId")
 10493                        .HasColumnType("bigint")
 10494                        .HasColumnName("person_id");
 10495
 10496                    b.HasKey("ScopeId", "PersonId")
 10497                        .HasName("pk_scope_owner");
 10498
 10499                    b.HasIndex("PersonId")
 10500                        .HasDatabaseName("ix_scope_owner_person_id");
 10501
 10502                    b.ToTable("scope_owner", "heimdall");
 20503                });
 504
 10505            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.ScopePermission", b =>
 10506                {
 10507                    b.Property<long>("Id")
 10508                        .ValueGeneratedOnAdd()
 10509                        .HasColumnType("bigint")
 10510                        .HasColumnName("id")
 10511                        .HasColumnOrder(1);
 10512
 10513                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 10514
 10515                    b.Property<DateTime>("CreatedAt")
 10516                        .ValueGeneratedOnAdd()
 10517                        .HasColumnType("timestamp with time zone")
 10518                        .HasColumnName("created_at")
 10519                        .HasDefaultValueSql("now()");
 10520
 10521                    b.Property<string>("Description")
 10522                        .HasMaxLength(500)
 10523                        .HasColumnType("character varying(500)")
 10524                        .HasColumnName("description");
 10525
 10526                    b.Property<bool>("IncludeAsJwtClaim")
 10527                        .ValueGeneratedOnAdd()
 10528                        .HasColumnType("boolean")
 10529                        .HasDefaultValue(false)
 10530                        .HasColumnName("include_as_jwt_claim");
 10531
 10532                    b.Property<bool>("IsDeleted")
 10533                        .ValueGeneratedOnAdd()
 10534                        .HasColumnType("boolean")
 10535                        .HasDefaultValue(false)
 10536                        .HasColumnName("is_deleted");
 10537
 10538                    b.Property<string>("Name")
 10539                        .IsRequired()
 10540                        .HasMaxLength(200)
 10541                        .HasColumnType("character varying(200)")
 10542                        .HasColumnName("name");
 10543
 10544                    b.Property<Guid>("PublicId")
 10545                        .HasColumnType("uuid")
 10546                        .HasColumnName("public_id");
 10547
 10548                    b.Property<long>("ScopeId")
 10549                        .HasColumnType("bigint")
 10550                        .HasColumnName("scope_id");
 10551
 10552                    b.Property<DateTime>("UpdatedAt")
 10553                        .ValueGeneratedOnAdd()
 10554                        .HasColumnType("timestamp with time zone")
 10555                        .HasColumnName("updated_at")
 10556                        .HasDefaultValueSql("now()");
 10557
 10558                    b.HasKey("Id")
 10559                        .HasName("pk_scope_permission");
 10560
 10561                    b.HasIndex("PublicId")
 10562                        .IsUnique()
 10563                        .HasDatabaseName("ix_scope_permission_public_id");
 10564
 10565                    b.HasIndex("ScopeId")
 10566                        .HasDatabaseName("ix_scope_permission_scope_id");
 10567
 10568                    b.ToTable("scope_permission", "heimdall");
 20569                });
 570
 10571            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.ScopeUser", b =>
 10572                {
 10573                    b.Property<long>("ScopeId")
 10574                        .HasColumnType("bigint")
 10575                        .HasColumnName("scope_id");
 10576
 10577                    b.Property<long>("PersonId")
 10578                        .HasColumnType("bigint")
 10579                        .HasColumnName("person_id");
 10580
 10581                    b.HasKey("ScopeId", "PersonId")
 10582                        .HasName("pk_scope_user");
 10583
 10584                    b.HasIndex("PersonId")
 10585                        .IsUnique()
 10586                        .HasDatabaseName("ix_scope_user_person_id");
 10587
 10588                    b.ToTable("scope_user", "heimdall");
 20589                });
 590
 10591            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.TwoFactorAuth", b =>
 10592                {
 10593                    b.Property<long>("Id")
 10594                        .ValueGeneratedOnAdd()
 10595                        .HasColumnType("bigint")
 10596                        .HasColumnName("id")
 10597                        .HasColumnOrder(1);
 10598
 10599                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 10600
 10601                    b.Property<bool>("AppEnabled")
 10602                        .ValueGeneratedOnAdd()
 10603                        .HasColumnType("boolean")
 10604                        .HasDefaultValue(false)
 10605                        .HasColumnName("app_enabled");
 10606
 10607                    b.Property<DateTime>("CreatedAt")
 10608                        .ValueGeneratedOnAdd()
 10609                        .HasColumnType("timestamp with time zone")
 10610                        .HasColumnName("created_at")
 10611                        .HasDefaultValueSql("now()");
 10612
 10613                    b.Property<bool>("EmailEnabled")
 10614                        .ValueGeneratedOnAdd()
 10615                        .HasColumnType("boolean")
 10616                        .HasDefaultValue(false)
 10617                        .HasColumnName("email_enabled");
 10618
 10619                    b.Property<bool>("IsActive")
 10620                        .ValueGeneratedOnAdd()
 10621                        .HasColumnType("boolean")
 10622                        .HasDefaultValue(false)
 10623                        .HasColumnName("is_active");
 10624
 10625                    b.Property<long>("PersonId")
 10626                        .HasColumnType("bigint")
 10627                        .HasColumnName("person_id");
 10628
 10629                    b.Property<byte[]>("TotpSecretEncrypted")
 10630                        .HasColumnType("bytea")
 10631                        .HasColumnName("totp_secret_encrypted");
 10632
 10633                    b.Property<DateTime>("UpdatedAt")
 10634                        .ValueGeneratedOnAdd()
 10635                        .HasColumnType("timestamp with time zone")
 10636                        .HasColumnName("updated_at")
 10637                        .HasDefaultValueSql("now()");
 10638
 10639                    b.HasKey("Id")
 10640                        .HasName("pk_two_factor_auth");
 10641
 10642                    b.HasIndex("PersonId")
 10643                        .IsUnique()
 10644                        .HasDatabaseName("ix_two_factor_auth_person_id");
 10645
 10646                    b.ToTable("two_factor_auth", "heimdall");
 20647                });
 648
 10649            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.TwoFactorEmailCode", b =>
 10650                {
 10651                    b.Property<long>("Id")
 10652                        .ValueGeneratedOnAdd()
 10653                        .HasColumnType("bigint")
 10654                        .HasColumnName("id")
 10655                        .HasColumnOrder(1);
 10656
 10657                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 10658
 10659                    b.Property<byte[]>("CodeHash")
 10660                        .IsRequired()
 10661                        .HasColumnType("bytea")
 10662                        .HasColumnName("code_hash");
 10663
 10664                    b.Property<DateTime>("CreatedAt")
 10665                        .ValueGeneratedOnAdd()
 10666                        .HasColumnType("timestamp with time zone")
 10667                        .HasColumnName("created_at")
 10668                        .HasDefaultValueSql("now()");
 10669
 10670                    b.Property<DateTime>("ExpiresAt")
 10671                        .HasColumnType("timestamp with time zone")
 10672                        .HasColumnName("expires_at");
 10673
 10674                    b.Property<byte[]>("Salt")
 10675                        .IsRequired()
 10676                        .HasColumnType("bytea")
 10677                        .HasColumnName("salt");
 10678
 10679                    b.Property<long>("TwoFactorAuthId")
 10680                        .HasColumnType("bigint")
 10681                        .HasColumnName("two_factor_auth_id");
 10682
 10683                    b.Property<bool>("Used")
 10684                        .ValueGeneratedOnAdd()
 10685                        .HasColumnType("boolean")
 10686                        .HasDefaultValue(false)
 10687                        .HasColumnName("used");
 10688
 10689                    b.HasKey("Id")
 10690                        .HasName("pk_two_factor_email_code");
 10691
 10692                    b.HasIndex("TwoFactorAuthId")
 10693                        .HasDatabaseName("ix_two_factor_email_code_two_factor_auth_id");
 10694
 10695                    b.ToTable("two_factor_email_code", "heimdall");
 20696                });
 697
 10698            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.TwoFactorRecoveryCode", b =>
 10699                {
 10700                    b.Property<long>("Id")
 10701                        .ValueGeneratedOnAdd()
 10702                        .HasColumnType("bigint")
 10703                        .HasColumnName("id")
 10704                        .HasColumnOrder(1);
 10705
 10706                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 10707
 10708                    b.Property<byte[]>("CodeHash")
 10709                        .IsRequired()
 10710                        .HasColumnType("bytea")
 10711                        .HasColumnName("code_hash");
 10712
 10713                    b.Property<DateTime>("CreatedAt")
 10714                        .ValueGeneratedOnAdd()
 10715                        .HasColumnType("timestamp with time zone")
 10716                        .HasColumnName("created_at")
 10717                        .HasDefaultValueSql("now()");
 10718
 10719                    b.Property<long>("TwoFactorAuthId")
 10720                        .HasColumnType("bigint")
 10721                        .HasColumnName("two_factor_auth_id");
 10722
 10723                    b.Property<bool>("Used")
 10724                        .ValueGeneratedOnAdd()
 10725                        .HasColumnType("boolean")
 10726                        .HasDefaultValue(false)
 10727                        .HasColumnName("used");
 10728
 10729                    b.Property<DateTime?>("UsedAt")
 10730                        .HasColumnType("timestamp with time zone")
 10731                        .HasColumnName("used_at");
 10732
 10733                    b.HasKey("Id")
 10734                        .HasName("pk_two_factor_recovery_code");
 10735
 10736                    b.HasIndex("TwoFactorAuthId")
 10737                        .HasDatabaseName("ix_two_factor_recovery_code_two_factor_auth_id");
 10738
 10739                    b.ToTable("two_factor_recovery_code", "heimdall");
 20740                });
 741
 10742            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Application", b =>
 10743                {
 10744                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Person", "Owner")
 10745                        .WithMany("OwnedApplications")
 10746                        .HasForeignKey("OwnerId")
 10747                        .OnDelete(DeleteBehavior.Cascade)
 10748                        .IsRequired()
 10749                        .HasConstraintName("fk_application_person_owner_id");
 10750
 10751                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Scope", "Scope")
 10752                        .WithMany("Applications")
 10753                        .HasForeignKey("ScopeId")
 10754                        .OnDelete(DeleteBehavior.Cascade)
 10755                        .IsRequired()
 10756                        .HasConstraintName("fk_application_scope_scope_id");
 10757
 10758                    b.Navigation("Owner");
 10759
 10760                    b.Navigation("Scope");
 20761                });
 762
 10763            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.EmailVerificationToken", b =>
 10764                {
 10765                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Person", "Person")
 10766                        .WithMany("EmailVerificationTokens")
 10767                        .HasForeignKey("PersonId")
 10768                        .OnDelete(DeleteBehavior.Cascade)
 10769                        .IsRequired()
 10770                        .HasConstraintName("fk_email_verification_token_person_person_id");
 10771
 10772                    b.Navigation("Person");
 20773                });
 774
 10775            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.GoogleUser", b =>
 10776                {
 10777                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Scope", "Scope")
 10778                        .WithMany("GoogleUsers")
 10779                        .HasForeignKey("ScopeId")
 10780                        .OnDelete(DeleteBehavior.Cascade)
 10781                        .IsRequired()
 10782                        .HasConstraintName("fk_google_user_scope_scope_id");
 10783
 10784                    b.Navigation("Scope");
 20785                });
 786
 10787            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.PasswordResetToken", b =>
 10788                {
 10789                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Person", "Person")
 10790                        .WithMany("PasswordResetTokens")
 10791                        .HasForeignKey("PersonId")
 10792                        .OnDelete(DeleteBehavior.Cascade)
 10793                        .IsRequired()
 10794                        .HasConstraintName("fk_password_reset_token_person_person_id");
 10795
 10796                    b.Navigation("Person");
 20797                });
 798
 10799            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Person", b =>
 10800                {
 10801                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Role", "Role")
 10802                        .WithMany("Persons")
 10803                        .HasForeignKey("RoleId")
 10804                        .OnDelete(DeleteBehavior.Restrict)
 10805                        .IsRequired()
 10806                        .HasConstraintName("fk_person_roles_role_id");
 10807
 10808                    b.Navigation("Role");
 20809                });
 810
 10811            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.ScopeOwner", b =>
 10812                {
 10813                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Person", "Person")
 10814                        .WithMany("ScopeOwnerships")
 10815                        .HasForeignKey("PersonId")
 10816                        .OnDelete(DeleteBehavior.Cascade)
 10817                        .IsRequired()
 10818                        .HasConstraintName("fk_scope_owner_person_person_id");
 10819
 10820                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Scope", "Scope")
 10821                        .WithMany("Owners")
 10822                        .HasForeignKey("ScopeId")
 10823                        .OnDelete(DeleteBehavior.Cascade)
 10824                        .IsRequired()
 10825                        .HasConstraintName("fk_scope_owner_scope_scope_id");
 10826
 10827                    b.Navigation("Person");
 10828
 10829                    b.Navigation("Scope");
 20830                });
 831
 10832            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.ScopePermission", b =>
 10833                {
 10834                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Scope", "Scope")
 10835                        .WithMany("ScopePermissions")
 10836                        .HasForeignKey("ScopeId")
 10837                        .OnDelete(DeleteBehavior.Cascade)
 10838                        .IsRequired()
 10839                        .HasConstraintName("fk_scope_permission_scope_scope_id");
 10840
 10841                    b.Navigation("Scope");
 20842                });
 843
 10844            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.ScopeUser", b =>
 10845                {
 10846                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Person", "Person")
 10847                        .WithOne("ScopeMembership")
 10848                        .HasForeignKey("ArturRios.Heimdall.Domain.Entities.ScopeUser", "PersonId")
 10849                        .OnDelete(DeleteBehavior.Cascade)
 10850                        .IsRequired()
 10851                        .HasConstraintName("fk_scope_user_person_person_id");
 10852
 10853                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Scope", "Scope")
 10854                        .WithMany("Users")
 10855                        .HasForeignKey("ScopeId")
 10856                        .OnDelete(DeleteBehavior.Cascade)
 10857                        .IsRequired()
 10858                        .HasConstraintName("fk_scope_user_scope_scope_id");
 10859
 10860                    b.Navigation("Person");
 10861
 10862                    b.Navigation("Scope");
 20863                });
 864
 10865            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.TwoFactorAuth", b =>
 10866                {
 10867                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Person", "Person")
 10868                        .WithOne("TwoFactorAuth")
 10869                        .HasForeignKey("ArturRios.Heimdall.Domain.Entities.TwoFactorAuth", "PersonId")
 10870                        .OnDelete(DeleteBehavior.Cascade)
 10871                        .IsRequired()
 10872                        .HasConstraintName("fk_two_factor_auth_person_person_id");
 10873
 10874                    b.Navigation("Person");
 20875                });
 876
 10877            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.TwoFactorEmailCode", b =>
 10878                {
 10879                    b.HasOne("ArturRios.Heimdall.Domain.Entities.TwoFactorAuth", "TwoFactorAuth")
 10880                        .WithMany("EmailCodes")
 10881                        .HasForeignKey("TwoFactorAuthId")
 10882                        .OnDelete(DeleteBehavior.Cascade)
 10883                        .IsRequired()
 10884                        .HasConstraintName("fk_two_factor_email_code_two_factor_auth_two_factor_auth_id");
 10885
 10886                    b.Navigation("TwoFactorAuth");
 20887                });
 888
 10889            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.TwoFactorRecoveryCode", b =>
 10890                {
 10891                    b.HasOne("ArturRios.Heimdall.Domain.Entities.TwoFactorAuth", "TwoFactorAuth")
 10892                        .WithMany("RecoveryCodes")
 10893                        .HasForeignKey("TwoFactorAuthId")
 10894                        .OnDelete(DeleteBehavior.Cascade)
 10895                        .IsRequired()
 10896                        .HasConstraintName("fk_two_factor_recovery_code_two_factor_auth_two_factor_auth_id");
 10897
 10898                    b.Navigation("TwoFactorAuth");
 20899                });
 900
 10901            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Person", b =>
 10902                {
 10903                    b.Navigation("EmailVerificationTokens");
 10904
 10905                    b.Navigation("OwnedApplications");
 10906
 10907                    b.Navigation("PasswordResetTokens");
 10908
 10909                    b.Navigation("ScopeMembership");
 10910
 10911                    b.Navigation("ScopeOwnerships");
 10912
 10913                    b.Navigation("TwoFactorAuth");
 20914                });
 915
 10916            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Role", b =>
 10917                {
 10918                    b.Navigation("Persons");
 20919                });
 920
 10921            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Scope", b =>
 10922                {
 10923                    b.Navigation("Applications");
 10924
 10925                    b.Navigation("GoogleUsers");
 10926
 10927                    b.Navigation("Owners");
 10928
 10929                    b.Navigation("ScopePermissions");
 10930
 10931                    b.Navigation("Users");
 20932                });
 933
 10934            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.TwoFactorAuth", b =>
 10935                {
 10936                    b.Navigation("EmailCodes");
 10937
 10938                    b.Navigation("RecoveryCodes");
 20939                });
 940#pragma warning restore 612, 618
 10941        }
 942    }
 943}