{"path":"NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs","purpose":"EF Core auto-generated migration designer for the InitialPostgres migration; describes the target model (tables, columns, keys, indexes, relationships, and provider annotations) for applying the schema to a Postgres database.","classification":{"role":"database-config","layer":"data","confidence":0.86,"evidence":["Class decorated with [Migration(\"20260428184727_InitialPostgres\")] (line 15)","Overrides BuildTargetModel(ModelBuilder) to declare tables, columns, keys, indexes, and relationships (lines 19-375)"]},"className":"InitialPostgres","methods":[{"name":"BuildTargetModel","line":19,"endLine":375,"signature":"(modelBuilder: ModelBuilder) -> void","purpose":"Constructs the EF Core model for the InitialPostgres migration (annotations, entities, properties, keys, indexes, relationships, and navigations).","calls":[],"actions":[{"id":"pragma_21","kind":"mapping","label":"Suppress obsolete warnings around the model building block","line":21,"detail":"#pragma warning disable 612, 618 and restore at line 374","visibility":"detail-only","confidence":0.7},{"id":"annotation_22","kind":"mapping","label":"Set product version and MaxIdentifierLength","line":22,"detail":"modelBuilder.HasAnnotation(\"ProductVersion\",\"10.0.7\").HasAnnotation(\"Relational:MaxIdentifierLength\", 63)","visibility":"detail-only","confidence":0.7},{"id":"provider-extension_26","kind":"mapping","label":"Configure Postgres identity column strategy","line":26,"detail":"NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder)","visibility":"detail-only","confidence":0.7},{"id":"schema-definition_28","kind":"mapping","label":"Defines AspNetRoles entity","line":28,"detail":"Properties: Id (text), ConcurrencyStamp (concurrency token), Name, NormalizedName; primary key on Id; unique index on NormalizedName; maps to AspNetRoles table","visibility":"detail-only","confidence":0.7},{"id":"schema-definition_54","kind":"mapping","label":"Defines AspNetRoleClaims entity","line":54,"detail":"Id integer identity, ClaimType/ClaimValue text, RoleId text required; PK Id; index on RoleId; maps to AspNetRoleClaims","visibility":"detail-only","confidence":0.7},{"id":"schema-definition_79","kind":"mapping","label":"Defines AspNetUserClaims entity","line":79,"detail":"Id integer identity, ClaimType/ClaimValue text, UserId text required; PK Id; index on UserId; maps to AspNetUserClaims","visibility":"detail-only","confidence":0.7},{"id":"schema-definition_104","kind":"mapping","label":"Defines AspNetUserLogins entity","line":104,"detail":"Composite PK (LoginProvider, ProviderKey); ProviderDisplayName, UserId required; index on UserId; maps to AspNetUserLogins","visibility":"detail-only","confidence":0.7},{"id":"schema-definition_126","kind":"mapping","label":"Defines AspNetUserRoles entity","line":126,"detail":"Composite PK (UserId, RoleId); index on RoleId; maps to AspNetUserRoles","visibility":"detail-only","confidence":0.7},{"id":"schema-definition_141","kind":"mapping","label":"Defines AspNetUserTokens entity","line":141,"detail":"Composite PK (UserId, LoginProvider, Name); Value text; maps to AspNetUserTokens","visibility":"detail-only","confidence":0.7},{"id":"schema-definition_160","kind":"mapping","label":"Defines Ebooks table for NexusReader.Domain.Entities.Ebook","line":160,"detail":"Id uuid identity PK, AddedDate timestamptz, Author text required max 255, CoverUrl text, FilePath text required, LastReadDate nullable timestamptz, Title text required max 255, UserId text required; index on UserId; maps to Ebooks","visibility":"detail-only","confidence":0.7},{"id":"schema-definition_200","kind":"mapping","label":"Defines NexusUser (AspNetUsers) entity","line":200,"detail":"User properties for identity + domain fields: AITokenLimit, AITokensUsed, CurrentPlan required, TenantId uuid, other identity columns; PK Id; indexes on NormalizedEmail and unique NormalizedUserName; maps to AspNetUsers","visibility":"detail-only","confidence":0.7},{"id":"schema-definition_277","kind":"mapping","label":"Defines SemanticKnowledgeCache table","line":277,"detail":"ContentHash (PK) varchar(64), CreatedAt timestamptz, JsonData text required, ModelId varchar(50) required, PromptVersion varchar(10) required; unique index on ContentHash; maps to SemanticKnowledgeCache","visibility":"detail-only","confidence":0.7},{"id":"relationship_308","kind":"mapping","label":"Configure Identity relationships (role claims, user claims, logins, roles, tokens)","line":308,"detail":"Sets HasOne/WithMany/HasForeignKey for Identity tables with cascade delete to their role/user parents (e.g., RoleClaim->IdentityRole, UserClaim->NexusUser, UserLogin->NexusUser, UserRole->IdentityRole & NexusUser, UserToken->NexusUser)","visibility":"detail-only","confidence":0.7},{"id":"relationship_359","kind":"mapping","label":"Ebook -> NexusUser relationship and navigation","line":359,"detail":"Ebook.HasOne(User).WithMany(Ebooks).HasForeignKey(UserId).OnDelete(DeleteBehavior.Cascade).IsRequired(); adds navigation 'User'","visibility":"detail-only","confidence":0.7},{"id":"navigation_370","kind":"mapping","label":"Expose NexusUser.Ebooks navigation property","line":370,"detail":"modelBuilder configures NexusUser to have a navigation collection 'Ebooks'","visibility":"detail-only","confidence":0.7}]}],"types":[{"name":"InitialPostgres","kind":"model","line":16,"purpose":"Partial EF Core Migration class representing the InitialPostgres migration; contains BuildTargetModel to describe the schema.","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","Fluent API schema configuration"],"domainConcepts":["Ebook","NexusUser","SemanticKnowledgeCache","ASP.NET Identity (Roles, Claims, Logins, Tokens)"],"keyDetails":"Auto-generated EF Core designer file for an initial Postgres migration; defines schema shape (tables, columns, indexes, PKs, FKs, cascade deletes) and uses Npgsql provider identity extensions. Not an application runtime entrypoint; used by EF migrations to create/update database schema.","orchestrationMethods":[],"typedContracts":[{"name":"InitialPostgres","kind":"model","line":16,"fieldCount":0,"evidencePaths":["NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs"]}],"persistenceInteractions":[],"externalInteractions":[],"evidenceAnchors":[{"kind":"typed-contract","label":"InitialPostgres","line":16,"summary":"model with 0 fields.","confidence":0.8,"evidencePaths":["NexusReader.Data/Migrations/20260428184727_InitialPostgres.Designer.cs"]}],"cacheMetadata":{"schemaVersion":2,"analysisVersion":"2026-05-23.cache-v1","contentChecksum":"1a3afa10adc8e750a1954f205d4ac0cc98ead95c0610874c8271006b68e44dac","sourceByteSize":14060,"analyzedAt":"2026-05-23T16:23:44.466Z","technology":"dotnet"}}