{
  "version": 1,
  "generatedAt": "2026-05-25T11:41:33.166Z",
  "fileId": "file:a32vvn:20260428184727-initialpostgres-cs",
  "executableScope": true,
  "executableSymbolCount": 2,
  "fileNodeId": "file:a32vvn:20260428184727-initialpostgres-cs",
  "symbolNodeIds": [
    "class:1xhm2de:initialpostgres",
    "method:19ym4q4:up",
    "method:1kuci8n:down",
    "type:18g2en:aspnetroles",
    "type:1iyorzj:aspnetusers",
    "type:10b7z70:semanticknowledgecache",
    "type:96fzwh:ebooks",
    "type:1yhkunt:aspnetroleclaims-aspnetuserclaims-aspnetuserlogi"
  ],
  "containmentEdgeIds": [
    "edge:1t4qmxc:contains",
    "edge:pvj3b5:contains",
    "edge:11abbl0:contains",
    "edge:fgcsst:defines-type",
    "edge:956iib:defines-type",
    "edge:6tjdu9:defines-type",
    "edge:1iybo8l:defines-type",
    "edge:dpjn6k:defines-type"
  ],
  "relationshipEdgeIds": [
    "edge:1t4qmxc:contains",
    "edge:pvj3b5:contains",
    "edge:11abbl0:contains",
    "edge:fgcsst:defines-type",
    "edge:956iib:defines-type",
    "edge:6tjdu9:defines-type",
    "edge:1iybo8l:defines-type",
    "edge:dpjn6k:defines-type"
  ],
  "integrationEdgeIds": [],
  "controlFlowFragments": [
    {
      "fragmentId": "method:19ym4q4:up__fragment",
      "ownerFileId": "file:a32vvn:20260428184727-initialpostgres-cs",
      "ownerSymbolId": "method:19ym4q4:up",
      "ownerSymbolName": "Up",
      "entryNodeId": "method:19ym4q4:up__entry",
      "exitNodeIds": [
        "method:19ym4q4:up__implicit_return"
      ],
      "nodes": [
        {
          "id": "method:19ym4q4:up__entry",
          "kind": "entry",
          "label": "Up entry",
          "line": 13,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.99,
          "detail": "Creates database tables, constraints and indexes needed for initial application schema on Postgres (identity tables, semantic cache, ebooks) during migration up."
        },
        {
          "id": "method:19ym4q4:up__action_15_create_table_15__linear",
          "kind": "statement",
          "label": "Create AspNetRoles",
          "line": 15,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7,
          "detail": "migrationBuilder.CreateTable(name: \"AspNetRoles\", columns: { Id, Name, NormalizedName, ConcurrencyStamp }, primary key Id)"
        },
        {
          "id": "method:19ym4q4:up__action_29_create_table_29__linear",
          "kind": "statement",
          "label": "Create AspNetUsers",
          "line": 29,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7,
          "detail": "migrationBuilder.CreateTable(name: \"AspNetUsers\", columns include AITokenLimit, AITokensUsed, TenantId, CurrentPlan, identity fields..., primary key Id)"
        },
        {
          "id": "method:19ym4q4:up__action_58_create_table_58__linear",
          "kind": "statement",
          "label": "Create SemanticKnowledgeCache",
          "line": 58,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7,
          "detail": "migrationBuilder.CreateTable(name: \"SemanticKnowledgeCache\", columns: ContentHash (PK), JsonData, ModelId, PromptVersion, CreatedAt)"
        },
        {
          "id": "method:19ym4q4:up__action_73_create_table_73__linear",
          "kind": "statement",
          "label": "Create AspNetRoleClaims",
          "line": 73,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7,
          "detail": "migrationBuilder.CreateTable(name: \"AspNetRoleClaims\", Id (identity), RoleId, ClaimType, ClaimValue) with FK -> AspNetRoles(Id)"
        },
        {
          "id": "method:19ym4q4:up__action_94_create_table_94__linear",
          "kind": "statement",
          "label": "Create AspNetUserClaims",
          "line": 94,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7,
          "detail": "migrationBuilder.CreateTable(name: \"AspNetUserClaims\", Id (identity), UserId, ClaimType, ClaimValue) with FK -> AspNetUsers(Id)"
        },
        {
          "id": "method:19ym4q4:up__action_115_create_table_115__linear",
          "kind": "statement",
          "label": "Create AspNetUserLogins",
          "line": 115,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7,
          "detail": "migrationBuilder.CreateTable(name: \"AspNetUserLogins\", composite PK(LoginProvider, ProviderKey), UserId) with FK -> AspNetUsers(Id)"
        },
        {
          "id": "method:19ym4q4:up__action_135_create_table_135__linear",
          "kind": "statement",
          "label": "Create AspNetUserRoles",
          "line": 135,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7,
          "detail": "migrationBuilder.CreateTable(name: \"AspNetUserRoles\", composite PK(UserId, RoleId)) with FKs -> AspNetRoles(Id), AspNetUsers(Id)"
        },
        {
          "id": "method:19ym4q4:up__action_159_create_table_159__linear",
          "kind": "statement",
          "label": "Create AspNetUserTokens",
          "line": 159,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7,
          "detail": "migrationBuilder.CreateTable(name: \"AspNetUserTokens\", composite PK(UserId, LoginProvider, Name)) with FK -> AspNetUsers(Id)"
        },
        {
          "id": "method:19ym4q4:up__action_179_create_table_179__linear",
          "kind": "statement",
          "label": "Create Ebooks",
          "line": 179,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7,
          "detail": "migrationBuilder.CreateTable(name: \"Ebooks\", columns: Id (PK, Guid), Title, Author, FilePath, CoverUrl, AddedDate, LastReadDate, UserId) with FK -> AspNetUsers(Id)"
        },
        {
          "id": "method:19ym4q4:up__action_203_create_index_203__linear",
          "kind": "statement",
          "label": "Indexes on identity and domain tables",
          "line": 203,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7,
          "detail": "CreateIndex calls for RoleId, NormalizedName (unique), UserId, NormalizedEmail, NormalizedUserName (unique), Ebooks.UserId, SemanticKnowledgeCache.ContentHash (unique)"
        },
        {
          "id": "method:19ym4q4:up__implicit_return",
          "kind": "return",
          "label": "return",
          "line": 250,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.72,
          "detail": "Implicit method exit inferred from method boundary."
        }
      ],
      "edges": [
        {
          "id": "method:19ym4q4:up__entry__method:19ym4q4:up__action_15_create_table_15__linear",
          "from": "method:19ym4q4:up__entry",
          "to": "method:19ym4q4:up__action_15_create_table_15__linear",
          "kind": "next",
          "line": 15,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7
        },
        {
          "id": "method:19ym4q4:up__action_15_create_table_15__linear__method:19ym4q4:up__action_29_create_table_29__linear",
          "from": "method:19ym4q4:up__action_15_create_table_15__linear",
          "to": "method:19ym4q4:up__action_29_create_table_29__linear",
          "kind": "next",
          "line": 29,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7
        },
        {
          "id": "method:19ym4q4:up__action_29_create_table_29__linear__method:19ym4q4:up__action_58_create_table_58__linear",
          "from": "method:19ym4q4:up__action_29_create_table_29__linear",
          "to": "method:19ym4q4:up__action_58_create_table_58__linear",
          "kind": "next",
          "line": 58,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7
        },
        {
          "id": "method:19ym4q4:up__action_58_create_table_58__linear__method:19ym4q4:up__action_73_create_table_73__linear",
          "from": "method:19ym4q4:up__action_58_create_table_58__linear",
          "to": "method:19ym4q4:up__action_73_create_table_73__linear",
          "kind": "next",
          "line": 73,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7
        },
        {
          "id": "method:19ym4q4:up__action_73_create_table_73__linear__method:19ym4q4:up__action_94_create_table_94__linear",
          "from": "method:19ym4q4:up__action_73_create_table_73__linear",
          "to": "method:19ym4q4:up__action_94_create_table_94__linear",
          "kind": "next",
          "line": 94,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7
        },
        {
          "id": "method:19ym4q4:up__action_94_create_table_94__linear__method:19ym4q4:up__action_115_create_table_115__linear",
          "from": "method:19ym4q4:up__action_94_create_table_94__linear",
          "to": "method:19ym4q4:up__action_115_create_table_115__linear",
          "kind": "next",
          "line": 115,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7
        },
        {
          "id": "method:19ym4q4:up__action_115_create_table_115__linear__method:19ym4q4:up__action_135_create_table_135__linear",
          "from": "method:19ym4q4:up__action_115_create_table_115__linear",
          "to": "method:19ym4q4:up__action_135_create_table_135__linear",
          "kind": "next",
          "line": 135,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7
        },
        {
          "id": "method:19ym4q4:up__action_135_create_table_135__linear__method:19ym4q4:up__action_159_create_table_159__linear",
          "from": "method:19ym4q4:up__action_135_create_table_135__linear",
          "to": "method:19ym4q4:up__action_159_create_table_159__linear",
          "kind": "next",
          "line": 159,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7
        },
        {
          "id": "method:19ym4q4:up__action_159_create_table_159__linear__method:19ym4q4:up__action_179_create_table_179__linear",
          "from": "method:19ym4q4:up__action_159_create_table_159__linear",
          "to": "method:19ym4q4:up__action_179_create_table_179__linear",
          "kind": "next",
          "line": 179,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7
        },
        {
          "id": "method:19ym4q4:up__action_179_create_table_179__linear__method:19ym4q4:up__action_203_create_index_203__linear",
          "from": "method:19ym4q4:up__action_179_create_table_179__linear",
          "to": "method:19ym4q4:up__action_203_create_index_203__linear",
          "kind": "next",
          "line": 203,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7
        },
        {
          "id": "method:19ym4q4:up__action_203_create_index_203__linear__implicit_return",
          "from": "method:19ym4q4:up__action_203_create_index_203__linear",
          "to": "method:19ym4q4:up__implicit_return",
          "kind": "return",
          "line": 250,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.72
        }
      ],
      "jumpTargets": [],
      "exceptionTargets": [],
      "loopBackEdges": [],
      "mergeNodeIds": [],
      "language": "csharp",
      "confidence": 0.98,
      "lineSpan": {
        "start": 13,
        "end": 250
      },
      "unsupportedConstructs": [],
      "evidence": [
        {
          "path": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "line": 13,
          "summary": "Control-flow fragment extracted for method Up.",
          "kind": "file-summary"
        }
      ]
    },
    {
      "fragmentId": "method:1kuci8n:down__fragment",
      "ownerFileId": "file:a32vvn:20260428184727-initialpostgres-cs",
      "ownerSymbolId": "method:1kuci8n:down",
      "ownerSymbolName": "Down",
      "entryNodeId": "method:1kuci8n:down__entry",
      "exitNodeIds": [
        "method:1kuci8n:down__implicit_return"
      ],
      "nodes": [
        {
          "id": "method:1kuci8n:down__entry",
          "kind": "entry",
          "label": "Down entry",
          "line": 253,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.99,
          "detail": "Drops the tables created by Up in reverse order to roll back the migration."
        },
        {
          "id": "method:1kuci8n:down__action_255_drop_table_255__linear",
          "kind": "statement",
          "label": "Drop AspNetRoleClaims",
          "line": 255,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7,
          "detail": "migrationBuilder.DropTable(name: \"AspNetRoleClaims\")"
        },
        {
          "id": "method:1kuci8n:down__action_258_drop_table_258__linear",
          "kind": "statement",
          "label": "Drop AspNetUserClaims",
          "line": 258,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7,
          "detail": "migrationBuilder.DropTable(name: \"AspNetUserClaims\")"
        },
        {
          "id": "method:1kuci8n:down__action_261_drop_table_261__linear",
          "kind": "statement",
          "label": "Drop AspNetUserLogins",
          "line": 261,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7,
          "detail": "migrationBuilder.DropTable(name: \"AspNetUserLogins\")"
        },
        {
          "id": "method:1kuci8n:down__action_264_drop_table_264__linear",
          "kind": "statement",
          "label": "Drop AspNetUserRoles",
          "line": 264,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7,
          "detail": "migrationBuilder.DropTable(name: \"AspNetUserRoles\")"
        },
        {
          "id": "method:1kuci8n:down__action_267_drop_table_267__linear",
          "kind": "statement",
          "label": "Drop AspNetUserTokens",
          "line": 267,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7,
          "detail": "migrationBuilder.DropTable(name: \"AspNetUserTokens\")"
        },
        {
          "id": "method:1kuci8n:down__action_270_drop_table_270__linear",
          "kind": "statement",
          "label": "Drop Ebooks",
          "line": 270,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7,
          "detail": "migrationBuilder.DropTable(name: \"Ebooks\")"
        },
        {
          "id": "method:1kuci8n:down__action_273_drop_table_273__linear",
          "kind": "statement",
          "label": "Drop SemanticKnowledgeCache",
          "line": 273,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7,
          "detail": "migrationBuilder.DropTable(name: \"SemanticKnowledgeCache\")"
        },
        {
          "id": "method:1kuci8n:down__action_276_drop_table_276__linear",
          "kind": "statement",
          "label": "Drop AspNetRoles",
          "line": 276,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7,
          "detail": "migrationBuilder.DropTable(name: \"AspNetRoles\")"
        },
        {
          "id": "method:1kuci8n:down__action_279_drop_table_279__linear",
          "kind": "statement",
          "label": "Drop AspNetUsers",
          "line": 279,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7,
          "detail": "migrationBuilder.DropTable(name: \"AspNetUsers\")"
        },
        {
          "id": "method:1kuci8n:down__implicit_return",
          "kind": "return",
          "label": "return",
          "line": 281,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.72,
          "detail": "Implicit method exit inferred from method boundary."
        }
      ],
      "edges": [
        {
          "id": "method:1kuci8n:down__entry__method:1kuci8n:down__action_255_drop_table_255__linear",
          "from": "method:1kuci8n:down__entry",
          "to": "method:1kuci8n:down__action_255_drop_table_255__linear",
          "kind": "next",
          "line": 255,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7
        },
        {
          "id": "method:1kuci8n:down__action_255_drop_table_255__linear__method:1kuci8n:down__action_258_drop_table_258__linear",
          "from": "method:1kuci8n:down__action_255_drop_table_255__linear",
          "to": "method:1kuci8n:down__action_258_drop_table_258__linear",
          "kind": "next",
          "line": 258,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7
        },
        {
          "id": "method:1kuci8n:down__action_258_drop_table_258__linear__method:1kuci8n:down__action_261_drop_table_261__linear",
          "from": "method:1kuci8n:down__action_258_drop_table_258__linear",
          "to": "method:1kuci8n:down__action_261_drop_table_261__linear",
          "kind": "next",
          "line": 261,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7
        },
        {
          "id": "method:1kuci8n:down__action_261_drop_table_261__linear__method:1kuci8n:down__action_264_drop_table_264__linear",
          "from": "method:1kuci8n:down__action_261_drop_table_261__linear",
          "to": "method:1kuci8n:down__action_264_drop_table_264__linear",
          "kind": "next",
          "line": 264,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7
        },
        {
          "id": "method:1kuci8n:down__action_264_drop_table_264__linear__method:1kuci8n:down__action_267_drop_table_267__linear",
          "from": "method:1kuci8n:down__action_264_drop_table_264__linear",
          "to": "method:1kuci8n:down__action_267_drop_table_267__linear",
          "kind": "next",
          "line": 267,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7
        },
        {
          "id": "method:1kuci8n:down__action_267_drop_table_267__linear__method:1kuci8n:down__action_270_drop_table_270__linear",
          "from": "method:1kuci8n:down__action_267_drop_table_267__linear",
          "to": "method:1kuci8n:down__action_270_drop_table_270__linear",
          "kind": "next",
          "line": 270,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7
        },
        {
          "id": "method:1kuci8n:down__action_270_drop_table_270__linear__method:1kuci8n:down__action_273_drop_table_273__linear",
          "from": "method:1kuci8n:down__action_270_drop_table_270__linear",
          "to": "method:1kuci8n:down__action_273_drop_table_273__linear",
          "kind": "next",
          "line": 273,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7
        },
        {
          "id": "method:1kuci8n:down__action_273_drop_table_273__linear__method:1kuci8n:down__action_276_drop_table_276__linear",
          "from": "method:1kuci8n:down__action_273_drop_table_273__linear",
          "to": "method:1kuci8n:down__action_276_drop_table_276__linear",
          "kind": "next",
          "line": 276,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7
        },
        {
          "id": "method:1kuci8n:down__action_276_drop_table_276__linear__method:1kuci8n:down__action_279_drop_table_279__linear",
          "from": "method:1kuci8n:down__action_276_drop_table_276__linear",
          "to": "method:1kuci8n:down__action_279_drop_table_279__linear",
          "kind": "next",
          "line": 279,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.7
        },
        {
          "id": "method:1kuci8n:down__action_279_drop_table_279__linear__implicit_return",
          "from": "method:1kuci8n:down__action_279_drop_table_279__linear",
          "to": "method:1kuci8n:down__implicit_return",
          "kind": "return",
          "line": 281,
          "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "confidence": 0.72
        }
      ],
      "jumpTargets": [],
      "exceptionTargets": [],
      "loopBackEdges": [],
      "mergeNodeIds": [],
      "language": "csharp",
      "confidence": 0.98,
      "lineSpan": {
        "start": 253,
        "end": 281
      },
      "unsupportedConstructs": [],
      "evidence": [
        {
          "path": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
          "line": 253,
          "summary": "Control-flow fragment extracted for method Down.",
          "kind": "file-summary"
        }
      ]
    }
  ],
  "unresolvedJumps": [],
  "diagrams": [
    {
      "id": "file_a32vvn_20260428184727_initialpostgres_cs_neighborhood_view",
      "purpose": "neighborhood-view",
      "title": "20260428184727_InitialPostgres Neighborhood",
      "required": true,
      "diagram": {
        "id": "file_a32vvn_20260428184727_initialpostgres_cs_neighborhood_view",
        "kind": "dependency-map",
        "title": "20260428184727_InitialPostgres Neighborhood",
        "direction": "LR",
        "nodes": [
          {
            "id": "file_a32vvn_20260428184727_initialpostgres_cs",
            "kind": "service",
            "label": "20260428184727_InitialPostgres",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs"
          },
          {
            "id": "class_1xhm2de_initialpostgres",
            "kind": "service",
            "label": "InitialPostgres",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs"
          },
          {
            "id": "method_19ym4q4_up",
            "kind": "method",
            "label": "Up()",
            "shape": "subproc",
            "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
            "sourceLine": 13
          },
          {
            "id": "method_1kuci8n_down",
            "kind": "method",
            "label": "Down()",
            "shape": "subproc",
            "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
            "sourceLine": 253
          },
          {
            "id": "type_18g2en_aspnetroles",
            "kind": "document",
            "label": "AspNetRoles",
            "shape": "doc",
            "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
            "sourceLine": 15
          },
          {
            "id": "type_1iyorzj_aspnetusers",
            "kind": "document",
            "label": "AspNetUsers",
            "shape": "doc",
            "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
            "sourceLine": 29
          },
          {
            "id": "type_10b7z70_semanticknowledgecache",
            "kind": "document",
            "label": "SemanticKnowledgeCache",
            "shape": "doc",
            "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
            "sourceLine": 58
          },
          {
            "id": "type_96fzwh_ebooks",
            "kind": "document",
            "label": "Ebooks",
            "shape": "doc",
            "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
            "sourceLine": 179
          },
          {
            "id": "type_1yhkunt_aspnetroleclaims_aspnetuserclaims_aspnetuserlogi",
            "kind": "document",
            "label": "AspNetRoleClaims / AspNetUserClaims / AspNetUserLogins / AspNetUserRoles / AspNetUserTokens",
            "shape": "doc",
            "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
            "sourceLine": 73
          }
        ],
        "edges": [],
        "metadata": {
          "evidencePaths": [
            "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs"
          ]
        },
        "subgraphs": []
      },
      "mermaidSource": "flowchart LR\n    class_1xhm2de_initialpostgres(\"InitialPostgres\")\n    file_a32vvn_20260428184727_initialpostgres_cs(\"20260428184727_InitialPostgres\")\n    method_19ym4q4_up[[\"Up()\"]]\n    method_1kuci8n_down[[\"Down()\"]]\n    type_10b7z70_semanticknowledgecache[/\"SemanticKnowledgeCache\"/]\n    type_18g2en_aspnetroles[/\"AspNetRoles\"/]\n    type_1iyorzj_aspnetusers[/\"AspNetUsers\"/]\n    type_1yhkunt_aspnetroleclaims_aspnetuserclaims_aspnetuserlogi[/\"AspNetRoleClaims / AspNetUserClaims / AspNetUserLogins / AspNetUserRoles / AspNetUserTokens\"/]\n    type_96fzwh_ebooks[/\"Ebooks\"/]",
      "warnings": []
    },
    {
      "id": "file_a32vvn_20260428184727_initialpostgres_cs_execution_view",
      "purpose": "execution-overview",
      "title": "20260428184727_InitialPostgres Execution Overview",
      "required": true,
      "diagram": {
        "id": "file_a32vvn_20260428184727_initialpostgres_cs_execution_view",
        "kind": "method-flow",
        "title": "20260428184727_InitialPostgres Execution Overview",
        "direction": "TD",
        "nodes": [
          {
            "id": "class_1xhm2de_initialpostgres",
            "kind": "service",
            "label": "InitialPostgres",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs"
          },
          {
            "id": "method_19ym4q4_up",
            "kind": "method",
            "label": "Up()",
            "shape": "subproc",
            "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
            "sourceLine": 13
          },
          {
            "id": "method_1kuci8n_down",
            "kind": "method",
            "label": "Down()",
            "shape": "subproc",
            "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
            "sourceLine": 253
          }
        ],
        "edges": [
          {
            "id": "class_1xhm2de_initialpostgres_contains_method_19ym4q4_up",
            "from": "class_1xhm2de_initialpostgres",
            "to": "method_19ym4q4_up",
            "semanticLabel": "contains executable method",
            "visibleLabel": "contains",
            "relation": "calls",
            "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
            "sourceLine": 13
          },
          {
            "id": "class_1xhm2de_initialpostgres_contains_method_1kuci8n_down",
            "from": "class_1xhm2de_initialpostgres",
            "to": "method_1kuci8n_down",
            "semanticLabel": "contains executable method",
            "visibleLabel": "contains",
            "relation": "calls",
            "sourcePath": "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs",
            "sourceLine": 253
          }
        ],
        "metadata": {
          "evidencePaths": [
            "NexusReader.Data/Migrations/20260428184727_InitialPostgres.cs"
          ]
        },
        "subgraphs": []
      },
      "mermaidSource": "flowchart TD\n    class_1xhm2de_initialpostgres(\"InitialPostgres\")\n    method_19ym4q4_up[[\"Up()\"]]\n    method_1kuci8n_down[[\"Down()\"]]\n    class_1xhm2de_initialpostgres -->|contains| method_19ym4q4_up\n    class_1xhm2de_initialpostgres -->|contains| method_1kuci8n_down",
      "warnings": []
    }
  ],
  "renderHints": {
    "preferredSurface": "three-d",
    "defaultDiagramId": "file_a32vvn_20260428184727_initialpostgres_cs_execution_view",
    "controlFlowDiagramIds": [],
    "defaultControlFlowDiagramIdsBySymbolId": {}
  }
}