< Summary

Line coverage
0%
Covered lines: 0
Uncovered lines: 430
Coverable lines: 430
Total lines: 492
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/20251223030020_RemoveHashtagTables.cs

#LineLine coverage
 1using Microsoft.EntityFrameworkCore.Migrations;
 2
 3#nullable disable
 4
 5namespace Chronicis.Api.Migrations
 6{
 7    /// <inheritdoc />
 8    public partial class RemoveHashtagTables : Migration
 9    {
 10        /// <inheritdoc />
 11        protected override void Up(MigrationBuilder migrationBuilder)
 12        {
 013            migrationBuilder.DropTable(
 014                name: "ArticleHashtags");
 15
 016            migrationBuilder.DropTable(
 017                name: "Hashtags");
 018        }
 19
 20        /// <inheritdoc />
 21        protected override void Down(MigrationBuilder migrationBuilder)
 22        {
 023            migrationBuilder.CreateTable(
 024                name: "Hashtags",
 025                columns: table => new
 026                {
 027                    Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
 028                    LinkedArticleId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
 029                    CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
 030                    Name = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false)
 031                },
 032                constraints: table =>
 033                {
 034                    table.PrimaryKey("PK_Hashtags", x => x.Id);
 035                    table.ForeignKey(
 036                        name: "FK_Hashtags_Articles_LinkedArticleId",
 037                        column: x => x.LinkedArticleId,
 038                        principalTable: "Articles",
 039                        principalColumn: "Id",
 040                        onDelete: ReferentialAction.SetNull);
 041                });
 42
 043            migrationBuilder.CreateTable(
 044                name: "ArticleHashtags",
 045                columns: table => new
 046                {
 047                    Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
 048                    ArticleId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
 049                    HashtagId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
 050                    CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
 051                    Position = table.Column<int>(type: "int", nullable: false)
 052                },
 053                constraints: table =>
 054                {
 055                    table.PrimaryKey("PK_ArticleHashtags", x => x.Id);
 056                    table.ForeignKey(
 057                        name: "FK_ArticleHashtags_Articles_ArticleId",
 058                        column: x => x.ArticleId,
 059                        principalTable: "Articles",
 060                        principalColumn: "Id",
 061                        onDelete: ReferentialAction.Cascade);
 062                    table.ForeignKey(
 063                        name: "FK_ArticleHashtags_Hashtags_HashtagId",
 064                        column: x => x.HashtagId,
 065                        principalTable: "Hashtags",
 066                        principalColumn: "Id",
 067                        onDelete: ReferentialAction.Cascade);
 068                });
 69
 070            migrationBuilder.CreateIndex(
 071                name: "IX_ArticleHashtags_ArticleId_HashtagId",
 072                table: "ArticleHashtags",
 073                columns: new[] { "ArticleId", "HashtagId" },
 074                unique: true);
 75
 076            migrationBuilder.CreateIndex(
 077                name: "IX_ArticleHashtags_HashtagId",
 078                table: "ArticleHashtags",
 079                column: "HashtagId");
 80
 081            migrationBuilder.CreateIndex(
 082                name: "IX_Hashtags_LinkedArticleId",
 083                table: "Hashtags",
 084                column: "LinkedArticleId");
 85
 086            migrationBuilder.CreateIndex(
 087                name: "IX_Hashtags_Name",
 088                table: "Hashtags",
 089                column: "Name",
 090                unique: true);
 091        }
 92    }
 93}

/home/runner/work/chronicis/chronicis/src/Chronicis.Api/Migrations/20251223030020_RemoveHashtagTables.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("20251223030020_RemoveHashtagTables")]
 16    partial class RemoveHashtagTables
 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.Article", b =>
 029                {
 030                    b.Property<Guid>("Id")
 031                        .ValueGeneratedOnAdd()
 032                        .HasColumnType("uniqueidentifier");
 033
 034                    b.Property<string>("AISummary")
 035                        .HasColumnType("nvarchar(max)");
 036
 037                    b.Property<DateTime?>("AISummaryGeneratedAt")
 038                        .HasColumnType("datetime2");
 039
 040                    b.Property<string>("Body")
 041                        .HasColumnType("nvarchar(max)");
 042
 043                    b.Property<Guid?>("CampaignId")
 044                        .HasColumnType("uniqueidentifier");
 045
 046                    b.Property<DateTime>("CreatedAt")
 047                        .HasColumnType("datetime2");
 048
 049                    b.Property<Guid>("CreatedBy")
 050                        .HasColumnType("uniqueidentifier");
 051
 052                    b.Property<DateTime>("EffectiveDate")
 053                        .HasColumnType("datetime2");
 054
 055                    b.Property<string>("IconEmoji")
 056                        .HasMaxLength(50)
 057                        .HasColumnType("nvarchar(50)");
 058
 059                    b.Property<string>("InGameDate")
 060                        .HasMaxLength(100)
 061                        .HasColumnType("nvarchar(100)");
 062
 063                    b.Property<Guid?>("LastModifiedBy")
 064                        .HasColumnType("uniqueidentifier");
 065
 066                    b.Property<DateTime?>("ModifiedAt")
 067                        .HasColumnType("datetime2");
 068
 069                    b.Property<Guid?>("ParentId")
 070                        .HasColumnType("uniqueidentifier");
 071
 072                    b.Property<Guid?>("PlayerId")
 073                        .HasColumnType("uniqueidentifier");
 074
 075                    b.Property<DateTime?>("SessionDate")
 076                        .HasColumnType("datetime2");
 077
 078                    b.Property<string>("Slug")
 079                        .IsRequired()
 080                        .HasMaxLength(200)
 081                        .HasColumnType("nvarchar(200)");
 082
 083                    b.Property<string>("Title")
 084                        .IsRequired()
 085                        .HasMaxLength(500)
 086                        .HasColumnType("nvarchar(500)");
 087
 088                    b.Property<int>("Type")
 089                        .HasColumnType("int");
 090
 091                    b.Property<int>("Visibility")
 092                        .HasColumnType("int");
 093
 094                    b.Property<Guid?>("WorldId")
 095                        .HasColumnType("uniqueidentifier");
 096
 097                    b.HasKey("Id");
 098
 099                    b.HasIndex("CampaignId");
 0100
 0101                    b.HasIndex("CreatedBy");
 0102
 0103                    b.HasIndex("LastModifiedBy");
 0104
 0105                    b.HasIndex("ParentId");
 0106
 0107                    b.HasIndex("PlayerId");
 0108
 0109                    b.HasIndex("Slug")
 0110                        .IsUnique()
 0111                        .HasDatabaseName("IX_Articles_Slug_Root")
 0112                        .HasFilter("[ParentId] IS NULL");
 0113
 0114                    b.HasIndex("Title");
 0115
 0116                    b.HasIndex("Type");
 0117
 0118                    b.HasIndex("WorldId");
 0119
 0120                    b.HasIndex("ParentId", "Slug")
 0121                        .IsUnique()
 0122                        .HasDatabaseName("IX_Articles_ParentId_Slug")
 0123                        .HasFilter("[ParentId] IS NOT NULL");
 0124
 0125                    b.ToTable("Articles");
 0126                });
 127
 0128            modelBuilder.Entity("Chronicis.Shared.Models.Campaign", b =>
 0129                {
 0130                    b.Property<Guid>("Id")
 0131                        .ValueGeneratedOnAdd()
 0132                        .HasColumnType("uniqueidentifier");
 0133
 0134                    b.Property<DateTime>("CreatedAt")
 0135                        .HasColumnType("datetime2");
 0136
 0137                    b.Property<string>("Description")
 0138                        .HasMaxLength(1000)
 0139                        .HasColumnType("nvarchar(1000)");
 0140
 0141                    b.Property<DateTime?>("EndedAt")
 0142                        .HasColumnType("datetime2");
 0143
 0144                    b.Property<string>("Name")
 0145                        .IsRequired()
 0146                        .HasMaxLength(200)
 0147                        .HasColumnType("nvarchar(200)");
 0148
 0149                    b.Property<Guid>("OwnerId")
 0150                        .HasColumnType("uniqueidentifier");
 0151
 0152                    b.Property<DateTime?>("StartedAt")
 0153                        .HasColumnType("datetime2");
 0154
 0155                    b.Property<Guid>("WorldId")
 0156                        .HasColumnType("uniqueidentifier");
 0157
 0158                    b.HasKey("Id");
 0159
 0160                    b.HasIndex("OwnerId");
 0161
 0162                    b.HasIndex("WorldId");
 0163
 0164                    b.ToTable("Campaigns");
 0165                });
 166
 0167            modelBuilder.Entity("Chronicis.Shared.Models.CampaignMember", b =>
 0168                {
 0169                    b.Property<Guid>("Id")
 0170                        .ValueGeneratedOnAdd()
 0171                        .HasColumnType("uniqueidentifier");
 0172
 0173                    b.Property<Guid>("CampaignId")
 0174                        .HasColumnType("uniqueidentifier");
 0175
 0176                    b.Property<string>("CharacterName")
 0177                        .HasMaxLength(100)
 0178                        .HasColumnType("nvarchar(100)");
 0179
 0180                    b.Property<DateTime>("JoinedAt")
 0181                        .HasColumnType("datetime2");
 0182
 0183                    b.Property<int>("Role")
 0184                        .HasColumnType("int");
 0185
 0186                    b.Property<Guid>("UserId")
 0187                        .HasColumnType("uniqueidentifier");
 0188
 0189                    b.HasKey("Id");
 0190
 0191                    b.HasIndex("UserId");
 0192
 0193                    b.HasIndex("CampaignId", "UserId")
 0194                        .IsUnique();
 0195
 0196                    b.ToTable("CampaignMembers");
 0197                });
 198
 0199            modelBuilder.Entity("Chronicis.Shared.Models.User", b =>
 0200                {
 0201                    b.Property<Guid>("Id")
 0202                        .ValueGeneratedOnAdd()
 0203                        .HasColumnType("uniqueidentifier");
 0204
 0205                    b.Property<string>("Auth0UserId")
 0206                        .IsRequired()
 0207                        .HasMaxLength(256)
 0208                        .HasColumnType("nvarchar(256)");
 0209
 0210                    b.Property<string>("AvatarUrl")
 0211                        .HasMaxLength(500)
 0212                        .HasColumnType("nvarchar(500)");
 0213
 0214                    b.Property<DateTime>("CreatedAt")
 0215                        .HasColumnType("datetime2");
 0216
 0217                    b.Property<string>("DisplayName")
 0218                        .IsRequired()
 0219                        .HasMaxLength(100)
 0220                        .HasColumnType("nvarchar(100)");
 0221
 0222                    b.Property<string>("Email")
 0223                        .IsRequired()
 0224                        .HasMaxLength(256)
 0225                        .HasColumnType("nvarchar(256)");
 0226
 0227                    b.Property<DateTime>("LastLoginAt")
 0228                        .HasColumnType("datetime2");
 0229
 0230                    b.HasKey("Id");
 0231
 0232                    b.HasIndex("Auth0UserId")
 0233                        .IsUnique();
 0234
 0235                    b.HasIndex("Email");
 0236
 0237                    b.ToTable("Users");
 0238                });
 239
 0240            modelBuilder.Entity("Chronicis.Shared.Models.World", b =>
 0241                {
 0242                    b.Property<Guid>("Id")
 0243                        .ValueGeneratedOnAdd()
 0244                        .HasColumnType("uniqueidentifier");
 0245
 0246                    b.Property<DateTime>("CreatedAt")
 0247                        .HasColumnType("datetime2");
 0248
 0249                    b.Property<string>("Description")
 0250                        .HasMaxLength(1000)
 0251                        .HasColumnType("nvarchar(1000)");
 0252
 0253                    b.Property<string>("Name")
 0254                        .IsRequired()
 0255                        .HasMaxLength(200)
 0256                        .HasColumnType("nvarchar(200)");
 0257
 0258                    b.Property<Guid>("OwnerId")
 0259                        .HasColumnType("uniqueidentifier");
 0260
 0261                    b.HasKey("Id");
 0262
 0263                    b.HasIndex("OwnerId");
 0264
 0265                    b.ToTable("Worlds");
 0266                });
 267
 0268            modelBuilder.Entity("Chronicis.Shared.Models.Article", b =>
 0269                {
 0270                    b.HasOne("Chronicis.Shared.Models.Campaign", "Campaign")
 0271                        .WithMany("Articles")
 0272                        .HasForeignKey("CampaignId")
 0273                        .OnDelete(DeleteBehavior.Restrict);
 0274
 0275                    b.HasOne("Chronicis.Shared.Models.User", "Creator")
 0276                        .WithMany("CreatedArticles")
 0277                        .HasForeignKey("CreatedBy")
 0278                        .OnDelete(DeleteBehavior.Restrict)
 0279                        .IsRequired();
 0280
 0281                    b.HasOne("Chronicis.Shared.Models.User", "Modifier")
 0282                        .WithMany("ModifiedArticles")
 0283                        .HasForeignKey("LastModifiedBy")
 0284                        .OnDelete(DeleteBehavior.Restrict);
 0285
 0286                    b.HasOne("Chronicis.Shared.Models.Article", "Parent")
 0287                        .WithMany("Children")
 0288                        .HasForeignKey("ParentId")
 0289                        .OnDelete(DeleteBehavior.Restrict);
 0290
 0291                    b.HasOne("Chronicis.Shared.Models.User", "Player")
 0292                        .WithMany("OwnedCharacters")
 0293                        .HasForeignKey("PlayerId")
 0294                        .OnDelete(DeleteBehavior.Restrict);
 0295
 0296                    b.HasOne("Chronicis.Shared.Models.World", "World")
 0297                        .WithMany("Articles")
 0298                        .HasForeignKey("WorldId")
 0299                        .OnDelete(DeleteBehavior.Restrict);
 0300
 0301                    b.Navigation("Campaign");
 0302
 0303                    b.Navigation("Creator");
 0304
 0305                    b.Navigation("Modifier");
 0306
 0307                    b.Navigation("Parent");
 0308
 0309                    b.Navigation("Player");
 0310
 0311                    b.Navigation("World");
 0312                });
 313
 0314            modelBuilder.Entity("Chronicis.Shared.Models.Campaign", b =>
 0315                {
 0316                    b.HasOne("Chronicis.Shared.Models.User", "Owner")
 0317                        .WithMany("OwnedCampaigns")
 0318                        .HasForeignKey("OwnerId")
 0319                        .OnDelete(DeleteBehavior.Restrict)
 0320                        .IsRequired();
 0321
 0322                    b.HasOne("Chronicis.Shared.Models.World", "World")
 0323                        .WithMany("Campaigns")
 0324                        .HasForeignKey("WorldId")
 0325                        .OnDelete(DeleteBehavior.Restrict)
 0326                        .IsRequired();
 0327
 0328                    b.Navigation("Owner");
 0329
 0330                    b.Navigation("World");
 0331                });
 332
 0333            modelBuilder.Entity("Chronicis.Shared.Models.CampaignMember", b =>
 0334                {
 0335                    b.HasOne("Chronicis.Shared.Models.Campaign", "Campaign")
 0336                        .WithMany("Members")
 0337                        .HasForeignKey("CampaignId")
 0338                        .OnDelete(DeleteBehavior.Cascade)
 0339                        .IsRequired();
 0340
 0341                    b.HasOne("Chronicis.Shared.Models.User", "User")
 0342                        .WithMany("CampaignMemberships")
 0343                        .HasForeignKey("UserId")
 0344                        .OnDelete(DeleteBehavior.Cascade)
 0345                        .IsRequired();
 0346
 0347                    b.Navigation("Campaign");
 0348
 0349                    b.Navigation("User");
 0350                });
 351
 0352            modelBuilder.Entity("Chronicis.Shared.Models.World", b =>
 0353                {
 0354                    b.HasOne("Chronicis.Shared.Models.User", "Owner")
 0355                        .WithMany("OwnedWorlds")
 0356                        .HasForeignKey("OwnerId")
 0357                        .OnDelete(DeleteBehavior.Restrict)
 0358                        .IsRequired();
 0359
 0360                    b.Navigation("Owner");
 0361                });
 362
 0363            modelBuilder.Entity("Chronicis.Shared.Models.Article", b =>
 0364                {
 0365                    b.Navigation("Children");
 0366                });
 367
 0368            modelBuilder.Entity("Chronicis.Shared.Models.Campaign", b =>
 0369                {
 0370                    b.Navigation("Articles");
 0371
 0372                    b.Navigation("Members");
 0373                });
 374
 0375            modelBuilder.Entity("Chronicis.Shared.Models.User", b =>
 0376                {
 0377                    b.Navigation("CampaignMemberships");
 0378
 0379                    b.Navigation("CreatedArticles");
 0380
 0381                    b.Navigation("ModifiedArticles");
 0382
 0383                    b.Navigation("OwnedCampaigns");
 0384
 0385                    b.Navigation("OwnedCharacters");
 0386
 0387                    b.Navigation("OwnedWorlds");
 0388                });
 389
 0390            modelBuilder.Entity("Chronicis.Shared.Models.World", b =>
 0391                {
 0392                    b.Navigation("Articles");
 0393
 0394                    b.Navigation("Campaigns");
 0395                });
 396#pragma warning restore 612, 618
 0397        }
 398    }
 399}