{"path":"NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.cs","purpose":"EF Core migration that updates column types/constraints: increases the ContentHash length and switches certain DateTime columns to use 'timestamp without time zone' (with a Down method to revert).","classification":{"role":"database-config","layer":"data","confidence":0.9,"evidence":["Class derives from Microsoft.EntityFrameworkCore.Migrations.Migration","Namespace NexusReader.Data.Migrations and methods Up/Down altering table columns"]},"className":"IncreaseHashLength","methods":[{"name":"Up","line":12,"endLine":48,"signature":"(migrationBuilder: MigrationBuilder) -> void","purpose":"Apply schema changes: alter several columns (timestamps and the ContentHash length) to new types/constraints.","calls":[],"actions":[{"id":"external-call_14","kind":"external-call","label":"AlterColumn SemanticKnowledgeCache.CreatedAt","line":14,"detail":"migrationBuilder.AlterColumn(name: \"CreatedAt\", table: \"SemanticKnowledgeCache\", type: \"timestamp without time zone\", nullable: false, oldClrType: typeof(DateTime), oldType: \"timestamp with time zone\");","visibility":"detail-only","confidence":0.7},{"id":"external-call_22","kind":"external-call","label":"AlterColumn SemanticKnowledgeCache.ContentHash (increase length)","line":22,"detail":"migrationBuilder.AlterColumn(name: \"ContentHash\", table: \"SemanticKnowledgeCache\", type: \"character varying(128)\", maxLength: 128, nullable: false, oldClrType: typeof(string), oldType: \"character varying(64)\", oldMaxLength: 64);","visibility":"detail-only","confidence":0.7},{"id":"external-call_32","kind":"external-call","label":"AlterColumn Ebooks.LastReadDate (nullable timestamp)","line":32,"detail":"migrationBuilder.AlterColumn(name: \"LastReadDate\", table: \"Ebooks\", type: \"timestamp without time zone\", nullable: true, oldClrType: typeof(DateTime), oldType: \"timestamp with time zone\", oldNullable: true);","visibility":"detail-only","confidence":0.7},{"id":"external-call_41","kind":"external-call","label":"AlterColumn Ebooks.AddedDate","line":41,"detail":"migrationBuilder.AlterColumn(name: \"AddedDate\", table: \"Ebooks\", type: \"timestamp without time zone\", nullable: false, oldClrType: typeof(DateTime), oldType: \"timestamp with time zone\");","visibility":"detail-only","confidence":0.7}]},{"name":"Down","line":51,"endLine":87,"signature":"(migrationBuilder: MigrationBuilder) -> void","purpose":"Revert schema changes made in Up: restore previous timestamp types and ContentHash length.","calls":[],"actions":[{"id":"external-call_53","kind":"external-call","label":"Revert AlterColumn SemanticKnowledgeCache.CreatedAt","line":53,"detail":"migrationBuilder.AlterColumn(name: \"CreatedAt\", table: \"SemanticKnowledgeCache\", type: \"timestamp with time zone\", nullable: false, oldClrType: typeof(DateTime), oldType: \"timestamp without time zone\");","visibility":"detail-only","confidence":0.7},{"id":"external-call_61","kind":"external-call","label":"Revert AlterColumn SemanticKnowledgeCache.ContentHash (reduce length)","line":61,"detail":"migrationBuilder.AlterColumn(name: \"ContentHash\", table: \"SemanticKnowledgeCache\", type: \"character varying(64)\", maxLength: 64, nullable: false, oldClrType: typeof(string), oldType: \"character varying(128)\", oldMaxLength: 128);","visibility":"detail-only","confidence":0.7},{"id":"external-call_71","kind":"external-call","label":"Revert AlterColumn Ebooks.LastReadDate (nullable timestamp)","line":71,"detail":"migrationBuilder.AlterColumn(name: \"LastReadDate\", table: \"Ebooks\", type: \"timestamp with time zone\", nullable: true, oldClrType: typeof(DateTime), oldType: \"timestamp without time zone\", oldNullable: true);","visibility":"detail-only","confidence":0.7},{"id":"external-call_80","kind":"external-call","label":"Revert AlterColumn Ebooks.AddedDate","line":80,"detail":"migrationBuilder.AlterColumn(name: \"AddedDate\", table: \"Ebooks\", type: \"timestamp with time zone\", nullable: false, oldClrType: typeof(DateTime), oldType: \"timestamp without time zone\");","visibility":"detail-only","confidence":0.7}]}],"types":[{"name":"IncreaseHashLength","kind":"model","line":9,"purpose":"EF Core migration class that applies and reverts schema changes related to timestamp types and ContentHash length.","fields":[]}],"serviceRegistrations":[],"startupActions":[],"dependencies":[],"patterns":["EF Core Migration"],"domainConcepts":["SemanticKnowledgeCache","Ebooks","ContentHash"],"keyDetails":"Primary change: ContentHash column in SemanticKnowledgeCache grows from 64 to 128 characters; several DateTime columns switch between 'timestamp with time zone' and 'timestamp without time zone' depending on Up/Down.","orchestrationMethods":[{"name":"Up","line":12,"confidence":0.93,"reason":"Contains 4 architectural actions relevant to business execution.","actionKinds":["external-call"],"evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.cs"]},{"name":"Down","line":51,"confidence":0.93,"reason":"Contains 4 architectural actions relevant to business execution.","actionKinds":["external-call"],"evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.cs"]}],"typedContracts":[{"name":"IncreaseHashLength","kind":"model","line":9,"fieldCount":0,"evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.cs"]}],"persistenceInteractions":[],"externalInteractions":[{"methodName":"Up","line":14,"kind":"external-call","detail":"migrationBuilder.AlterColumn(name: \"CreatedAt\", table: \"SemanticKnowledgeCache\", type: \"timestamp without time zone\", nullable: false, oldClrType: typeof(DateTime), oldType: \"timestamp with time zone\");","evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.cs"]},{"methodName":"Up","line":22,"kind":"external-call","detail":"migrationBuilder.AlterColumn(name: \"ContentHash\", table: \"SemanticKnowledgeCache\", type: \"character varying(128)\", maxLength: 128, nullable: false, oldClrType: typeof(string), oldType: \"character varying(64)\", oldMaxLength: 64);","evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.cs"]},{"methodName":"Up","line":32,"kind":"external-call","detail":"migrationBuilder.AlterColumn(name: \"LastReadDate\", table: \"Ebooks\", type: \"timestamp without time zone\", nullable: true, oldClrType: typeof(DateTime), oldType: \"timestamp with time zone\", oldNullable: true);","evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.cs"]},{"methodName":"Up","line":41,"kind":"external-call","detail":"migrationBuilder.AlterColumn(name: \"AddedDate\", table: \"Ebooks\", type: \"timestamp without time zone\", nullable: false, oldClrType: typeof(DateTime), oldType: \"timestamp with time zone\");","evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.cs"]},{"methodName":"Down","line":53,"kind":"external-call","detail":"migrationBuilder.AlterColumn(name: \"CreatedAt\", table: \"SemanticKnowledgeCache\", type: \"timestamp with time zone\", nullable: false, oldClrType: typeof(DateTime), oldType: \"timestamp without time zone\");","evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.cs"]},{"methodName":"Down","line":61,"kind":"external-call","detail":"migrationBuilder.AlterColumn(name: \"ContentHash\", table: \"SemanticKnowledgeCache\", type: \"character varying(64)\", maxLength: 64, nullable: false, oldClrType: typeof(string), oldType: \"character varying(128)\", oldMaxLength: 128);","evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.cs"]},{"methodName":"Down","line":71,"kind":"external-call","detail":"migrationBuilder.AlterColumn(name: \"LastReadDate\", table: \"Ebooks\", type: \"timestamp with time zone\", nullable: true, oldClrType: typeof(DateTime), oldType: \"timestamp without time zone\", oldNullable: true);","evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.cs"]},{"methodName":"Down","line":80,"kind":"external-call","detail":"migrationBuilder.AlterColumn(name: \"AddedDate\", table: \"Ebooks\", type: \"timestamp with time zone\", nullable: false, oldClrType: typeof(DateTime), oldType: \"timestamp without time zone\");","evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.cs"]}],"evidenceAnchors":[{"kind":"orchestration-method","label":"Up","line":12,"summary":"Contains 4 architectural actions relevant to business execution.","confidence":0.93,"evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.cs"]},{"kind":"orchestration-method","label":"Down","line":51,"summary":"Contains 4 architectural actions relevant to business execution.","confidence":0.93,"evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.cs"]},{"kind":"typed-contract","label":"IncreaseHashLength","line":9,"summary":"model with 0 fields.","confidence":0.8,"evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.cs"]},{"kind":"external-call","label":"Up","line":14,"summary":"migrationBuilder.AlterColumn(name: \"CreatedAt\", table: \"SemanticKnowledgeCache\", type: \"timestamp without time zone\", nullable: false, oldClrType: typeof(DateTime), oldType: \"timestamp with time zone\");","confidence":0.8,"evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.cs"]},{"kind":"external-call","label":"Up","line":22,"summary":"migrationBuilder.AlterColumn(name: \"ContentHash\", table: \"SemanticKnowledgeCache\", type: \"character varying(128)\", maxLength: 128, nullable: false, oldClrType: typeof(string), oldType: \"character varying(64)\", oldMaxLength: 64);","confidence":0.8,"evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.cs"]},{"kind":"external-call","label":"Up","line":32,"summary":"migrationBuilder.AlterColumn(name: \"LastReadDate\", table: \"Ebooks\", type: \"timestamp without time zone\", nullable: true, oldClrType: typeof(DateTime), oldType: \"timestamp with time zone\", oldNullable: true);","confidence":0.8,"evidencePaths":["NexusReader.Data/Migrations/20260428185239_IncreaseHashLength.cs"]}],"cacheMetadata":{"schemaVersion":2,"analysisVersion":"2026-05-23.cache-v1","contentChecksum":"2640eff1885e0880d6ff53a5dad53e5d3977cc6709eb23fdbc1f1c39349dfe7f","sourceByteSize":3248,"analyzedAt":"2026-05-23T16:23:37.750Z","technology":"dotnet"}}