< Summary

Line coverage
0%
Covered lines: 0
Uncovered lines: 757
Coverable lines: 757
Total lines: 851
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/20251220211327_InitialGuidSchema.cs

#LineLine coverage
 1using Microsoft.EntityFrameworkCore.Migrations;
 2
 3#nullable disable
 4
 5namespace Chronicis.Api.Migrations
 6{
 7    /// <inheritdoc />
 8    public partial class InitialGuidSchema : Migration
 9    {
 10        /// <inheritdoc />
 11        protected override void Up(MigrationBuilder migrationBuilder)
 12        {
 013            migrationBuilder.CreateTable(
 014                name: "Users",
 015                columns: table => new
 016                {
 017                    Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
 018                    Auth0UserId = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: false),
 019                    Email = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: false),
 020                    DisplayName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false),
 021                    AvatarUrl = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
 022                    CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
 023                    LastLoginAt = table.Column<DateTime>(type: "datetime2", nullable: false)
 024                },
 025                constraints: table =>
 026                {
 027                    table.PrimaryKey("PK_Users", x => x.Id);
 028                });
 29
 030            migrationBuilder.CreateTable(
 031                name: "Worlds",
 032                columns: table => new
 033                {
 034                    Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
 035                    Name = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false),
 036                    Description = table.Column<string>(type: "nvarchar(1000)", maxLength: 1000, nullable: true),
 037                    OwnerId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
 038                    CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false)
 039                },
 040                constraints: table =>
 041                {
 042                    table.PrimaryKey("PK_Worlds", x => x.Id);
 043                    table.ForeignKey(
 044                        name: "FK_Worlds_Users_OwnerId",
 045                        column: x => x.OwnerId,
 046                        principalTable: "Users",
 047                        principalColumn: "Id",
 048                        onDelete: ReferentialAction.Restrict);
 049                });
 50
 051            migrationBuilder.CreateTable(
 052                name: "Campaigns",
 053                columns: table => new
 054                {
 055                    Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
 056                    WorldId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
 057                    Name = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false),
 058                    Description = table.Column<string>(type: "nvarchar(1000)", maxLength: 1000, nullable: true),
 059                    OwnerId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
 060                    CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
 061                    StartedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
 062                    EndedAt = table.Column<DateTime>(type: "datetime2", nullable: true)
 063                },
 064                constraints: table =>
 065                {
 066                    table.PrimaryKey("PK_Campaigns", x => x.Id);
 067                    table.ForeignKey(
 068                        name: "FK_Campaigns_Users_OwnerId",
 069                        column: x => x.OwnerId,
 070                        principalTable: "Users",
 071                        principalColumn: "Id",
 072                        onDelete: ReferentialAction.Restrict);
 073                    table.ForeignKey(
 074                        name: "FK_Campaigns_Worlds_WorldId",
 075                        column: x => x.WorldId,
 076                        principalTable: "Worlds",
 077                        principalColumn: "Id",
 078                        onDelete: ReferentialAction.Restrict);
 079                });
 80
 081            migrationBuilder.CreateTable(
 082                name: "Articles",
 083                columns: table => new
 084                {
 085                    Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
 086                    ParentId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
 087                    WorldId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
 088                    CampaignId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
 089                    Title = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: false),
 090                    Slug = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false),
 091                    Body = table.Column<string>(type: "nvarchar(max)", nullable: true),
 092                    IconEmoji = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
 093                    Type = table.Column<int>(type: "int", nullable: false),
 094                    Visibility = table.Column<int>(type: "int", nullable: false),
 095                    CreatedBy = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
 096                    LastModifiedBy = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
 097                    CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
 098                    ModifiedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
 099                    SessionDate = table.Column<DateTime>(type: "datetime2", nullable: true),
 0100                    InGameDate = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true),
 0101                    PlayerId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
 0102                    AISummary = table.Column<string>(type: "nvarchar(max)", nullable: true),
 0103                    AISummaryGeneratedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
 0104                    EffectiveDate = table.Column<DateTime>(type: "datetime2", nullable: false)
 0105                },
 0106                constraints: table =>
 0107                {
 0108                    table.PrimaryKey("PK_Articles", x => x.Id);
 0109                    table.ForeignKey(
 0110                        name: "FK_Articles_Articles_ParentId",
 0111                        column: x => x.ParentId,
 0112                        principalTable: "Articles",
 0113                        principalColumn: "Id",
 0114                        onDelete: ReferentialAction.Restrict);
 0115                    table.ForeignKey(
 0116                        name: "FK_Articles_Campaigns_CampaignId",
 0117                        column: x => x.CampaignId,
 0118                        principalTable: "Campaigns",
 0119                        principalColumn: "Id",
 0120                        onDelete: ReferentialAction.Restrict);
 0121                    table.ForeignKey(
 0122                        name: "FK_Articles_Users_CreatedBy",
 0123                        column: x => x.CreatedBy,
 0124                        principalTable: "Users",
 0125                        principalColumn: "Id",
 0126                        onDelete: ReferentialAction.Restrict);
 0127                    table.ForeignKey(
 0128                        name: "FK_Articles_Users_LastModifiedBy",
 0129                        column: x => x.LastModifiedBy,
 0130                        principalTable: "Users",
 0131                        principalColumn: "Id",
 0132                        onDelete: ReferentialAction.Restrict);
 0133                    table.ForeignKey(
 0134                        name: "FK_Articles_Users_PlayerId",
 0135                        column: x => x.PlayerId,
 0136                        principalTable: "Users",
 0137                        principalColumn: "Id",
 0138                        onDelete: ReferentialAction.Restrict);
 0139                    table.ForeignKey(
 0140                        name: "FK_Articles_Worlds_WorldId",
 0141                        column: x => x.WorldId,
 0142                        principalTable: "Worlds",
 0143                        principalColumn: "Id",
 0144                        onDelete: ReferentialAction.Restrict);
 0145                });
 146
 0147            migrationBuilder.CreateTable(
 0148                name: "CampaignMembers",
 0149                columns: table => new
 0150                {
 0151                    Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
 0152                    CampaignId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
 0153                    UserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
 0154                    Role = table.Column<int>(type: "int", nullable: false),
 0155                    JoinedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
 0156                    CharacterName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true)
 0157                },
 0158                constraints: table =>
 0159                {
 0160                    table.PrimaryKey("PK_CampaignMembers", x => x.Id);
 0161                    table.ForeignKey(
 0162                        name: "FK_CampaignMembers_Campaigns_CampaignId",
 0163                        column: x => x.CampaignId,
 0164                        principalTable: "Campaigns",
 0165                        principalColumn: "Id",
 0166                        onDelete: ReferentialAction.Cascade);
 0167                    table.ForeignKey(
 0168                        name: "FK_CampaignMembers_Users_UserId",
 0169                        column: x => x.UserId,
 0170                        principalTable: "Users",
 0171                        principalColumn: "Id",
 0172                        onDelete: ReferentialAction.Cascade);
 0173                });
 174
 0175            migrationBuilder.CreateTable(
 0176                name: "Hashtags",
 0177                columns: table => new
 0178                {
 0179                    Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
 0180                    Name = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false),
 0181                    LinkedArticleId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
 0182                    CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false)
 0183                },
 0184                constraints: table =>
 0185                {
 0186                    table.PrimaryKey("PK_Hashtags", x => x.Id);
 0187                    table.ForeignKey(
 0188                        name: "FK_Hashtags_Articles_LinkedArticleId",
 0189                        column: x => x.LinkedArticleId,
 0190                        principalTable: "Articles",
 0191                        principalColumn: "Id",
 0192                        onDelete: ReferentialAction.SetNull);
 0193                });
 194
 0195            migrationBuilder.CreateTable(
 0196                name: "ArticleHashtags",
 0197                columns: table => new
 0198                {
 0199                    Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
 0200                    ArticleId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
 0201                    HashtagId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
 0202                    Position = table.Column<int>(type: "int", nullable: false),
 0203                    CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false)
 0204                },
 0205                constraints: table =>
 0206                {
 0207                    table.PrimaryKey("PK_ArticleHashtags", x => x.Id);
 0208                    table.ForeignKey(
 0209                        name: "FK_ArticleHashtags_Articles_ArticleId",
 0210                        column: x => x.ArticleId,
 0211                        principalTable: "Articles",
 0212                        principalColumn: "Id",
 0213                        onDelete: ReferentialAction.Cascade);
 0214                    table.ForeignKey(
 0215                        name: "FK_ArticleHashtags_Hashtags_HashtagId",
 0216                        column: x => x.HashtagId,
 0217                        principalTable: "Hashtags",
 0218                        principalColumn: "Id",
 0219                        onDelete: ReferentialAction.Cascade);
 0220                });
 221
 0222            migrationBuilder.CreateIndex(
 0223                name: "IX_ArticleHashtags_ArticleId_HashtagId",
 0224                table: "ArticleHashtags",
 0225                columns: new[] { "ArticleId", "HashtagId" },
 0226                unique: true);
 227
 0228            migrationBuilder.CreateIndex(
 0229                name: "IX_ArticleHashtags_HashtagId",
 0230                table: "ArticleHashtags",
 0231                column: "HashtagId");
 232
 0233            migrationBuilder.CreateIndex(
 0234                name: "IX_Articles_CampaignId",
 0235                table: "Articles",
 0236                column: "CampaignId");
 237
 0238            migrationBuilder.CreateIndex(
 0239                name: "IX_Articles_CreatedBy",
 0240                table: "Articles",
 0241                column: "CreatedBy");
 242
 0243            migrationBuilder.CreateIndex(
 0244                name: "IX_Articles_LastModifiedBy",
 0245                table: "Articles",
 0246                column: "LastModifiedBy");
 247
 0248            migrationBuilder.CreateIndex(
 0249                name: "IX_Articles_ParentId",
 0250                table: "Articles",
 0251                column: "ParentId");
 252
 0253            migrationBuilder.CreateIndex(
 0254                name: "IX_Articles_ParentId_Slug",
 0255                table: "Articles",
 0256                columns: new[] { "ParentId", "Slug" },
 0257                unique: true,
 0258                filter: "[ParentId] IS NOT NULL");
 259
 0260            migrationBuilder.CreateIndex(
 0261                name: "IX_Articles_PlayerId",
 0262                table: "Articles",
 0263                column: "PlayerId");
 264
 0265            migrationBuilder.CreateIndex(
 0266                name: "IX_Articles_Slug_Root",
 0267                table: "Articles",
 0268                column: "Slug",
 0269                unique: true,
 0270                filter: "[ParentId] IS NULL");
 271
 0272            migrationBuilder.CreateIndex(
 0273                name: "IX_Articles_Title",
 0274                table: "Articles",
 0275                column: "Title");
 276
 0277            migrationBuilder.CreateIndex(
 0278                name: "IX_Articles_Type",
 0279                table: "Articles",
 0280                column: "Type");
 281
 0282            migrationBuilder.CreateIndex(
 0283                name: "IX_Articles_WorldId",
 0284                table: "Articles",
 0285                column: "WorldId");
 286
 0287            migrationBuilder.CreateIndex(
 0288                name: "IX_CampaignMembers_CampaignId_UserId",
 0289                table: "CampaignMembers",
 0290                columns: new[] { "CampaignId", "UserId" },
 0291                unique: true);
 292
 0293            migrationBuilder.CreateIndex(
 0294                name: "IX_CampaignMembers_UserId",
 0295                table: "CampaignMembers",
 0296                column: "UserId");
 297
 0298            migrationBuilder.CreateIndex(
 0299                name: "IX_Campaigns_OwnerId",
 0300                table: "Campaigns",
 0301                column: "OwnerId");
 302
 0303            migrationBuilder.CreateIndex(
 0304                name: "IX_Campaigns_WorldId",
 0305                table: "Campaigns",
 0306                column: "WorldId");
 307
 0308            migrationBuilder.CreateIndex(
 0309                name: "IX_Hashtags_LinkedArticleId",
 0310                table: "Hashtags",
 0311                column: "LinkedArticleId");
 312
 0313            migrationBuilder.CreateIndex(
 0314                name: "IX_Hashtags_Name",
 0315                table: "Hashtags",
 0316                column: "Name",
 0317                unique: true);
 318
 0319            migrationBuilder.CreateIndex(
 0320                name: "IX_Users_Auth0UserId",
 0321                table: "Users",
 0322                column: "Auth0UserId",
 0323                unique: true);
 324
 0325            migrationBuilder.CreateIndex(
 0326                name: "IX_Users_Email",
 0327                table: "Users",
 0328                column: "Email");
 329
 0330            migrationBuilder.CreateIndex(
 0331                name: "IX_Worlds_OwnerId",
 0332                table: "Worlds",
 0333                column: "OwnerId");
 0334        }
 335
 336        /// <inheritdoc />
 337        protected override void Down(MigrationBuilder migrationBuilder)
 338        {
 0339            migrationBuilder.DropTable(
 0340                name: "ArticleHashtags");
 341
 0342            migrationBuilder.DropTable(
 0343                name: "CampaignMembers");
 344
 0345            migrationBuilder.DropTable(
 0346                name: "Hashtags");
 347
 0348            migrationBuilder.DropTable(
 0349                name: "Articles");
 350
 0351            migrationBuilder.DropTable(
 0352                name: "Campaigns");
 353
 0354            migrationBuilder.DropTable(
 0355                name: "Worlds");
 356
 0357            migrationBuilder.DropTable(
 0358                name: "Users");
 0359        }
 360    }
 361}

/home/runner/work/chronicis/chronicis/src/Chronicis.Api/Migrations/20251220211327_InitialGuidSchema.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("20251220211327_InitialGuidSchema")]
 16    partial class InitialGuidSchema
 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.ArticleHashtag", b =>
 0129                {
 0130                    b.Property<Guid>("Id")
 0131                        .ValueGeneratedOnAdd()
 0132                        .HasColumnType("uniqueidentifier");
 0133
 0134                    b.Property<Guid>("ArticleId")
 0135                        .HasColumnType("uniqueidentifier");
 0136
 0137                    b.Property<DateTime>("CreatedAt")
 0138                        .HasColumnType("datetime2");
 0139
 0140                    b.Property<Guid>("HashtagId")
 0141                        .HasColumnType("uniqueidentifier");
 0142
 0143                    b.Property<int>("Position")
 0144                        .HasColumnType("int");
 0145
 0146                    b.HasKey("Id");
 0147
 0148                    b.HasIndex("HashtagId");
 0149
 0150                    b.HasIndex("ArticleId", "HashtagId")
 0151                        .IsUnique();
 0152
 0153                    b.ToTable("ArticleHashtags");
 0154                });
 155
 0156            modelBuilder.Entity("Chronicis.Shared.Models.Campaign", b =>
 0157                {
 0158                    b.Property<Guid>("Id")
 0159                        .ValueGeneratedOnAdd()
 0160                        .HasColumnType("uniqueidentifier");
 0161
 0162                    b.Property<DateTime>("CreatedAt")
 0163                        .HasColumnType("datetime2");
 0164
 0165                    b.Property<string>("Description")
 0166                        .HasMaxLength(1000)
 0167                        .HasColumnType("nvarchar(1000)");
 0168
 0169                    b.Property<DateTime?>("EndedAt")
 0170                        .HasColumnType("datetime2");
 0171
 0172                    b.Property<string>("Name")
 0173                        .IsRequired()
 0174                        .HasMaxLength(200)
 0175                        .HasColumnType("nvarchar(200)");
 0176
 0177                    b.Property<Guid>("OwnerId")
 0178                        .HasColumnType("uniqueidentifier");
 0179
 0180                    b.Property<DateTime?>("StartedAt")
 0181                        .HasColumnType("datetime2");
 0182
 0183                    b.Property<Guid>("WorldId")
 0184                        .HasColumnType("uniqueidentifier");
 0185
 0186                    b.HasKey("Id");
 0187
 0188                    b.HasIndex("OwnerId");
 0189
 0190                    b.HasIndex("WorldId");
 0191
 0192                    b.ToTable("Campaigns");
 0193                });
 194
 0195            modelBuilder.Entity("Chronicis.Shared.Models.CampaignMember", b =>
 0196                {
 0197                    b.Property<Guid>("Id")
 0198                        .ValueGeneratedOnAdd()
 0199                        .HasColumnType("uniqueidentifier");
 0200
 0201                    b.Property<Guid>("CampaignId")
 0202                        .HasColumnType("uniqueidentifier");
 0203
 0204                    b.Property<string>("CharacterName")
 0205                        .HasMaxLength(100)
 0206                        .HasColumnType("nvarchar(100)");
 0207
 0208                    b.Property<DateTime>("JoinedAt")
 0209                        .HasColumnType("datetime2");
 0210
 0211                    b.Property<int>("Role")
 0212                        .HasColumnType("int");
 0213
 0214                    b.Property<Guid>("UserId")
 0215                        .HasColumnType("uniqueidentifier");
 0216
 0217                    b.HasKey("Id");
 0218
 0219                    b.HasIndex("UserId");
 0220
 0221                    b.HasIndex("CampaignId", "UserId")
 0222                        .IsUnique();
 0223
 0224                    b.ToTable("CampaignMembers");
 0225                });
 226
 0227            modelBuilder.Entity("Chronicis.Shared.Models.Hashtag", b =>
 0228                {
 0229                    b.Property<Guid>("Id")
 0230                        .ValueGeneratedOnAdd()
 0231                        .HasColumnType("uniqueidentifier");
 0232
 0233                    b.Property<DateTime>("CreatedAt")
 0234                        .HasColumnType("datetime2");
 0235
 0236                    b.Property<Guid?>("LinkedArticleId")
 0237                        .HasColumnType("uniqueidentifier");
 0238
 0239                    b.Property<string>("Name")
 0240                        .IsRequired()
 0241                        .HasMaxLength(100)
 0242                        .HasColumnType("nvarchar(100)");
 0243
 0244                    b.HasKey("Id");
 0245
 0246                    b.HasIndex("LinkedArticleId");
 0247
 0248                    b.HasIndex("Name")
 0249                        .IsUnique();
 0250
 0251                    b.ToTable("Hashtags");
 0252                });
 253
 0254            modelBuilder.Entity("Chronicis.Shared.Models.User", b =>
 0255                {
 0256                    b.Property<Guid>("Id")
 0257                        .ValueGeneratedOnAdd()
 0258                        .HasColumnType("uniqueidentifier");
 0259
 0260                    b.Property<string>("Auth0UserId")
 0261                        .IsRequired()
 0262                        .HasMaxLength(256)
 0263                        .HasColumnType("nvarchar(256)");
 0264
 0265                    b.Property<string>("AvatarUrl")
 0266                        .HasMaxLength(500)
 0267                        .HasColumnType("nvarchar(500)");
 0268
 0269                    b.Property<DateTime>("CreatedAt")
 0270                        .HasColumnType("datetime2");
 0271
 0272                    b.Property<string>("DisplayName")
 0273                        .IsRequired()
 0274                        .HasMaxLength(100)
 0275                        .HasColumnType("nvarchar(100)");
 0276
 0277                    b.Property<string>("Email")
 0278                        .IsRequired()
 0279                        .HasMaxLength(256)
 0280                        .HasColumnType("nvarchar(256)");
 0281
 0282                    b.Property<DateTime>("LastLoginAt")
 0283                        .HasColumnType("datetime2");
 0284
 0285                    b.HasKey("Id");
 0286
 0287                    b.HasIndex("Auth0UserId")
 0288                        .IsUnique();
 0289
 0290                    b.HasIndex("Email");
 0291
 0292                    b.ToTable("Users");
 0293                });
 294
 0295            modelBuilder.Entity("Chronicis.Shared.Models.World", b =>
 0296                {
 0297                    b.Property<Guid>("Id")
 0298                        .ValueGeneratedOnAdd()
 0299                        .HasColumnType("uniqueidentifier");
 0300
 0301                    b.Property<DateTime>("CreatedAt")
 0302                        .HasColumnType("datetime2");
 0303
 0304                    b.Property<string>("Description")
 0305                        .HasMaxLength(1000)
 0306                        .HasColumnType("nvarchar(1000)");
 0307
 0308                    b.Property<string>("Name")
 0309                        .IsRequired()
 0310                        .HasMaxLength(200)
 0311                        .HasColumnType("nvarchar(200)");
 0312
 0313                    b.Property<Guid>("OwnerId")
 0314                        .HasColumnType("uniqueidentifier");
 0315
 0316                    b.HasKey("Id");
 0317
 0318                    b.HasIndex("OwnerId");
 0319
 0320                    b.ToTable("Worlds");
 0321                });
 322
 0323            modelBuilder.Entity("Chronicis.Shared.Models.Article", b =>
 0324                {
 0325                    b.HasOne("Chronicis.Shared.Models.Campaign", "Campaign")
 0326                        .WithMany("Articles")
 0327                        .HasForeignKey("CampaignId")
 0328                        .OnDelete(DeleteBehavior.Restrict);
 0329
 0330                    b.HasOne("Chronicis.Shared.Models.User", "Creator")
 0331                        .WithMany("CreatedArticles")
 0332                        .HasForeignKey("CreatedBy")
 0333                        .OnDelete(DeleteBehavior.Restrict)
 0334                        .IsRequired();
 0335
 0336                    b.HasOne("Chronicis.Shared.Models.User", "Modifier")
 0337                        .WithMany("ModifiedArticles")
 0338                        .HasForeignKey("LastModifiedBy")
 0339                        .OnDelete(DeleteBehavior.Restrict);
 0340
 0341                    b.HasOne("Chronicis.Shared.Models.Article", "Parent")
 0342                        .WithMany("Children")
 0343                        .HasForeignKey("ParentId")
 0344                        .OnDelete(DeleteBehavior.Restrict);
 0345
 0346                    b.HasOne("Chronicis.Shared.Models.User", "Player")
 0347                        .WithMany("OwnedCharacters")
 0348                        .HasForeignKey("PlayerId")
 0349                        .OnDelete(DeleteBehavior.Restrict);
 0350
 0351                    b.HasOne("Chronicis.Shared.Models.World", "World")
 0352                        .WithMany("Articles")
 0353                        .HasForeignKey("WorldId")
 0354                        .OnDelete(DeleteBehavior.Restrict);
 0355
 0356                    b.Navigation("Campaign");
 0357
 0358                    b.Navigation("Creator");
 0359
 0360                    b.Navigation("Modifier");
 0361
 0362                    b.Navigation("Parent");
 0363
 0364                    b.Navigation("Player");
 0365
 0366                    b.Navigation("World");
 0367                });
 368
 0369            modelBuilder.Entity("Chronicis.Shared.Models.ArticleHashtag", b =>
 0370                {
 0371                    b.HasOne("Chronicis.Shared.Models.Article", "Article")
 0372                        .WithMany("ArticleHashtags")
 0373                        .HasForeignKey("ArticleId")
 0374                        .OnDelete(DeleteBehavior.Cascade)
 0375                        .IsRequired();
 0376
 0377                    b.HasOne("Chronicis.Shared.Models.Hashtag", "Hashtag")
 0378                        .WithMany("ArticleHashtags")
 0379                        .HasForeignKey("HashtagId")
 0380                        .OnDelete(DeleteBehavior.Cascade)
 0381                        .IsRequired();
 0382
 0383                    b.Navigation("Article");
 0384
 0385                    b.Navigation("Hashtag");
 0386                });
 387
 0388            modelBuilder.Entity("Chronicis.Shared.Models.Campaign", b =>
 0389                {
 0390                    b.HasOne("Chronicis.Shared.Models.User", "Owner")
 0391                        .WithMany("OwnedCampaigns")
 0392                        .HasForeignKey("OwnerId")
 0393                        .OnDelete(DeleteBehavior.Restrict)
 0394                        .IsRequired();
 0395
 0396                    b.HasOne("Chronicis.Shared.Models.World", "World")
 0397                        .WithMany("Campaigns")
 0398                        .HasForeignKey("WorldId")
 0399                        .OnDelete(DeleteBehavior.Restrict)
 0400                        .IsRequired();
 0401
 0402                    b.Navigation("Owner");
 0403
 0404                    b.Navigation("World");
 0405                });
 406
 0407            modelBuilder.Entity("Chronicis.Shared.Models.CampaignMember", b =>
 0408                {
 0409                    b.HasOne("Chronicis.Shared.Models.Campaign", "Campaign")
 0410                        .WithMany("Members")
 0411                        .HasForeignKey("CampaignId")
 0412                        .OnDelete(DeleteBehavior.Cascade)
 0413                        .IsRequired();
 0414
 0415                    b.HasOne("Chronicis.Shared.Models.User", "User")
 0416                        .WithMany("CampaignMemberships")
 0417                        .HasForeignKey("UserId")
 0418                        .OnDelete(DeleteBehavior.Cascade)
 0419                        .IsRequired();
 0420
 0421                    b.Navigation("Campaign");
 0422
 0423                    b.Navigation("User");
 0424                });
 425
 0426            modelBuilder.Entity("Chronicis.Shared.Models.Hashtag", b =>
 0427                {
 0428                    b.HasOne("Chronicis.Shared.Models.Article", "LinkedArticle")
 0429                        .WithMany()
 0430                        .HasForeignKey("LinkedArticleId")
 0431                        .OnDelete(DeleteBehavior.SetNull);
 0432
 0433                    b.Navigation("LinkedArticle");
 0434                });
 435
 0436            modelBuilder.Entity("Chronicis.Shared.Models.World", b =>
 0437                {
 0438                    b.HasOne("Chronicis.Shared.Models.User", "Owner")
 0439                        .WithMany("OwnedWorlds")
 0440                        .HasForeignKey("OwnerId")
 0441                        .OnDelete(DeleteBehavior.Restrict)
 0442                        .IsRequired();
 0443
 0444                    b.Navigation("Owner");
 0445                });
 446
 0447            modelBuilder.Entity("Chronicis.Shared.Models.Article", b =>
 0448                {
 0449                    b.Navigation("ArticleHashtags");
 0450
 0451                    b.Navigation("Children");
 0452                });
 453
 0454            modelBuilder.Entity("Chronicis.Shared.Models.Campaign", b =>
 0455                {
 0456                    b.Navigation("Articles");
 0457
 0458                    b.Navigation("Members");
 0459                });
 460
 0461            modelBuilder.Entity("Chronicis.Shared.Models.Hashtag", b =>
 0462                {
 0463                    b.Navigation("ArticleHashtags");
 0464                });
 465
 0466            modelBuilder.Entity("Chronicis.Shared.Models.User", b =>
 0467                {
 0468                    b.Navigation("CampaignMemberships");
 0469
 0470                    b.Navigation("CreatedArticles");
 0471
 0472                    b.Navigation("ModifiedArticles");
 0473
 0474                    b.Navigation("OwnedCampaigns");
 0475
 0476                    b.Navigation("OwnedCharacters");
 0477
 0478                    b.Navigation("OwnedWorlds");
 0479                });
 480
 0481            modelBuilder.Entity("Chronicis.Shared.Models.World", b =>
 0482                {
 0483                    b.Navigation("Articles");
 0484
 0485                    b.Navigation("Campaigns");
 0486                });
 487#pragma warning restore 612, 618
 0488        }
 489    }
 490}