{"path":"NexusReader.Data/Migrations/20260429080302_AddQuizResults.cs","purpose":"EF Core migration that adds a new QuizResults table (with columns, PK, FK to AspNetUsers, and an index) and provides rollback to drop it.","classification":{"role":"database-config","layer":"data","confidence":0.78,"evidence":["class inherits Microsoft.EntityFrameworkCore.Migrations.Migration","calls migrationBuilder.CreateTable and DropTable","namespace NexusReader.Data.Migrations"]},"className":"AddQuizResults","methods":[{"name":"Up","line":12,"endLine":40,"signature":"(migrationBuilder: MigrationBuilder) -> void","purpose":"Creates the QuizResults table with columns, primary key, foreign key to AspNetUsers (cascade) and an index on UserId.","calls":[],"actions":[{"id":"create-table_14","kind":"mapping","label":"Creates QuizResults table","line":14,"detail":"migrationBuilder.CreateTable(name: \"QuizResults\", columns: ..., constraints: ...)","visibility":"detail-only","confidence":0.7},{"id":"define-columns_16","kind":"mapping","label":"Defines columns for QuizResults","line":16,"detail":"Id (Guid, not null), UserId (string, not null), Topic (string, not null), Score (int, not null), TotalQuestions (int, not null), CompletedDate (DateTime, not null)","visibility":"detail-only","confidence":0.7},{"id":"primary-key_27","kind":"mapping","label":"Sets PK on Id","line":27,"detail":"table.PrimaryKey(\"PK_QuizResults\", x => x.Id)","visibility":"detail-only","confidence":0.7},{"id":"foreign-key_28","kind":"mapping","label":"Adds FK to AspNetUsers.UserId with cascade delete","line":28,"detail":"FK_QuizResults_AspNetUsers_UserId -> principalTable: \"AspNetUsers\", principalColumn: \"Id\", onDelete: ReferentialAction.Cascade","visibility":"detail-only","confidence":0.7},{"id":"create-index_36","kind":"mapping","label":"Creates index on UserId","line":36,"detail":"migrationBuilder.CreateIndex(name: \"IX_QuizResults_UserId\", table: \"QuizResults\", column: \"UserId\")","visibility":"detail-only","confidence":0.7}]},{"name":"Down","line":43,"endLine":47,"signature":"(migrationBuilder: MigrationBuilder) -> void","purpose":"Drops the QuizResults table to rollback the migration.","calls":[],"actions":[{"id":"drop-table_45","kind":"mapping","label":"Drops QuizResults table","line":45,"detail":"migrationBuilder.DropTable(name: \"QuizResults\")","visibility":"detail-only","confidence":0.7}]}],"types":[{"name":"AddQuizResults","kind":"model","line":9,"purpose":"EF Core Migration class that applies schema changes to add QuizResults and rollback.","fields":[]},{"name":"QuizResults (table schema)","kind":"entity","line":14,"purpose":"Represents the database table schema created by this migration.","fields":[{"name":"Id","type":"Guid","required":true,"line":18,"description":"Primary key column (uuid)"},{"name":"UserId","type":"string","required":true,"line":19,"description":"FK to AspNetUsers.Id (text), cascade on delete"},{"name":"Topic","type":"string","required":true,"line":20,"description":"Topic of the quiz (text)"},{"name":"Score","type":"int","required":true,"line":21,"description":"Score achieved (integer)"},{"name":"TotalQuestions","type":"int","required":true,"line":22,"description":"Total number of questions in the quiz (integer)"},{"name":"CompletedDate","type":"DateTime","required":true,"line":23,"description":"When the quiz was completed (timestamp without time zone)"}]}],"serviceRegistrations":[],"startupActions":[],"dependencies":[],"patterns":["EF Core Migration"],"domainConcepts":["QuizResult","User (AspNetUsers)"],"keyDetails":"Adds QuizResults table with PK Id, FK UserId -> AspNetUsers.Id (cascade), and an index on UserId to support lookups by user.","orchestrationMethods":[],"typedContracts":[{"name":"AddQuizResults","kind":"model","line":9,"fieldCount":0,"evidencePaths":["NexusReader.Data/Migrations/20260429080302_AddQuizResults.cs"]},{"name":"QuizResults (table schema)","kind":"entity","line":14,"fieldCount":6,"evidencePaths":["NexusReader.Data/Migrations/20260429080302_AddQuizResults.cs"]}],"persistenceInteractions":[],"externalInteractions":[],"evidenceAnchors":[{"kind":"typed-contract","label":"AddQuizResults","line":9,"summary":"model with 0 fields.","confidence":0.8,"evidencePaths":["NexusReader.Data/Migrations/20260429080302_AddQuizResults.cs"]},{"kind":"typed-contract","label":"QuizResults (table schema)","line":14,"summary":"entity with 6 fields.","confidence":0.8,"evidencePaths":["NexusReader.Data/Migrations/20260429080302_AddQuizResults.cs"]}],"cacheMetadata":{"schemaVersion":2,"analysisVersion":"2026-05-23.cache-v1","contentChecksum":"6ed80ba4c4ceea0c28d755fdacbf0d42888cbd551dc4d12f4e338b7833d70537","sourceByteSize":1877,"analyzedAt":"2026-05-23T16:23:59.210Z","technology":"dotnet"}}