< Summary

Line coverage
0%
Covered lines: 0
Uncovered lines: 560
Coverable lines: 560
Total lines: 630
Line coverage: 0%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

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

File(s)

/home/runner/work/chronicis/chronicis/src/Chronicis.Api/Migrations/20251224021026_AddArcEntity.cs

#LineLine coverage
 1using Microsoft.EntityFrameworkCore.Migrations;
 2
 3#nullable disable
 4
 5namespace Chronicis.Api.Migrations
 6{
 7    /// <inheritdoc />
 8    public partial class AddArcEntity : Migration
 9    {
 10        /// <inheritdoc />
 11        protected override void Up(MigrationBuilder migrationBuilder)
 12        {
 013            migrationBuilder.AddColumn<Guid>(
 014                name: "ArcId",
 015                table: "Articles",
 016                type: "uniqueidentifier",
 017                nullable: true);
 18
 019            migrationBuilder.CreateTable(
 020                name: "Arcs",
 021                columns: table => new
 022                {
 023                    Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
 024                    CampaignId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
 025                    Name = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false),
 026                    Description = table.Column<string>(type: "nvarchar(1000)", maxLength: 1000, nullable: true),
 027                    SortOrder = table.Column<int>(type: "int", nullable: false),
 028                    CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
 029                    CreatedBy = table.Column<Guid>(type: "uniqueidentifier", nullable: false)
 030                },
 031                constraints: table =>
 032                {
 033                    table.PrimaryKey("PK_Arcs", x => x.Id);
 034                    table.ForeignKey(
 035                        name: "FK_Arcs_Campaigns_CampaignId",
 036                        column: x => x.CampaignId,
 037                        principalTable: "Campaigns",
 038                        principalColumn: "Id",
 039                        onDelete: ReferentialAction.Cascade);
 040                    table.ForeignKey(
 041                        name: "FK_Arcs_Users_CreatedBy",
 042                        column: x => x.CreatedBy,
 043                        principalTable: "Users",
 044                        principalColumn: "Id",
 045                        onDelete: ReferentialAction.Restrict);
 046                });
 47
 048            migrationBuilder.CreateIndex(
 049                name: "IX_Articles_ArcId",
 050                table: "Articles",
 051                column: "ArcId");
 52
 053            migrationBuilder.CreateIndex(
 054                name: "IX_Arcs_CampaignId",
 055                table: "Arcs",
 056                column: "CampaignId");
 57
 058            migrationBuilder.CreateIndex(
 059                name: "IX_Arcs_CampaignId_SortOrder",
 060                table: "Arcs",
 061                columns: new[] { "CampaignId", "SortOrder" });
 62
 063            migrationBuilder.CreateIndex(
 064                name: "IX_Arcs_CreatedBy",
 065                table: "Arcs",
 066                column: "CreatedBy");
 67
 068            migrationBuilder.AddForeignKey(
 069                name: "FK_Articles_Arcs_ArcId",
 070                table: "Articles",
 071                column: "ArcId",
 072                principalTable: "Arcs",
 073                principalColumn: "Id",
 074                onDelete: ReferentialAction.Restrict);
 075        }
 76
 77        /// <inheritdoc />
 78        protected override void Down(MigrationBuilder migrationBuilder)
 79        {
 080            migrationBuilder.DropForeignKey(
 081                name: "FK_Articles_Arcs_ArcId",
 082                table: "Articles");
 83
 084            migrationBuilder.DropTable(
 085                name: "Arcs");
 86
 087            migrationBuilder.DropIndex(
 088                name: "IX_Articles_ArcId",
 089                table: "Articles");
 90
 091            migrationBuilder.DropColumn(
 092                name: "ArcId",
 093                table: "Articles");
 094        }
 95    }
 96}

/home/runner/work/chronicis/chronicis/src/Chronicis.Api/Migrations/20251224021026_AddArcEntity.Designer.cs

#LineLine coverage
 1// <auto-generated />
 2using System;
 3using Chronicis.Api.Data;
 4using Microsoft.EntityFrameworkCore;
 5using Microsoft.EntityFrameworkCore.Infrastructure;
 6using Microsoft.EntityFrameworkCore.Metadata;
 7using Microsoft.EntityFrameworkCore.Migrations;
 8using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
 9
 10#nullable disable
 11
 12namespace Chronicis.Api.Migrations
 13{
 14    [DbContext(typeof(ChronicisDbContext))]
 15    [Migration("20251224021026_AddArcEntity")]
 16    partial class AddArcEntity
 17    {
 18        /// <inheritdoc />
 19        protected override void BuildTargetModel(ModelBuilder modelBuilder)
 20        {
 21#pragma warning disable 612, 618
 022            modelBuilder
 023                .HasAnnotation("ProductVersion", "9.0.0")
 024                .HasAnnotation("Relational:MaxIdentifierLength", 128);
 25
 026            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
 27
 028            modelBuilder.Entity("Chronicis.Shared.Models.Arc", b =>
 029                {
 030                    b.Property<Guid>("Id")
 031                        .ValueGeneratedOnAdd()
 032                        .HasColumnType("uniqueidentifier");
 033
 034                    b.Property<Guid>("CampaignId")
 035                        .HasColumnType("uniqueidentifier");
 036
 037                    b.Property<DateTime>("CreatedAt")
 038                        .HasColumnType("datetime2");
 039
 040                    b.Property<Guid>("CreatedBy")
 041                        .HasColumnType("uniqueidentifier");
 042
 043                    b.Property<string>("Description")
 044                        .HasMaxLength(1000)
 045                        .HasColumnType("nvarchar(1000)");
 046
 047                    b.Property<string>("Name")
 048                        .IsRequired()
 049                        .HasMaxLength(200)
 050                        .HasColumnType("nvarchar(200)");
 051
 052                    b.Property<int>("SortOrder")
 053                        .HasColumnType("int");
 054
 055                    b.HasKey("Id");
 056
 057                    b.HasIndex("CampaignId");
 058
 059                    b.HasIndex("CreatedBy");
 060
 061                    b.HasIndex("CampaignId", "SortOrder");
 062
 063                    b.ToTable("Arcs");
 064                });
 65
 066            modelBuilder.Entity("Chronicis.Shared.Models.Article", b =>
 067                {
 068                    b.Property<Guid>("Id")
 069                        .ValueGeneratedOnAdd()
 070                        .HasColumnType("uniqueidentifier");
 071
 072                    b.Property<string>("AISummary")
 073                        .HasColumnType("nvarchar(max)");
 074
 075                    b.Property<DateTime?>("AISummaryGeneratedAt")
 076                        .HasColumnType("datetime2");
 077
 078                    b.Property<Guid?>("ArcId")
 079                        .HasColumnType("uniqueidentifier");
 080
 081                    b.Property<string>("Body")
 082                        .HasColumnType("nvarchar(max)");
 083
 084                    b.Property<Guid?>("CampaignId")
 085                        .HasColumnType("uniqueidentifier");
 086
 087                    b.Property<DateTime>("CreatedAt")
 088                        .HasColumnType("datetime2");
 089
 090                    b.Property<Guid>("CreatedBy")
 091                        .HasColumnType("uniqueidentifier");
 092
 093                    b.Property<DateTime>("EffectiveDate")
 094                        .HasColumnType("datetime2");
 095
 096                    b.Property<string>("IconEmoji")
 097                        .HasMaxLength(50)
 098                        .HasColumnType("nvarchar(50)");
 099
 0100                    b.Property<string>("InGameDate")
 0101                        .HasMaxLength(100)
 0102                        .HasColumnType("nvarchar(100)");
 0103
 0104                    b.Property<Guid?>("LastModifiedBy")
 0105                        .HasColumnType("uniqueidentifier");
 0106
 0107                    b.Property<DateTime?>("ModifiedAt")
 0108                        .HasColumnType("datetime2");
 0109
 0110                    b.Property<Guid?>("ParentId")
 0111                        .HasColumnType("uniqueidentifier");
 0112
 0113                    b.Property<Guid?>("PlayerId")
 0114                        .HasColumnType("uniqueidentifier");
 0115
 0116                    b.Property<DateTime?>("SessionDate")
 0117                        .HasColumnType("datetime2");
 0118
 0119                    b.Property<string>("Slug")
 0120                        .IsRequired()
 0121                        .HasMaxLength(200)
 0122                        .HasColumnType("nvarchar(200)");
 0123
 0124                    b.Property<string>("Title")
 0125                        .IsRequired()
 0126                        .HasMaxLength(500)
 0127                        .HasColumnType("nvarchar(500)");
 0128
 0129                    b.Property<int>("Type")
 0130                        .HasColumnType("int");
 0131
 0132                    b.Property<int>("Visibility")
 0133                        .HasColumnType("int");
 0134
 0135                    b.Property<Guid?>("WorldId")
 0136                        .HasColumnType("uniqueidentifier");
 0137
 0138                    b.HasKey("Id");
 0139
 0140                    b.HasIndex("ArcId");
 0141
 0142                    b.HasIndex("CampaignId");
 0143
 0144                    b.HasIndex("CreatedBy");
 0145
 0146                    b.HasIndex("LastModifiedBy");
 0147
 0148                    b.HasIndex("ParentId");
 0149
 0150                    b.HasIndex("PlayerId");
 0151
 0152                    b.HasIndex("Slug")
 0153                        .IsUnique()
 0154                        .HasDatabaseName("IX_Articles_Slug_Root")
 0155                        .HasFilter("[ParentId] IS NULL");
 0156
 0157                    b.HasIndex("Title");
 0158
 0159                    b.HasIndex("Type");
 0160
 0161                    b.HasIndex("WorldId");
 0162
 0163                    b.HasIndex("ParentId", "Slug")
 0164                        .IsUnique()
 0165                        .HasDatabaseName("IX_Articles_ParentId_Slug")
 0166                        .HasFilter("[ParentId] IS NOT NULL");
 0167
 0168                    b.ToTable("Articles");
 0169                });
 170
 0171            modelBuilder.Entity("Chronicis.Shared.Models.ArticleLink", b =>
 0172                {
 0173                    b.Property<Guid>("Id")
 0174                        .ValueGeneratedOnAdd()
 0175                        .HasColumnType("uniqueidentifier");
 0176
 0177                    b.Property<DateTime>("CreatedAt")
 0178                        .HasColumnType("datetime2");
 0179
 0180                    b.Property<string>("DisplayText")
 0181                        .HasMaxLength(500)
 0182                        .HasColumnType("nvarchar(500)");
 0183
 0184                    b.Property<int>("Position")
 0185                        .HasColumnType("int");
 0186
 0187                    b.Property<Guid>("SourceArticleId")
 0188                        .HasColumnType("uniqueidentifier");
 0189
 0190                    b.Property<Guid>("TargetArticleId")
 0191                        .HasColumnType("uniqueidentifier");
 0192
 0193                    b.HasKey("Id");
 0194
 0195                    b.HasIndex("SourceArticleId");
 0196
 0197                    b.HasIndex("TargetArticleId");
 0198
 0199                    b.HasIndex("SourceArticleId", "TargetArticleId", "Position")
 0200                        .IsUnique();
 0201
 0202                    b.ToTable("ArticleLinks");
 0203                });
 204
 0205            modelBuilder.Entity("Chronicis.Shared.Models.Campaign", b =>
 0206                {
 0207                    b.Property<Guid>("Id")
 0208                        .ValueGeneratedOnAdd()
 0209                        .HasColumnType("uniqueidentifier");
 0210
 0211                    b.Property<DateTime>("CreatedAt")
 0212                        .HasColumnType("datetime2");
 0213
 0214                    b.Property<string>("Description")
 0215                        .HasMaxLength(1000)
 0216                        .HasColumnType("nvarchar(1000)");
 0217
 0218                    b.Property<DateTime?>("EndedAt")
 0219                        .HasColumnType("datetime2");
 0220
 0221                    b.Property<string>("Name")
 0222                        .IsRequired()
 0223                        .HasMaxLength(200)
 0224                        .HasColumnType("nvarchar(200)");
 0225
 0226                    b.Property<Guid>("OwnerId")
 0227                        .HasColumnType("uniqueidentifier");
 0228
 0229                    b.Property<DateTime?>("StartedAt")
 0230                        .HasColumnType("datetime2");
 0231
 0232                    b.Property<Guid>("WorldId")
 0233                        .HasColumnType("uniqueidentifier");
 0234
 0235                    b.HasKey("Id");
 0236
 0237                    b.HasIndex("OwnerId");
 0238
 0239                    b.HasIndex("WorldId");
 0240
 0241                    b.ToTable("Campaigns");
 0242                });
 243
 0244            modelBuilder.Entity("Chronicis.Shared.Models.CampaignMember", b =>
 0245                {
 0246                    b.Property<Guid>("Id")
 0247                        .ValueGeneratedOnAdd()
 0248                        .HasColumnType("uniqueidentifier");
 0249
 0250                    b.Property<Guid>("CampaignId")
 0251                        .HasColumnType("uniqueidentifier");
 0252
 0253                    b.Property<string>("CharacterName")
 0254                        .HasMaxLength(100)
 0255                        .HasColumnType("nvarchar(100)");
 0256
 0257                    b.Property<DateTime>("JoinedAt")
 0258                        .HasColumnType("datetime2");
 0259
 0260                    b.Property<int>("Role")
 0261                        .HasColumnType("int");
 0262
 0263                    b.Property<Guid>("UserId")
 0264                        .HasColumnType("uniqueidentifier");
 0265
 0266                    b.HasKey("Id");
 0267
 0268                    b.HasIndex("UserId");
 0269
 0270                    b.HasIndex("CampaignId", "UserId")
 0271                        .IsUnique();
 0272
 0273                    b.ToTable("CampaignMembers");
 0274                });
 275
 0276            modelBuilder.Entity("Chronicis.Shared.Models.User", b =>
 0277                {
 0278                    b.Property<Guid>("Id")
 0279                        .ValueGeneratedOnAdd()
 0280                        .HasColumnType("uniqueidentifier");
 0281
 0282                    b.Property<string>("Auth0UserId")
 0283                        .IsRequired()
 0284                        .HasMaxLength(256)
 0285                        .HasColumnType("nvarchar(256)");
 0286
 0287                    b.Property<string>("AvatarUrl")
 0288                        .HasMaxLength(500)
 0289                        .HasColumnType("nvarchar(500)");
 0290
 0291                    b.Property<DateTime>("CreatedAt")
 0292                        .HasColumnType("datetime2");
 0293
 0294                    b.Property<string>("DisplayName")
 0295                        .IsRequired()
 0296                        .HasMaxLength(100)
 0297                        .HasColumnType("nvarchar(100)");
 0298
 0299                    b.Property<string>("Email")
 0300                        .IsRequired()
 0301                        .HasMaxLength(256)
 0302                        .HasColumnType("nvarchar(256)");
 0303
 0304                    b.Property<DateTime>("LastLoginAt")
 0305                        .HasColumnType("datetime2");
 0306
 0307                    b.HasKey("Id");
 0308
 0309                    b.HasIndex("Auth0UserId")
 0310                        .IsUnique();
 0311
 0312                    b.HasIndex("Email");
 0313
 0314                    b.ToTable("Users");
 0315                });
 316
 0317            modelBuilder.Entity("Chronicis.Shared.Models.World", b =>
 0318                {
 0319                    b.Property<Guid>("Id")
 0320                        .ValueGeneratedOnAdd()
 0321                        .HasColumnType("uniqueidentifier");
 0322
 0323                    b.Property<DateTime>("CreatedAt")
 0324                        .HasColumnType("datetime2");
 0325
 0326                    b.Property<string>("Description")
 0327                        .HasMaxLength(1000)
 0328                        .HasColumnType("nvarchar(1000)");
 0329
 0330                    b.Property<string>("Name")
 0331                        .IsRequired()
 0332                        .HasMaxLength(200)
 0333                        .HasColumnType("nvarchar(200)");
 0334
 0335                    b.Property<Guid>("OwnerId")
 0336                        .HasColumnType("uniqueidentifier");
 0337
 0338                    b.HasKey("Id");
 0339
 0340                    b.HasIndex("OwnerId");
 0341
 0342                    b.ToTable("Worlds");
 0343                });
 344
 0345            modelBuilder.Entity("Chronicis.Shared.Models.Arc", b =>
 0346                {
 0347                    b.HasOne("Chronicis.Shared.Models.Campaign", "Campaign")
 0348                        .WithMany("Arcs")
 0349                        .HasForeignKey("CampaignId")
 0350                        .OnDelete(DeleteBehavior.Cascade)
 0351                        .IsRequired();
 0352
 0353                    b.HasOne("Chronicis.Shared.Models.User", "Creator")
 0354                        .WithMany("CreatedArcs")
 0355                        .HasForeignKey("CreatedBy")
 0356                        .OnDelete(DeleteBehavior.Restrict)
 0357                        .IsRequired();
 0358
 0359                    b.Navigation("Campaign");
 0360
 0361                    b.Navigation("Creator");
 0362                });
 363
 0364            modelBuilder.Entity("Chronicis.Shared.Models.Article", b =>
 0365                {
 0366                    b.HasOne("Chronicis.Shared.Models.Arc", "Arc")
 0367                        .WithMany("Sessions")
 0368                        .HasForeignKey("ArcId")
 0369                        .OnDelete(DeleteBehavior.Restrict);
 0370
 0371                    b.HasOne("Chronicis.Shared.Models.Campaign", "Campaign")
 0372                        .WithMany("Articles")
 0373                        .HasForeignKey("CampaignId")
 0374                        .OnDelete(DeleteBehavior.Restrict);
 0375
 0376                    b.HasOne("Chronicis.Shared.Models.User", "Creator")
 0377                        .WithMany("CreatedArticles")
 0378                        .HasForeignKey("CreatedBy")
 0379                        .OnDelete(DeleteBehavior.Restrict)
 0380                        .IsRequired();
 0381
 0382                    b.HasOne("Chronicis.Shared.Models.User", "Modifier")
 0383                        .WithMany("ModifiedArticles")
 0384                        .HasForeignKey("LastModifiedBy")
 0385                        .OnDelete(DeleteBehavior.Restrict);
 0386
 0387                    b.HasOne("Chronicis.Shared.Models.Article", "Parent")
 0388                        .WithMany("Children")
 0389                        .HasForeignKey("ParentId")
 0390                        .OnDelete(DeleteBehavior.Restrict);
 0391
 0392                    b.HasOne("Chronicis.Shared.Models.User", "Player")
 0393                        .WithMany("OwnedCharacters")
 0394                        .HasForeignKey("PlayerId")
 0395                        .OnDelete(DeleteBehavior.Restrict);
 0396
 0397                    b.HasOne("Chronicis.Shared.Models.World", "World")
 0398                        .WithMany("Articles")
 0399                        .HasForeignKey("WorldId")
 0400                        .OnDelete(DeleteBehavior.Restrict);
 0401
 0402                    b.Navigation("Arc");
 0403
 0404                    b.Navigation("Campaign");
 0405
 0406                    b.Navigation("Creator");
 0407
 0408                    b.Navigation("Modifier");
 0409
 0410                    b.Navigation("Parent");
 0411
 0412                    b.Navigation("Player");
 0413
 0414                    b.Navigation("World");
 0415                });
 416
 0417            modelBuilder.Entity("Chronicis.Shared.Models.ArticleLink", b =>
 0418                {
 0419                    b.HasOne("Chronicis.Shared.Models.Article", "SourceArticle")
 0420                        .WithMany("OutgoingLinks")
 0421                        .HasForeignKey("SourceArticleId")
 0422                        .OnDelete(DeleteBehavior.Cascade)
 0423                        .IsRequired();
 0424
 0425                    b.HasOne("Chronicis.Shared.Models.Article", "TargetArticle")
 0426                        .WithMany("IncomingLinks")
 0427                        .HasForeignKey("TargetArticleId")
 0428                        .OnDelete(DeleteBehavior.NoAction)
 0429                        .IsRequired();
 0430
 0431                    b.Navigation("SourceArticle");
 0432
 0433                    b.Navigation("TargetArticle");
 0434                });
 435
 0436            modelBuilder.Entity("Chronicis.Shared.Models.Campaign", b =>
 0437                {
 0438                    b.HasOne("Chronicis.Shared.Models.User", "Owner")
 0439                        .WithMany("OwnedCampaigns")
 0440                        .HasForeignKey("OwnerId")
 0441                        .OnDelete(DeleteBehavior.Restrict)
 0442                        .IsRequired();
 0443
 0444                    b.HasOne("Chronicis.Shared.Models.World", "World")
 0445                        .WithMany("Campaigns")
 0446                        .HasForeignKey("WorldId")
 0447                        .OnDelete(DeleteBehavior.Restrict)
 0448                        .IsRequired();
 0449
 0450                    b.Navigation("Owner");
 0451
 0452                    b.Navigation("World");
 0453                });
 454
 0455            modelBuilder.Entity("Chronicis.Shared.Models.CampaignMember", b =>
 0456                {
 0457                    b.HasOne("Chronicis.Shared.Models.Campaign", "Campaign")
 0458                        .WithMany("Members")
 0459                        .HasForeignKey("CampaignId")
 0460                        .OnDelete(DeleteBehavior.Cascade)
 0461                        .IsRequired();
 0462
 0463                    b.HasOne("Chronicis.Shared.Models.User", "User")
 0464                        .WithMany("CampaignMemberships")
 0465                        .HasForeignKey("UserId")
 0466                        .OnDelete(DeleteBehavior.Cascade)
 0467                        .IsRequired();
 0468
 0469                    b.Navigation("Campaign");
 0470
 0471                    b.Navigation("User");
 0472                });
 473
 0474            modelBuilder.Entity("Chronicis.Shared.Models.World", b =>
 0475                {
 0476                    b.HasOne("Chronicis.Shared.Models.User", "Owner")
 0477                        .WithMany("OwnedWorlds")
 0478                        .HasForeignKey("OwnerId")
 0479                        .OnDelete(DeleteBehavior.Restrict)
 0480                        .IsRequired();
 0481
 0482                    b.Navigation("Owner");
 0483                });
 484
 0485            modelBuilder.Entity("Chronicis.Shared.Models.Arc", b =>
 0486                {
 0487                    b.Navigation("Sessions");
 0488                });
 489
 0490            modelBuilder.Entity("Chronicis.Shared.Models.Article", b =>
 0491                {
 0492                    b.Navigation("Children");
 0493
 0494                    b.Navigation("IncomingLinks");
 0495
 0496                    b.Navigation("OutgoingLinks");
 0497                });
 498
 0499            modelBuilder.Entity("Chronicis.Shared.Models.Campaign", b =>
 0500                {
 0501                    b.Navigation("Arcs");
 0502
 0503                    b.Navigation("Articles");
 0504
 0505                    b.Navigation("Members");
 0506                });
 507
 0508            modelBuilder.Entity("Chronicis.Shared.Models.User", b =>
 0509                {
 0510                    b.Navigation("CampaignMemberships");
 0511
 0512                    b.Navigation("CreatedArcs");
 0513
 0514                    b.Navigation("CreatedArticles");
 0515
 0516                    b.Navigation("ModifiedArticles");
 0517
 0518                    b.Navigation("OwnedCampaigns");
 0519
 0520                    b.Navigation("OwnedCharacters");
 0521
 0522                    b.Navigation("OwnedWorlds");
 0523                });
 524
 0525            modelBuilder.Entity("Chronicis.Shared.Models.World", b =>
 0526                {
 0527                    b.Navigation("Articles");
 0528
 0529                    b.Navigation("Campaigns");
 0530                });
 531#pragma warning restore 612, 618
 0532        }
 533    }
 534}