< Summary - Heimdall API

Line coverage
98%
Covered lines: 916
Uncovered lines: 18
Coverable lines: 934
Total lines: 1010
Line coverage: 98%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage
66%
Covered methods: 2
Fully covered methods: 2
Total methods: 3
Method coverage: 66.6%
Full method coverage: 66.6%

Metrics

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

File(s)

/home/runner/work/heimdall-api/heimdall-api/src/Infrastructure/ArturRios.Heimdall.Data/Migrations/20260811212907_RefineAuditLog.cs

#LineLine coverage
 1using Microsoft.EntityFrameworkCore.Migrations;
 2
 3#nullable disable
 4
 5namespace ArturRios.Heimdall.Data.Migrations
 6{
 7    /// <inheritdoc />
 8    public partial class RefineAuditLog : Migration
 9    {
 10        /// <inheritdoc />
 11        protected override void Up(MigrationBuilder migrationBuilder)
 12        {
 413            migrationBuilder.AlterColumn<string>(
 414                name: "action",
 415                schema: "heimdall",
 416                table: "audit_log",
 417                type: "character varying(200)",
 418                maxLength: 200,
 419                nullable: false,
 420                oldClrType: typeof(string),
 421                oldType: "text");
 22
 423            migrationBuilder.CreateIndex(
 424                name: "ix_audit_log_actor_person_id",
 425                schema: "heimdall",
 426                table: "audit_log",
 427                column: "actor_person_id");
 28
 429            migrationBuilder.CreateIndex(
 430                name: "ix_audit_log_created_at",
 431                schema: "heimdall",
 432                table: "audit_log",
 433                column: "created_at");
 434        }
 35
 36        /// <inheritdoc />
 37        protected override void Down(MigrationBuilder migrationBuilder)
 38        {
 039            migrationBuilder.DropIndex(
 040                name: "ix_audit_log_actor_person_id",
 041                schema: "heimdall",
 042                table: "audit_log");
 43
 044            migrationBuilder.DropIndex(
 045                name: "ix_audit_log_created_at",
 046                schema: "heimdall",
 047                table: "audit_log");
 48
 049            migrationBuilder.AlterColumn<string>(
 050                name: "action",
 051                schema: "heimdall",
 052                table: "audit_log",
 053                type: "text",
 054                nullable: false,
 055                oldClrType: typeof(string),
 056                oldType: "character varying(200)",
 057                oldMaxLength: 200);
 058        }
 59    }
 60}

/home/runner/work/heimdall-api/heimdall-api/src/Infrastructure/ArturRios.Heimdall.Data/Migrations/20260811212907_RefineAuditLog.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("20260811212907_RefineAuditLog")]
 16    partial class RefineAuditLog
 17    {
 18        /// <inheritdoc />
 19        protected override void BuildTargetModel(ModelBuilder modelBuilder)
 20        {
 21#pragma warning disable 612, 618
 222            modelBuilder
 223                .HasDefaultSchema("heimdall")
 224                .HasAnnotation("ProductVersion", "10.0.10")
 225                .HasAnnotation("Relational:MaxIdentifierLength", 63);
 26
 227            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
 28
 229            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Application", b =>
 230                {
 231                    b.Property<long>("Id")
 232                        .ValueGeneratedOnAdd()
 233                        .HasColumnType("bigint")
 234                        .HasColumnName("id")
 235                        .HasColumnOrder(1);
 236
 237                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 238
 239                    b.Property<DateTime>("CreatedAt")
 240                        .ValueGeneratedOnAdd()
 241                        .HasColumnType("timestamp with time zone")
 242                        .HasColumnName("created_at")
 243                        .HasDefaultValueSql("now()");
 244
 245                    b.Property<bool>("IsDeleted")
 246                        .ValueGeneratedOnAdd()
 247                        .HasColumnType("boolean")
 248                        .HasDefaultValue(false)
 249                        .HasColumnName("is_deleted");
 250
 251                    b.Property<string>("Name")
 252                        .IsRequired()
 253                        .HasMaxLength(200)
 254                        .HasColumnType("character varying(200)")
 255                        .HasColumnName("name");
 256
 257                    b.Property<long>("OwnerId")
 258                        .HasColumnType("bigint")
 259                        .HasColumnName("owner_id");
 260
 261                    b.Property<Guid>("PublicId")
 262                        .HasColumnType("uuid")
 263                        .HasColumnName("public_id");
 264
 265                    b.Property<long>("ScopeId")
 266                        .HasColumnType("bigint")
 267                        .HasColumnName("scope_id");
 268
 269                    b.Property<DateTime>("UpdatedAt")
 270                        .ValueGeneratedOnAdd()
 271                        .HasColumnType("timestamp with time zone")
 272                        .HasColumnName("updated_at")
 273                        .HasDefaultValueSql("now()");
 274
 275                    b.HasKey("Id")
 276                        .HasName("pk_application");
 277
 278                    b.HasIndex("OwnerId")
 279                        .HasDatabaseName("ix_application_owner_id");
 280
 281                    b.HasIndex("PublicId")
 282                        .IsUnique()
 283                        .HasDatabaseName("ix_application_public_id");
 284
 285                    b.HasIndex("ScopeId")
 286                        .HasDatabaseName("ix_application_scope_id");
 287
 288                    b.ToTable("application", "heimdall");
 489                });
 90
 291            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.AuditLog", b =>
 292                {
 293                    b.Property<long>("Id")
 294                        .ValueGeneratedOnAdd()
 295                        .HasColumnType("bigint")
 296                        .HasColumnName("id")
 297                        .HasColumnOrder(1);
 298
 299                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 2100
 2101                    b.Property<string>("Action")
 2102                        .IsRequired()
 2103                        .HasMaxLength(200)
 2104                        .HasColumnType("character varying(200)")
 2105                        .HasColumnName("action");
 2106
 2107                    b.Property<Guid?>("ActorPersonId")
 2108                        .HasColumnType("uuid")
 2109                        .HasColumnName("actor_person_id");
 2110
 2111                    b.Property<int?>("ActorRole")
 2112                        .HasColumnType("integer")
 2113                        .HasColumnName("actor_role");
 2114
 2115                    b.Property<DateTime>("CreatedAt")
 2116                        .ValueGeneratedOnAdd()
 2117                        .HasColumnType("timestamp with time zone")
 2118                        .HasColumnName("created_at")
 2119                        .HasDefaultValueSql("now()");
 2120
 2121                    b.Property<Guid>("PublicId")
 2122                        .HasColumnType("uuid")
 2123                        .HasColumnName("public_id");
 2124
 2125                    b.Property<Guid?>("TargetId")
 2126                        .HasColumnType("uuid")
 2127                        .HasColumnName("target_id");
 2128
 2129                    b.HasKey("Id")
 2130                        .HasName("pk_audit_log");
 2131
 2132                    b.HasIndex("ActorPersonId")
 2133                        .HasDatabaseName("ix_audit_log_actor_person_id");
 2134
 2135                    b.HasIndex("CreatedAt")
 2136                        .HasDatabaseName("ix_audit_log_created_at");
 2137
 2138                    b.HasIndex("PublicId")
 2139                        .IsUnique()
 2140                        .HasDatabaseName("ix_audit_log_public_id");
 2141
 2142                    b.ToTable("audit_log", "heimdall");
 4143                });
 144
 2145            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.EmailVerificationToken", b =>
 2146                {
 2147                    b.Property<long>("Id")
 2148                        .ValueGeneratedOnAdd()
 2149                        .HasColumnType("bigint")
 2150                        .HasColumnName("id")
 2151                        .HasColumnOrder(1);
 2152
 2153                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 2154
 2155                    b.Property<DateTime>("ExpiresAt")
 2156                        .HasColumnType("timestamp with time zone")
 2157                        .HasColumnName("expires_at");
 2158
 2159                    b.Property<long>("PersonId")
 2160                        .HasColumnType("bigint")
 2161                        .HasColumnName("person_id");
 2162
 2163                    b.Property<string>("Token")
 2164                        .IsRequired()
 2165                        .HasMaxLength(256)
 2166                        .HasColumnType("character varying(256)")
 2167                        .HasColumnName("token");
 2168
 2169                    b.Property<bool>("Used")
 2170                        .ValueGeneratedOnAdd()
 2171                        .HasColumnType("boolean")
 2172                        .HasDefaultValue(false)
 2173                        .HasColumnName("used");
 2174
 2175                    b.HasKey("Id")
 2176                        .HasName("pk_email_verification_token");
 2177
 2178                    b.HasIndex("PersonId")
 2179                        .HasDatabaseName("ix_email_verification_token_person_id");
 2180
 2181                    b.HasIndex("Token")
 2182                        .IsUnique()
 2183                        .HasDatabaseName("ix_email_verification_token_token");
 2184
 2185                    b.ToTable("email_verification_token", "heimdall");
 4186                });
 187
 2188            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.GoogleUser", b =>
 2189                {
 2190                    b.Property<long>("Id")
 2191                        .ValueGeneratedOnAdd()
 2192                        .HasColumnType("bigint")
 2193                        .HasColumnName("id")
 2194                        .HasColumnOrder(1);
 2195
 2196                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 2197
 2198                    b.Property<DateTime>("CreatedAt")
 2199                        .ValueGeneratedOnAdd()
 2200                        .HasColumnType("timestamp with time zone")
 2201                        .HasColumnName("created_at")
 2202                        .HasDefaultValueSql("now()");
 2203
 2204                    b.Property<string>("Email")
 2205                        .IsRequired()
 2206                        .HasMaxLength(256)
 2207                        .HasColumnType("character varying(256)")
 2208                        .HasColumnName("email");
 2209
 2210                    b.Property<bool>("EmailVerified")
 2211                        .ValueGeneratedOnAdd()
 2212                        .HasColumnType("boolean")
 2213                        .HasDefaultValue(false)
 2214                        .HasColumnName("email_verified");
 2215
 2216                    b.Property<string>("GoogleId")
 2217                        .IsRequired()
 2218                        .HasMaxLength(255)
 2219                        .HasColumnType("character varying(255)")
 2220                        .HasColumnName("google_id");
 2221
 2222                    b.Property<bool>("IsDeleted")
 2223                        .ValueGeneratedOnAdd()
 2224                        .HasColumnType("boolean")
 2225                        .HasDefaultValue(false)
 2226                        .HasColumnName("is_deleted");
 2227
 2228                    b.Property<string>("Name")
 2229                        .IsRequired()
 2230                        .HasMaxLength(200)
 2231                        .HasColumnType("character varying(200)")
 2232                        .HasColumnName("name");
 2233
 2234                    b.Property<string>("ProfilePictureUrl")
 2235                        .HasMaxLength(2048)
 2236                        .HasColumnType("character varying(2048)")
 2237                        .HasColumnName("profile_picture_url");
 2238
 2239                    b.Property<Guid>("PublicId")
 2240                        .HasColumnType("uuid")
 2241                        .HasColumnName("public_id");
 2242
 2243                    b.Property<long>("ScopeId")
 2244                        .HasColumnType("bigint")
 2245                        .HasColumnName("scope_id");
 2246
 2247                    b.Property<DateTime>("UpdatedAt")
 2248                        .ValueGeneratedOnAdd()
 2249                        .HasColumnType("timestamp with time zone")
 2250                        .HasColumnName("updated_at")
 2251                        .HasDefaultValueSql("now()");
 2252
 2253                    b.HasKey("Id")
 2254                        .HasName("pk_google_user");
 2255
 2256                    b.HasIndex("PublicId")
 2257                        .IsUnique()
 2258                        .HasDatabaseName("ix_google_user_public_id");
 2259
 2260                    b.HasIndex("ScopeId", "Email")
 2261                        .IsUnique()
 2262                        .HasDatabaseName("ix_google_user_scope_id_email");
 2263
 2264                    b.HasIndex("ScopeId", "GoogleId")
 2265                        .IsUnique()
 2266                        .HasDatabaseName("ix_google_user_scope_id_google_id");
 2267
 2268                    b.ToTable("google_user", "heimdall");
 4269                });
 270
 2271            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.PasswordResetToken", b =>
 2272                {
 2273                    b.Property<long>("Id")
 2274                        .ValueGeneratedOnAdd()
 2275                        .HasColumnType("bigint")
 2276                        .HasColumnName("id")
 2277                        .HasColumnOrder(1);
 2278
 2279                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 2280
 2281                    b.Property<DateTime>("ExpiresAt")
 2282                        .HasColumnType("timestamp with time zone")
 2283                        .HasColumnName("expires_at");
 2284
 2285                    b.Property<long>("PersonId")
 2286                        .HasColumnType("bigint")
 2287                        .HasColumnName("person_id");
 2288
 2289                    b.Property<string>("Token")
 2290                        .IsRequired()
 2291                        .HasMaxLength(256)
 2292                        .HasColumnType("character varying(256)")
 2293                        .HasColumnName("token");
 2294
 2295                    b.Property<bool>("Used")
 2296                        .ValueGeneratedOnAdd()
 2297                        .HasColumnType("boolean")
 2298                        .HasDefaultValue(false)
 2299                        .HasColumnName("used");
 2300
 2301                    b.HasKey("Id")
 2302                        .HasName("pk_password_reset_token");
 2303
 2304                    b.HasIndex("PersonId")
 2305                        .HasDatabaseName("ix_password_reset_token_person_id");
 2306
 2307                    b.HasIndex("Token")
 2308                        .IsUnique()
 2309                        .HasDatabaseName("ix_password_reset_token_token");
 2310
 2311                    b.ToTable("password_reset_token", "heimdall");
 4312                });
 313
 2314            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Person", b =>
 2315                {
 2316                    b.Property<long>("Id")
 2317                        .ValueGeneratedOnAdd()
 2318                        .HasColumnType("bigint")
 2319                        .HasColumnName("id")
 2320                        .HasColumnOrder(1);
 2321
 2322                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 2323
 2324                    b.Property<DateTime>("CreatedAt")
 2325                        .ValueGeneratedOnAdd()
 2326                        .HasColumnType("timestamp with time zone")
 2327                        .HasColumnName("created_at")
 2328                        .HasDefaultValueSql("now()");
 2329
 2330                    b.Property<string>("Email")
 2331                        .IsRequired()
 2332                        .HasMaxLength(256)
 2333                        .HasColumnType("character varying(256)")
 2334                        .HasColumnName("email");
 2335
 2336                    b.Property<bool>("EmailVerified")
 2337                        .ValueGeneratedOnAdd()
 2338                        .HasColumnType("boolean")
 2339                        .HasDefaultValue(false)
 2340                        .HasColumnName("email_verified");
 2341
 2342                    b.Property<bool>("IsDeleted")
 2343                        .ValueGeneratedOnAdd()
 2344                        .HasColumnType("boolean")
 2345                        .HasDefaultValue(false)
 2346                        .HasColumnName("is_deleted");
 2347
 2348                    b.Property<string>("Name")
 2349                        .IsRequired()
 2350                        .HasMaxLength(200)
 2351                        .HasColumnType("character varying(200)")
 2352                        .HasColumnName("name");
 2353
 2354                    b.Property<byte[]>("PasswordHash")
 2355                        .IsRequired()
 2356                        .HasColumnType("bytea")
 2357                        .HasColumnName("password_hash");
 2358
 2359                    b.Property<Guid>("PublicId")
 2360                        .HasColumnType("uuid")
 2361                        .HasColumnName("public_id");
 2362
 2363                    b.Property<long>("RoleId")
 2364                        .HasColumnType("bigint")
 2365                        .HasColumnName("role_id");
 2366
 2367                    b.Property<byte[]>("Salt")
 2368                        .IsRequired()
 2369                        .HasColumnType("bytea")
 2370                        .HasColumnName("salt");
 2371
 2372                    b.Property<DateTime>("UpdatedAt")
 2373                        .ValueGeneratedOnAdd()
 2374                        .HasColumnType("timestamp with time zone")
 2375                        .HasColumnName("updated_at")
 2376                        .HasDefaultValueSql("now()");
 2377
 2378                    b.HasKey("Id")
 2379                        .HasName("pk_person");
 2380
 2381                    b.HasIndex("Email")
 2382                        .HasDatabaseName("ix_person_email");
 2383
 2384                    b.HasIndex("PublicId")
 2385                        .IsUnique()
 2386                        .HasDatabaseName("ix_person_public_id");
 2387
 2388                    b.HasIndex("RoleId")
 2389                        .HasDatabaseName("ix_person_role_id");
 2390
 2391                    b.ToTable("person", "heimdall");
 4392                });
 393
 2394            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Role", b =>
 2395                {
 2396                    b.Property<long>("Id")
 2397                        .HasColumnType("bigint")
 2398                        .HasColumnName("id")
 2399                        .HasColumnOrder(1);
 2400
 2401                    b.Property<string>("Description")
 2402                        .HasMaxLength(500)
 2403                        .HasColumnType("character varying(500)")
 2404                        .HasColumnName("description");
 2405
 2406                    b.Property<string>("Name")
 2407                        .IsRequired()
 2408                        .HasMaxLength(200)
 2409                        .HasColumnType("character varying(200)")
 2410                        .HasColumnName("name");
 2411
 2412                    b.Property<Guid>("PublicId")
 2413                        .HasColumnType("uuid")
 2414                        .HasColumnName("public_id");
 2415
 2416                    b.HasKey("Id")
 2417                        .HasName("pk_role");
 2418
 2419                    b.HasIndex("Name")
 2420                        .IsUnique()
 2421                        .HasDatabaseName("ix_role_name");
 2422
 2423                    b.HasIndex("PublicId")
 2424                        .IsUnique()
 2425                        .HasDatabaseName("ix_role_public_id");
 2426
 2427                    b.ToTable("role", "heimdall");
 4428                });
 429
 2430            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Scope", b =>
 2431                {
 2432                    b.Property<long>("Id")
 2433                        .ValueGeneratedOnAdd()
 2434                        .HasColumnType("bigint")
 2435                        .HasColumnName("id")
 2436                        .HasColumnOrder(1);
 2437
 2438                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 2439
 2440                    b.Property<DateTime>("CreatedAt")
 2441                        .ValueGeneratedOnAdd()
 2442                        .HasColumnType("timestamp with time zone")
 2443                        .HasColumnName("created_at")
 2444                        .HasDefaultValueSql("now()");
 2445
 2446                    b.Property<string>("Description")
 2447                        .HasMaxLength(500)
 2448                        .HasColumnType("character varying(500)")
 2449                        .HasColumnName("description");
 2450
 2451                    b.Property<bool>("GoogleSignInEnabled")
 2452                        .ValueGeneratedOnAdd()
 2453                        .HasColumnType("boolean")
 2454                        .HasDefaultValue(false)
 2455                        .HasColumnName("google_sign_in_enabled");
 2456
 2457                    b.Property<bool>("IsDeleted")
 2458                        .ValueGeneratedOnAdd()
 2459                        .HasColumnType("boolean")
 2460                        .HasDefaultValue(false)
 2461                        .HasColumnName("is_deleted");
 2462
 2463                    b.Property<string>("Name")
 2464                        .IsRequired()
 2465                        .HasMaxLength(200)
 2466                        .HasColumnType("character varying(200)")
 2467                        .HasColumnName("name");
 2468
 2469                    b.Property<Guid>("PublicId")
 2470                        .HasColumnType("uuid")
 2471                        .HasColumnName("public_id");
 2472
 2473                    b.Property<DateTime>("UpdatedAt")
 2474                        .ValueGeneratedOnAdd()
 2475                        .HasColumnType("timestamp with time zone")
 2476                        .HasColumnName("updated_at")
 2477                        .HasDefaultValueSql("now()");
 2478
 2479                    b.HasKey("Id")
 2480                        .HasName("pk_scope");
 2481
 2482                    b.HasIndex("Name")
 2483                        .IsUnique()
 2484                        .HasDatabaseName("ix_scope_name");
 2485
 2486                    b.HasIndex("PublicId")
 2487                        .IsUnique()
 2488                        .HasDatabaseName("ix_scope_public_id");
 2489
 2490                    b.ToTable("scope", "heimdall");
 4491                });
 492
 2493            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.ScopeOwner", b =>
 2494                {
 2495                    b.Property<long>("ScopeId")
 2496                        .HasColumnType("bigint")
 2497                        .HasColumnName("scope_id");
 2498
 2499                    b.Property<long>("PersonId")
 2500                        .HasColumnType("bigint")
 2501                        .HasColumnName("person_id");
 2502
 2503                    b.HasKey("ScopeId", "PersonId")
 2504                        .HasName("pk_scope_owner");
 2505
 2506                    b.HasIndex("PersonId")
 2507                        .HasDatabaseName("ix_scope_owner_person_id");
 2508
 2509                    b.ToTable("scope_owner", "heimdall");
 4510                });
 511
 2512            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.ScopePermission", b =>
 2513                {
 2514                    b.Property<long>("Id")
 2515                        .ValueGeneratedOnAdd()
 2516                        .HasColumnType("bigint")
 2517                        .HasColumnName("id")
 2518                        .HasColumnOrder(1);
 2519
 2520                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 2521
 2522                    b.Property<DateTime>("CreatedAt")
 2523                        .ValueGeneratedOnAdd()
 2524                        .HasColumnType("timestamp with time zone")
 2525                        .HasColumnName("created_at")
 2526                        .HasDefaultValueSql("now()");
 2527
 2528                    b.Property<string>("Description")
 2529                        .HasMaxLength(500)
 2530                        .HasColumnType("character varying(500)")
 2531                        .HasColumnName("description");
 2532
 2533                    b.Property<bool>("IncludeAsJwtClaim")
 2534                        .ValueGeneratedOnAdd()
 2535                        .HasColumnType("boolean")
 2536                        .HasDefaultValue(false)
 2537                        .HasColumnName("include_as_jwt_claim");
 2538
 2539                    b.Property<bool>("IsDeleted")
 2540                        .ValueGeneratedOnAdd()
 2541                        .HasColumnType("boolean")
 2542                        .HasDefaultValue(false)
 2543                        .HasColumnName("is_deleted");
 2544
 2545                    b.Property<string>("Name")
 2546                        .IsRequired()
 2547                        .HasMaxLength(200)
 2548                        .HasColumnType("character varying(200)")
 2549                        .HasColumnName("name");
 2550
 2551                    b.Property<Guid>("PublicId")
 2552                        .HasColumnType("uuid")
 2553                        .HasColumnName("public_id");
 2554
 2555                    b.Property<long>("ScopeId")
 2556                        .HasColumnType("bigint")
 2557                        .HasColumnName("scope_id");
 2558
 2559                    b.Property<DateTime>("UpdatedAt")
 2560                        .ValueGeneratedOnAdd()
 2561                        .HasColumnType("timestamp with time zone")
 2562                        .HasColumnName("updated_at")
 2563                        .HasDefaultValueSql("now()");
 2564
 2565                    b.HasKey("Id")
 2566                        .HasName("pk_scope_permission");
 2567
 2568                    b.HasIndex("PublicId")
 2569                        .IsUnique()
 2570                        .HasDatabaseName("ix_scope_permission_public_id");
 2571
 2572                    b.HasIndex("ScopeId")
 2573                        .HasDatabaseName("ix_scope_permission_scope_id");
 2574
 2575                    b.ToTable("scope_permission", "heimdall");
 4576                });
 577
 2578            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.ScopeUser", b =>
 2579                {
 2580                    b.Property<long>("ScopeId")
 2581                        .HasColumnType("bigint")
 2582                        .HasColumnName("scope_id");
 2583
 2584                    b.Property<long>("PersonId")
 2585                        .HasColumnType("bigint")
 2586                        .HasColumnName("person_id");
 2587
 2588                    b.HasKey("ScopeId", "PersonId")
 2589                        .HasName("pk_scope_user");
 2590
 2591                    b.HasIndex("PersonId")
 2592                        .IsUnique()
 2593                        .HasDatabaseName("ix_scope_user_person_id");
 2594
 2595                    b.ToTable("scope_user", "heimdall");
 4596                });
 597
 2598            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.TwoFactorAuth", b =>
 2599                {
 2600                    b.Property<long>("Id")
 2601                        .ValueGeneratedOnAdd()
 2602                        .HasColumnType("bigint")
 2603                        .HasColumnName("id")
 2604                        .HasColumnOrder(1);
 2605
 2606                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 2607
 2608                    b.Property<bool>("AppEnabled")
 2609                        .ValueGeneratedOnAdd()
 2610                        .HasColumnType("boolean")
 2611                        .HasDefaultValue(false)
 2612                        .HasColumnName("app_enabled");
 2613
 2614                    b.Property<DateTime>("CreatedAt")
 2615                        .ValueGeneratedOnAdd()
 2616                        .HasColumnType("timestamp with time zone")
 2617                        .HasColumnName("created_at")
 2618                        .HasDefaultValueSql("now()");
 2619
 2620                    b.Property<bool>("EmailEnabled")
 2621                        .ValueGeneratedOnAdd()
 2622                        .HasColumnType("boolean")
 2623                        .HasDefaultValue(false)
 2624                        .HasColumnName("email_enabled");
 2625
 2626                    b.Property<bool>("IsActive")
 2627                        .ValueGeneratedOnAdd()
 2628                        .HasColumnType("boolean")
 2629                        .HasDefaultValue(false)
 2630                        .HasColumnName("is_active");
 2631
 2632                    b.Property<long>("PersonId")
 2633                        .HasColumnType("bigint")
 2634                        .HasColumnName("person_id");
 2635
 2636                    b.Property<byte[]>("TotpSecretEncrypted")
 2637                        .HasColumnType("bytea")
 2638                        .HasColumnName("totp_secret_encrypted");
 2639
 2640                    b.Property<DateTime>("UpdatedAt")
 2641                        .ValueGeneratedOnAdd()
 2642                        .HasColumnType("timestamp with time zone")
 2643                        .HasColumnName("updated_at")
 2644                        .HasDefaultValueSql("now()");
 2645
 2646                    b.HasKey("Id")
 2647                        .HasName("pk_two_factor_auth");
 2648
 2649                    b.HasIndex("PersonId")
 2650                        .IsUnique()
 2651                        .HasDatabaseName("ix_two_factor_auth_person_id");
 2652
 2653                    b.ToTable("two_factor_auth", "heimdall");
 4654                });
 655
 2656            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.TwoFactorEmailCode", b =>
 2657                {
 2658                    b.Property<long>("Id")
 2659                        .ValueGeneratedOnAdd()
 2660                        .HasColumnType("bigint")
 2661                        .HasColumnName("id")
 2662                        .HasColumnOrder(1);
 2663
 2664                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 2665
 2666                    b.Property<byte[]>("CodeHash")
 2667                        .IsRequired()
 2668                        .HasColumnType("bytea")
 2669                        .HasColumnName("code_hash");
 2670
 2671                    b.Property<DateTime>("CreatedAt")
 2672                        .ValueGeneratedOnAdd()
 2673                        .HasColumnType("timestamp with time zone")
 2674                        .HasColumnName("created_at")
 2675                        .HasDefaultValueSql("now()");
 2676
 2677                    b.Property<DateTime>("ExpiresAt")
 2678                        .HasColumnType("timestamp with time zone")
 2679                        .HasColumnName("expires_at");
 2680
 2681                    b.Property<byte[]>("Salt")
 2682                        .IsRequired()
 2683                        .HasColumnType("bytea")
 2684                        .HasColumnName("salt");
 2685
 2686                    b.Property<long>("TwoFactorAuthId")
 2687                        .HasColumnType("bigint")
 2688                        .HasColumnName("two_factor_auth_id");
 2689
 2690                    b.Property<bool>("Used")
 2691                        .ValueGeneratedOnAdd()
 2692                        .HasColumnType("boolean")
 2693                        .HasDefaultValue(false)
 2694                        .HasColumnName("used");
 2695
 2696                    b.HasKey("Id")
 2697                        .HasName("pk_two_factor_email_code");
 2698
 2699                    b.HasIndex("TwoFactorAuthId")
 2700                        .HasDatabaseName("ix_two_factor_email_code_two_factor_auth_id");
 2701
 2702                    b.ToTable("two_factor_email_code", "heimdall");
 4703                });
 704
 2705            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.TwoFactorRecoveryCode", b =>
 2706                {
 2707                    b.Property<long>("Id")
 2708                        .ValueGeneratedOnAdd()
 2709                        .HasColumnType("bigint")
 2710                        .HasColumnName("id")
 2711                        .HasColumnOrder(1);
 2712
 2713                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
 2714
 2715                    b.Property<byte[]>("CodeHash")
 2716                        .IsRequired()
 2717                        .HasColumnType("bytea")
 2718                        .HasColumnName("code_hash");
 2719
 2720                    b.Property<DateTime>("CreatedAt")
 2721                        .ValueGeneratedOnAdd()
 2722                        .HasColumnType("timestamp with time zone")
 2723                        .HasColumnName("created_at")
 2724                        .HasDefaultValueSql("now()");
 2725
 2726                    b.Property<long>("TwoFactorAuthId")
 2727                        .HasColumnType("bigint")
 2728                        .HasColumnName("two_factor_auth_id");
 2729
 2730                    b.Property<bool>("Used")
 2731                        .ValueGeneratedOnAdd()
 2732                        .HasColumnType("boolean")
 2733                        .HasDefaultValue(false)
 2734                        .HasColumnName("used");
 2735
 2736                    b.Property<DateTime?>("UsedAt")
 2737                        .HasColumnType("timestamp with time zone")
 2738                        .HasColumnName("used_at");
 2739
 2740                    b.HasKey("Id")
 2741                        .HasName("pk_two_factor_recovery_code");
 2742
 2743                    b.HasIndex("TwoFactorAuthId")
 2744                        .HasDatabaseName("ix_two_factor_recovery_code_two_factor_auth_id");
 2745
 2746                    b.ToTable("two_factor_recovery_code", "heimdall");
 4747                });
 748
 2749            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Application", b =>
 2750                {
 2751                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Person", "Owner")
 2752                        .WithMany("OwnedApplications")
 2753                        .HasForeignKey("OwnerId")
 2754                        .OnDelete(DeleteBehavior.Cascade)
 2755                        .IsRequired()
 2756                        .HasConstraintName("fk_application_person_owner_id");
 2757
 2758                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Scope", "Scope")
 2759                        .WithMany("Applications")
 2760                        .HasForeignKey("ScopeId")
 2761                        .OnDelete(DeleteBehavior.Cascade)
 2762                        .IsRequired()
 2763                        .HasConstraintName("fk_application_scope_scope_id");
 2764
 2765                    b.Navigation("Owner");
 2766
 2767                    b.Navigation("Scope");
 4768                });
 769
 2770            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.EmailVerificationToken", b =>
 2771                {
 2772                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Person", "Person")
 2773                        .WithMany("EmailVerificationTokens")
 2774                        .HasForeignKey("PersonId")
 2775                        .OnDelete(DeleteBehavior.Cascade)
 2776                        .IsRequired()
 2777                        .HasConstraintName("fk_email_verification_token_person_person_id");
 2778
 2779                    b.Navigation("Person");
 4780                });
 781
 2782            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.GoogleUser", b =>
 2783                {
 2784                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Scope", "Scope")
 2785                        .WithMany("GoogleUsers")
 2786                        .HasForeignKey("ScopeId")
 2787                        .OnDelete(DeleteBehavior.Cascade)
 2788                        .IsRequired()
 2789                        .HasConstraintName("fk_google_user_scope_scope_id");
 2790
 2791                    b.Navigation("Scope");
 4792                });
 793
 2794            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.PasswordResetToken", b =>
 2795                {
 2796                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Person", "Person")
 2797                        .WithMany("PasswordResetTokens")
 2798                        .HasForeignKey("PersonId")
 2799                        .OnDelete(DeleteBehavior.Cascade)
 2800                        .IsRequired()
 2801                        .HasConstraintName("fk_password_reset_token_person_person_id");
 2802
 2803                    b.Navigation("Person");
 4804                });
 805
 2806            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Person", b =>
 2807                {
 2808                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Role", "Role")
 2809                        .WithMany("Persons")
 2810                        .HasForeignKey("RoleId")
 2811                        .OnDelete(DeleteBehavior.Restrict)
 2812                        .IsRequired()
 2813                        .HasConstraintName("fk_person_roles_role_id");
 2814
 2815                    b.Navigation("Role");
 4816                });
 817
 2818            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.ScopeOwner", b =>
 2819                {
 2820                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Person", "Person")
 2821                        .WithMany("ScopeOwnerships")
 2822                        .HasForeignKey("PersonId")
 2823                        .OnDelete(DeleteBehavior.Cascade)
 2824                        .IsRequired()
 2825                        .HasConstraintName("fk_scope_owner_person_person_id");
 2826
 2827                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Scope", "Scope")
 2828                        .WithMany("Owners")
 2829                        .HasForeignKey("ScopeId")
 2830                        .OnDelete(DeleteBehavior.Cascade)
 2831                        .IsRequired()
 2832                        .HasConstraintName("fk_scope_owner_scope_scope_id");
 2833
 2834                    b.Navigation("Person");
 2835
 2836                    b.Navigation("Scope");
 4837                });
 838
 2839            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.ScopePermission", b =>
 2840                {
 2841                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Scope", "Scope")
 2842                        .WithMany("ScopePermissions")
 2843                        .HasForeignKey("ScopeId")
 2844                        .OnDelete(DeleteBehavior.Cascade)
 2845                        .IsRequired()
 2846                        .HasConstraintName("fk_scope_permission_scope_scope_id");
 2847
 2848                    b.Navigation("Scope");
 4849                });
 850
 2851            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.ScopeUser", b =>
 2852                {
 2853                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Person", "Person")
 2854                        .WithOne("ScopeMembership")
 2855                        .HasForeignKey("ArturRios.Heimdall.Domain.Entities.ScopeUser", "PersonId")
 2856                        .OnDelete(DeleteBehavior.Cascade)
 2857                        .IsRequired()
 2858                        .HasConstraintName("fk_scope_user_person_person_id");
 2859
 2860                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Scope", "Scope")
 2861                        .WithMany("Users")
 2862                        .HasForeignKey("ScopeId")
 2863                        .OnDelete(DeleteBehavior.Cascade)
 2864                        .IsRequired()
 2865                        .HasConstraintName("fk_scope_user_scope_scope_id");
 2866
 2867                    b.Navigation("Person");
 2868
 2869                    b.Navigation("Scope");
 4870                });
 871
 2872            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.TwoFactorAuth", b =>
 2873                {
 2874                    b.HasOne("ArturRios.Heimdall.Domain.Entities.Person", "Person")
 2875                        .WithOne("TwoFactorAuth")
 2876                        .HasForeignKey("ArturRios.Heimdall.Domain.Entities.TwoFactorAuth", "PersonId")
 2877                        .OnDelete(DeleteBehavior.Cascade)
 2878                        .IsRequired()
 2879                        .HasConstraintName("fk_two_factor_auth_person_person_id");
 2880
 2881                    b.Navigation("Person");
 4882                });
 883
 2884            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.TwoFactorEmailCode", b =>
 2885                {
 2886                    b.HasOne("ArturRios.Heimdall.Domain.Entities.TwoFactorAuth", "TwoFactorAuth")
 2887                        .WithMany("EmailCodes")
 2888                        .HasForeignKey("TwoFactorAuthId")
 2889                        .OnDelete(DeleteBehavior.Cascade)
 2890                        .IsRequired()
 2891                        .HasConstraintName("fk_two_factor_email_code_two_factor_auth_two_factor_auth_id");
 2892
 2893                    b.Navigation("TwoFactorAuth");
 4894                });
 895
 2896            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.TwoFactorRecoveryCode", b =>
 2897                {
 2898                    b.HasOne("ArturRios.Heimdall.Domain.Entities.TwoFactorAuth", "TwoFactorAuth")
 2899                        .WithMany("RecoveryCodes")
 2900                        .HasForeignKey("TwoFactorAuthId")
 2901                        .OnDelete(DeleteBehavior.Cascade)
 2902                        .IsRequired()
 2903                        .HasConstraintName("fk_two_factor_recovery_code_two_factor_auth_two_factor_auth_id");
 2904
 2905                    b.Navigation("TwoFactorAuth");
 4906                });
 907
 2908            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Person", b =>
 2909                {
 2910                    b.Navigation("EmailVerificationTokens");
 2911
 2912                    b.Navigation("OwnedApplications");
 2913
 2914                    b.Navigation("PasswordResetTokens");
 2915
 2916                    b.Navigation("ScopeMembership");
 2917
 2918                    b.Navigation("ScopeOwnerships");
 2919
 2920                    b.Navigation("TwoFactorAuth");
 4921                });
 922
 2923            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Role", b =>
 2924                {
 2925                    b.Navigation("Persons");
 4926                });
 927
 2928            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.Scope", b =>
 2929                {
 2930                    b.Navigation("Applications");
 2931
 2932                    b.Navigation("GoogleUsers");
 2933
 2934                    b.Navigation("Owners");
 2935
 2936                    b.Navigation("ScopePermissions");
 2937
 2938                    b.Navigation("Users");
 4939                });
 940
 2941            modelBuilder.Entity("ArturRios.Heimdall.Domain.Entities.TwoFactorAuth", b =>
 2942                {
 2943                    b.Navigation("EmailCodes");
 2944
 2945                    b.Navigation("RecoveryCodes");
 4946                });
 947#pragma warning restore 612, 618
 2948        }
 949    }
 950}