Files
Nexus.Reader/src/.documentation/cache/summaries/NexusReader.Data__Persistence__Migrations__20260514184243_AddDescriptionToEbook.Designer.cs.json
T
2026-05-25 14:02:56 +02:00

1 line
7.6 KiB
JSON

{"path":"NexusReader.Data/Persistence/Migrations/20260514184243_AddDescriptionToEbook.Designer.cs","purpose":"EF Core migration designer for 'AddDescriptionToEbook' that defines the target EF Core model snapshot (tables, columns, keys, indexes, relationships) and seeds subscription plan data for the database migration.","classification":{"role":"database-config","layer":"data","confidence":0.85,"evidence":["Contains an EF Core Migration attribute and DbContext attribute","Implements BuildTargetModel(ModelBuilder) to configure entities, indexes, keys, relationships and seed data"]},"className":"AddDescriptionToEbook","methods":[{"name":"BuildTargetModel","line":20,"endLine":712,"signature":"(modelBuilder: ModelBuilder) -> void","purpose":"Builds the EF Core model snapshot used by this migration: applies annotations, extensions, entity/table/property/index/relationship mappings and data seeding.","calls":[],"actions":[{"id":"pragma_22","kind":"mapping","label":"Disable/restore compiler warnings","line":22,"detail":"#pragma warning disable 612, 618 and #pragma warning restore 612, 618 at end","visibility":"detail-only","confidence":0.7},{"id":"annotation_23","kind":"mapping","label":"Add model annotations","line":23,"detail":"modelBuilder.HasAnnotation(\"ProductVersion\", \"10.0.7\").HasAnnotation(\"Relational:MaxIdentifierLength\", 63)","visibility":"detail-only","confidence":0.7},{"id":"extension-registration_27","kind":"mapping","label":"Register Postgres vector extension","line":27,"detail":"NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, \"vector\")","visibility":"detail-only","confidence":0.7},{"id":"database-behavior_28","kind":"mapping","label":"Configure identity/sequence column behavior","line":28,"detail":"NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder) and multiple UseIdentityByDefaultColumn on integer PK properties","visibility":"detail-only","confidence":0.7},{"id":"schema-definition_30","kind":"mapping","label":"Define Identity tables and ASP.NET Identity properties/indexes","line":30,"detail":"Configures AspNetRoles, AspNetRoleClaims, AspNetUserClaims, AspNetUserLogins, AspNetUserRoles, AspNetUserTokens with properties, keys, indexes and table names","visibility":"detail-only","confidence":0.7},{"id":"index_49","kind":"mapping","label":"Create indexes","line":49,"detail":"Multiple .HasIndex(...) calls across entities creating unique and non-unique indexes (e.g., RoleNameIndex, UserNameIndex, TenantId indexes, ContentHash unique index)","visibility":"detail-only","confidence":0.7},{"id":"schema-definition_162","kind":"mapping","label":"Define domain entity 'Author' table","line":162,"detail":"Defines Authors table with Id (identity), Name required nvarchar(255), primary key and table mapping","visibility":"detail-only","confidence":0.7},{"id":"schema-definition_180","kind":"mapping","label":"Define domain entity 'Ebook' table (adds Description column)","line":180,"detail":"Defines Ebooks table with Guid Id, AddedDate, AuthorId, CoverUrl, Description, FilePath(required), IsReadyForReading, LastChapter, LastChapterIndex, LastReadDate, Progress, TenantId(required), Title(required), UserId(required), keys and indexes","visibility":"detail-only","confidence":0.7},{"id":"schema-definition_243","kind":"mapping","label":"Define KnowledgeUnit and vector column","line":243,"detail":"Defines KnowledgeUnits table with Id, Content, CreatedAt, EbookId (nullable FK), MetadataJson, TenantId, Type, Vector (pgvector) and Version","visibility":"detail-only","confidence":0.7},{"id":"schema-definition_287","kind":"mapping","label":"Define KnowledgeUnitLink table with relation fields","line":287,"detail":"Defines KnowledgeUnitLinks table with integer Id (identity), RelationType, SourceUnitId, TargetUnitId and indexes","visibility":"detail-only","confidence":0.7},{"id":"schema-definition_319","kind":"mapping","label":"Define NexusUser (AspNetUsers) extended fields","line":319,"detail":"Configures AspNetUsers with many custom properties (AIToken limits, LastAiActionDate, TenantId, SubscriptionPlanId defaulting to 1), indexes and table mapping","visibility":"detail-only","confidence":0.7},{"id":"schema-definition_417","kind":"mapping","label":"Define QuizResult table","line":417,"detail":"Configures QuizResults with Id(Guid), CompletedDate, Score, Topic, TotalQuestions, TenantId, UserId and indexes","visibility":"detail-only","confidence":0.7},{"id":"schema-definition_454","kind":"mapping","label":"Define SemanticKnowledgeCache table with vector and unique ContentHash","line":454,"detail":"Configures SemanticKnowledgeCache with ContentHash PK, CreatedAt, JsonData, ModelId, OriginalText, PromptVersion, TenantId, Vector(1536) and unique index on ContentHash","visibility":"detail-only","confidence":0.7},{"id":"schema-definition_499","kind":"mapping","label":"Define SubscriptionPlan table and seed data","line":499,"detail":"Configures SubscriptionPlans table and seeds four plan rows (Free, Basic, Pro, Enterprise) with Id, AITokenLimit, IsUnlimitedTokens, MonthlyPrice, PlanName, StripeProductId","visibility":"detail-only","confidence":0.7},{"id":"foreign-key_572","kind":"mapping","label":"Define foreign key relationships and cascade/restrict behaviors","line":572,"detail":"Sets up relationships such as Ebook->Author (Restrict), Ebook->NexusUser (Cascade), KnowledgeUnit->Ebook (Cascade), KnowledgeUnitLink source/target FK cascade, NexusUser->SubscriptionPlan (Restrict), QuizResult->NexusUser (Cascade)","visibility":"detail-only","confidence":0.7},{"id":"navigation-setup_637","kind":"mapping","label":"Register navigation properties for EF","line":637,"detail":"Calls .Navigation(...) for Author, User, Ebook, IncomingLinks/OutgoingLinks, SubscriptionPlan etc.","visibility":"detail-only","confidence":0.7}]}],"types":[{"name":"AddDescriptionToEbook","kind":"model","line":17,"purpose":"Partial EF Core Migration class that contains the BuildTargetModel snapshot for the 'AddDescriptionToEbook' migration.","fields":[]}],"serviceRegistrations":[],"startupActions":[],"dependencies":["NexusReader.Data/Persistence/AppDbContext.cs","NexusReader.Domain/Entities/Author.cs","NexusReader.Domain/Entities/Ebook.cs","NexusReader.Domain/Entities/KnowledgeUnit.cs","NexusReader.Domain/Entities/KnowledgeUnitLink.cs","NexusReader.Domain/Entities/NexusUser.cs","NexusReader.Domain/Entities/QuizResult.cs","NexusReader.Domain/Entities/SemanticKnowledgeCache.cs","NexusReader.Domain/Entities/SubscriptionPlan.cs"],"patterns":["EF Core Migration","Model Snapshot / Fluent Mapping","Data Seeding"],"domainConcepts":["Ebook","Author","KnowledgeUnit","KnowledgeUnitLink","NexusUser","SubscriptionPlan","SemanticKnowledgeCache","QuizResult","Tenant"],"keyDetails":"This migration snapshot registers the Postgres 'vector' extension (pgvector), configures vector columns for embeddings, extends AspNetUsers with subscription and AI token tracking, and seeds four subscription plans; it also adds a Description column to the Ebook table schema.","orchestrationMethods":[],"typedContracts":[{"name":"AddDescriptionToEbook","kind":"model","line":17,"fieldCount":0,"evidencePaths":["NexusReader.Data/Persistence/Migrations/20260514184243_AddDescriptionToEbook.Designer.cs"]}],"persistenceInteractions":[],"externalInteractions":[],"evidenceAnchors":[{"kind":"typed-contract","label":"AddDescriptionToEbook","line":17,"summary":"model with 0 fields.","confidence":0.8,"evidencePaths":["NexusReader.Data/Persistence/Migrations/20260514184243_AddDescriptionToEbook.Designer.cs"]}],"cacheMetadata":{"schemaVersion":2,"analysisVersion":"2026-05-23.cache-v1","contentChecksum":"d10aafbf1671770c1bb59bd6f0db0261adb81ebb668fde2d6fb5a44df3f93f08","sourceByteSize":26883,"analyzedAt":"2026-05-23T16:26:31.121Z","technology":"dotnet"}}