{"path":"NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.Designer.cs","purpose":"EF Core migration designer for the IncreaseHashLength migration; describes the target EF Core model (entities, properties, indexes, relationships) used by migrations and tooling.","classification":{"role":"database-config","layer":"data","confidence":0.8,"evidence":["Contains [DbContext(typeof(AppDbContext))] and [Migration(\"20260428185239_IncreaseHashLength\")] attributes (lines 14-16)","Implements BuildTargetModel(ModelBuilder) to describe entities, columns, indexes and relationships (line 19)"]},"className":"IncreaseHashLength","methods":[{"name":"BuildTargetModel","line":19,"endLine":375,"signature":"(modelBuilder: ModelBuilder) -> void","purpose":"Populates the EF Core ModelBuilder with entity configurations, annotations, columns, indexes and relationships representing the target schema for this migration.","calls":[],"actions":[{"id":"model-annotation_22","kind":"mapping","label":"Set product version and max identifier length","line":22,"detail":"modelBuilder.HasAnnotation(\"ProductVersion\", \"10.0.7\").HasAnnotation(\"Relational:MaxIdentifierLength\", 63)","visibility":"detail-only","confidence":0.7},{"id":"external-call_26","kind":"external-call","label":"Enable postgresql identity by default columns","line":26,"detail":"NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder) (external Npgsql EF provider)","visibility":"detail-only","confidence":0.7},{"id":"entity-definition_28","kind":"mapping","label":"AspNetRoles (IdentityRole) entity defined","line":28,"detail":"Defines properties Id, ConcurrencyStamp, Name, NormalizedName; key Id; unique index NormalizedName; maps to table AspNetRoles","visibility":"detail-only","confidence":0.7},{"id":"entity-definition_54","kind":"mapping","label":"AspNetRoleClaims (IdentityRoleClaim) entity defined","line":54,"detail":"Defines Id as identity integer, ClaimType, ClaimValue, RoleId (required); key Id; index RoleId; maps to AspNetRoleClaims","visibility":"detail-only","confidence":0.7},{"id":"entity-definition_79","kind":"mapping","label":"AspNetUserClaims (IdentityUserClaim) entity defined","line":79,"detail":"Defines Id as identity integer, ClaimType, ClaimValue, UserId (required); key Id; index UserId; maps to AspNetUserClaims","visibility":"detail-only","confidence":0.7},{"id":"entity-definition_104","kind":"mapping","label":"AspNetUserLogins (IdentityUserLogin) entity defined","line":104,"detail":"Defines composite key LoginProvider+ProviderKey, ProviderDisplayName, UserId (required); index UserId; maps to AspNetUserLogins","visibility":"detail-only","confidence":0.7},{"id":"entity-definition_126","kind":"mapping","label":"AspNetUserRoles (IdentityUserRole) entity defined","line":126,"detail":"Defines composite key UserId+RoleId; index RoleId; maps to AspNetUserRoles","visibility":"detail-only","confidence":0.7},{"id":"entity-definition_141","kind":"mapping","label":"AspNetUserTokens (IdentityUserToken) entity defined","line":141,"detail":"Defines composite key UserId+LoginProvider+Name and Value; maps to AspNetUserTokens","visibility":"detail-only","confidence":0.7},{"id":"entity-definition_160","kind":"mapping","label":"Ebook entity defined","line":160,"detail":"Defines Ebook.Id (Guid, identity on add), AddedDate, Author (required, max 255), CoverUrl, FilePath (required), LastReadDate (nullable), Title (required, max 255), UserId (required); key Id; index UserId; maps to Ebooks","visibility":"detail-only","confidence":0.7},{"id":"entity-definition_200","kind":"mapping","label":"NexusUser entity defined (AspNetUsers customization)","line":200,"detail":"Defines properties including AIToken fields, CurrentPlan (required), Email/NormalizedEmail, PasswordHash, TenantId (Guid), UserName/NormalizedUserName; key Id; indexes on NormalizedEmail and unique NormalizedUserName; maps to AspNetUsers","visibility":"detail-only","confidence":0.7},{"id":"entity-definition_277","kind":"mapping","label":"SemanticKnowledgeCache entity defined","line":277,"detail":"Defines ContentHash (max length 128) as primary key and unique index, CreatedAt, JsonData (required), ModelId (required,max 50), PromptVersion (required,max 10); maps to SemanticKnowledgeCache","visibility":"detail-only","confidence":0.7},{"id":"property-definition_279","kind":"mapping","label":"SemanticKnowledgeCache.ContentHash max length","line":279,"detail":"b.Property(\"ContentHash\").HasMaxLength(128).HasColumnType(\"character varying(128)\")","visibility":"detail-only","confidence":0.7},{"id":"relationship_308","kind":"mapping","label":"Role claim -> Role relationship (FK RoleId)","line":308,"detail":"IdentityRoleClaim.RoleId -> IdentityRole.Id, OnDelete Cascade, required","visibility":"detail-only","confidence":0.7},{"id":"relationship_317","kind":"mapping","label":"User claim -> NexusUser relationship (FK UserId)","line":317,"detail":"IdentityUserClaim.UserId -> NexusUser.Id, OnDelete Cascade, required","visibility":"detail-only","confidence":0.7},{"id":"relationship_326","kind":"mapping","label":"User login -> NexusUser relationship (FK UserId)","line":326,"detail":"IdentityUserLogin.UserId -> NexusUser.Id, OnDelete Cascade, required","visibility":"detail-only","confidence":0.7},{"id":"relationship_335","kind":"mapping","label":"User roles -> Role and NexusUser relationships (FK RoleId, UserId)","line":335,"detail":"IdentityUserRole.RoleId -> IdentityRole.Id and IdentityUserRole.UserId -> NexusUser.Id, OnDelete Cascade, required","visibility":"detail-only","confidence":0.7},{"id":"relationship_350","kind":"mapping","label":"User tokens -> NexusUser relationship (FK UserId)","line":350,"detail":"IdentityUserToken.UserId -> NexusUser.Id, OnDelete Cascade, required","visibility":"detail-only","confidence":0.7},{"id":"relationship_359","kind":"mapping","label":"Ebook -> NexusUser (UserId FK) with navigation","line":359,"detail":"Ebook.HasOne(NexusUser, \"User\").WithMany(\"Ebooks\").HasForeignKey(\"UserId\").OnDelete Cascade; includes navigation User","visibility":"detail-only","confidence":0.7},{"id":"navigation_370","kind":"mapping","label":"NexusUser.Ebooks navigation declared","line":370,"detail":"b.Navigation(\"Ebooks\") on NexusUser","visibility":"detail-only","confidence":0.7}]}],"types":[{"name":"IncreaseHashLength","kind":"model","line":16,"purpose":"Partial migration class representing the IncreaseHashLength EF Core migration and holding the generated BuildTargetModel.","fields":[]}],"serviceRegistrations":[],"startupActions":[],"dependencies":["NexusReader.Data/Persistence/AppDbContext.cs","NexusReader.Domain/Entities/Ebook.cs","NexusReader.Domain/Entities/NexusUser.cs","NexusReader.Domain/Entities/SemanticKnowledgeCache.cs"],"patterns":["EF Core Migration","Entity Configuration (fluent API)"],"domainConcepts":["Ebook","NexusUser","SemanticKnowledgeCache","Identity (AspNetUsers/AspNetRoles)"],"keyDetails":"Defines EF Core model shape for this migration. Notable: SemanticKnowledgeCache.ContentHash is configured with max length 128 (lines 277-305) and is the primary key/unique index; standard ASP.NET Identity tables and Ebook->User relationships are present. The class is auto-generated designer code and is not application logic.","orchestrationMethods":[{"name":"BuildTargetModel","line":19,"confidence":0.57,"reason":"Contains 1 architectural actions relevant to business execution.","actionKinds":["mapping","external-call"],"evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.Designer.cs"]}],"typedContracts":[{"name":"IncreaseHashLength","kind":"model","line":16,"fieldCount":0,"evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.Designer.cs"]}],"persistenceInteractions":[],"externalInteractions":[{"methodName":"BuildTargetModel","line":26,"kind":"external-call","detail":"NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder) (external Npgsql EF provider)","evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.Designer.cs"]}],"evidenceAnchors":[{"kind":"orchestration-method","label":"BuildTargetModel","line":19,"summary":"Contains 1 architectural actions relevant to business execution.","confidence":0.57,"evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.Designer.cs"]},{"kind":"typed-contract","label":"IncreaseHashLength","line":16,"summary":"model with 0 fields.","confidence":0.8,"evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.Designer.cs"]},{"kind":"external-call","label":"BuildTargetModel","line":26,"summary":"NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder) (external Npgsql EF provider)","confidence":0.8,"evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.Designer.cs"]}],"cacheMetadata":{"schemaVersion":2,"analysisVersion":"2026-05-23.cache-v1","contentChecksum":"d87d9046fab5057df4921661f6ff0c8b6946b14b03892002911160d06a8c29d3","sourceByteSize":14077,"analyzedAt":"2026-05-23T16:23:59.857Z","technology":"dotnet"}}