{
  "version": 1,
  "generatedAt": "2026-05-25T11:41:33.166Z",
  "fileId": "file:1h2hpbe:appdbcontextfactory-cs",
  "executableScope": true,
  "executableSymbolCount": 1,
  "fileNodeId": "file:1h2hpbe:appdbcontextfactory-cs",
  "symbolNodeIds": [
    "class:1g09xpu:appdbcontextfactory",
    "method:nwogow:createdbcontext",
    "type:1tyno9s:appdbcontextfactory"
  ],
  "containmentEdgeIds": [
    "edge:cqvfrn:contains",
    "edge:13z4b5y:contains",
    "edge:10xns72:defines-type"
  ],
  "relationshipEdgeIds": [
    "edge:cqvfrn:contains",
    "edge:13z4b5y:contains",
    "edge:10xns72:defines-type",
    "edge:1fr54xr:imports"
  ],
  "integrationEdgeIds": [
    "edge:1fr54xr:imports"
  ],
  "controlFlowFragments": [
    {
      "fragmentId": "method:nwogow:createdbcontext__fragment",
      "ownerFileId": "file:1h2hpbe:appdbcontextfactory-cs",
      "ownerSymbolId": "method:nwogow:createdbcontext",
      "ownerSymbolName": "CreateDbContext",
      "entryNodeId": "method:nwogow:createdbcontext__entry",
      "exitNodeIds": [
        "method:nwogow:createdbcontext__action_43_createdbcontext_return_43_2__return",
        "method:nwogow:createdbcontext__action_43_return_43__return",
        "method:nwogow:createdbcontext__implicit_return"
      ],
      "nodes": [
        {
          "id": "method:nwogow:createdbcontext__entry",
          "kind": "entry",
          "label": "CreateDbContext entry",
          "line": 10,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.99,
          "detail": "Creates and configures an AppDbContext for design-time use by reading environment, locating the Web project for configuration files, resolving a connection string (with fallback), applying Npgsql + pgvector options, and returning the context."
        },
        {
          "id": "method:nwogow:createdbcontext__action_12_env_read_12__linear",
          "kind": "statement",
          "label": "Read ASPNETCORE_ENVIRONMENT",
          "line": 12,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7,
          "detail": "Environment.GetEnvironmentVariable(\"ASPNETCORE_ENVIRONMENT\") with default 'Development'"
        },
        {
          "id": "method:nwogow:createdbcontext__action_15_loop_15__loop_entry",
          "kind": "loop-entry",
          "label": "Walk up directories to find solution file",
          "line": 15,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7,
          "detail": "while (currentDir != null && !File.Exists(Path.Combine(currentDir.FullName, \"NexusReader.slnx\"))) currentDir = currentDir.Parent;"
        },
        {
          "id": "method:nwogow:createdbcontext__action_15_loop_15__loop_body",
          "kind": "loop-body",
          "label": "while (currentDir != null && !File.Exists(Path.Combine(currentDir.FullName, \"NexusReader.slnx\"))) currentDir = currentDir.Parent;",
          "line": 15,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_15_loop_15__loop_exit",
          "kind": "loop-exit",
          "label": "exit loop",
          "line": 15,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry",
          "kind": "loop-entry",
          "label": "currentDir != null && !File.Exists(Path.Combine(currentDir.FullName, \"NexusReader.slnx\"))",
          "line": 16,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.86,
          "detail": "while (currentDir != null && !File.Exists(Path.Combine(currentDir.FullName, \"NexusReader.slnx\")))"
        },
        {
          "id": "method:nwogow:createdbcontext__action_16_createdbcontext_loop_16_0__loop_body",
          "kind": "loop-body",
          "label": "while (currentDir != null && !File.Exists(Path.Combine(currentDir.FullName, \"NexusReader.slnx\")))",
          "line": 16,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.86
        },
        {
          "id": "method:nwogow:createdbcontext__action_16_createdbcontext_loop_16_0__loop_exit",
          "kind": "loop-exit",
          "label": "Leaves the loop when the condition no longer holds.",
          "line": 16,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.86
        },
        {
          "id": "method:nwogow:createdbcontext__action_21_branch_21__condition",
          "kind": "condition",
          "label": "currentDir != null",
          "line": 21,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7,
          "detail": "basePath = currentDir != null ? Path.Combine(currentDir.FullName, \"src\", \"NexusReader.Web\") : Directory.GetCurrentDirectory();"
        },
        {
          "id": "method:nwogow:createdbcontext__action_21_branch_21__true",
          "kind": "branch-true",
          "label": "use src/NexusReader.Web",
          "line": 21,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_21_branch_21__false",
          "kind": "branch-false",
          "label": "use current working directory",
          "line": 21,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_21_branch_21__merge",
          "kind": "statement",
          "label": "merge",
          "line": 21,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_25_config_build_25__linear",
          "kind": "statement",
          "label": "Build configuration from appsettings and environment",
          "line": 25,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7,
          "detail": "ConfigurationBuilder with appsettings.json, appsettings.{env}.json, and environment variables"
        },
        {
          "id": "method:nwogow:createdbcontext__action_33_call_33__linear",
          "kind": "statement",
          "label": "Get connection string",
          "line": 33,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7,
          "detail": "configuration.GetConnectionString(\"PostgresConnection\")"
        },
        {
          "id": "method:nwogow:createdbcontext__action_35_guard_clause_35__condition",
          "kind": "condition",
          "label": "string.IsNullOrEmpty(connectionString)",
          "line": 35,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7,
          "detail": "sets connectionString = \"Host=localhost;Database=nexus_reader;Username=postgres;Password=postgres\""
        },
        {
          "id": "method:nwogow:createdbcontext__action_35_guard_clause_35__true",
          "kind": "branch-true",
          "label": "assign default Postgres connection",
          "line": 35,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_35_guard_clause_35__false",
          "kind": "branch-false",
          "label": "keep discovered connection",
          "line": 35,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_35_guard_clause_35__merge",
          "kind": "statement",
          "label": "merge",
          "line": 35,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__condition",
          "kind": "condition",
          "label": "string.IsNullOrEmpty(connectionString)",
          "line": 35,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.78,
          "detail": "if (string.IsNullOrEmpty(connectionString))"
        },
        {
          "id": "method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__true",
          "kind": "branch-true",
          "label": "true",
          "line": 35,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.78
        },
        {
          "id": "method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__false",
          "kind": "branch-false",
          "label": "false",
          "line": 35,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.78
        },
        {
          "id": "method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__merge",
          "kind": "statement",
          "label": "merge",
          "line": 35,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.78
        },
        {
          "id": "method:nwogow:createdbcontext__action_41_persistence_config_41__linear",
          "kind": "statement",
          "label": "Configure Npgsql with pgvector",
          "line": 41,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7,
          "detail": "optionsBuilder.UseNpgsql(connectionString, x => x.UseVector())"
        },
        {
          "id": "method:nwogow:createdbcontext__action_43_createdbcontext_return_43_2__return",
          "kind": "return",
          "label": "Returns result",
          "line": 43,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7,
          "detail": "return new AppDbContext(optionsBuilder.Options);"
        },
        {
          "id": "method:nwogow:createdbcontext__action_43_return_43__return",
          "kind": "return",
          "label": "Return configured DbContext",
          "line": 43,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7,
          "detail": "return new AppDbContext(optionsBuilder.Options)"
        },
        {
          "id": "method:nwogow:createdbcontext__call_43_AppDbContext_ctor",
          "kind": "call",
          "label": "AppDbContext..ctor",
          "line": 43,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.88,
          "detail": "optionsBuilder.Options (DbContextOptions<AppDbContext>)"
        },
        {
          "id": "method:nwogow:createdbcontext__implicit_return",
          "kind": "return",
          "label": "return",
          "line": 44,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.72,
          "detail": "Implicit method exit inferred from method boundary."
        }
      ],
      "edges": [
        {
          "id": "method:nwogow:createdbcontext__entry__method:nwogow:createdbcontext__action_12_env_read_12__linear",
          "from": "method:nwogow:createdbcontext__entry",
          "to": "method:nwogow:createdbcontext__action_12_env_read_12__linear",
          "kind": "next",
          "line": 12,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_12_env_read_12__linear__method:nwogow:createdbcontext__action_15_loop_15__loop_entry",
          "from": "method:nwogow:createdbcontext__action_12_env_read_12__linear",
          "to": "method:nwogow:createdbcontext__action_15_loop_15__loop_entry",
          "kind": "next",
          "line": 15,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_15_loop_15__loop_entry__method:nwogow:createdbcontext__action_15_loop_15__loop_body",
          "from": "method:nwogow:createdbcontext__action_15_loop_15__loop_entry",
          "to": "method:nwogow:createdbcontext__action_15_loop_15__loop_body",
          "kind": "loop-body",
          "label": "iterate",
          "line": 15,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_15_loop_15__loop_body__method:nwogow:createdbcontext__action_15_loop_15__loop_entry",
          "from": "method:nwogow:createdbcontext__action_15_loop_15__loop_body",
          "to": "method:nwogow:createdbcontext__action_15_loop_15__loop_entry",
          "kind": "loop-back",
          "label": "continue",
          "line": 15,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_15_loop_15__loop_entry__method:nwogow:createdbcontext__action_15_loop_15__loop_exit",
          "from": "method:nwogow:createdbcontext__action_15_loop_15__loop_entry",
          "to": "method:nwogow:createdbcontext__action_15_loop_15__loop_exit",
          "kind": "loop-exit",
          "label": "exit",
          "line": 15,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_15_loop_15__loop_exit__method:nwogow:createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry",
          "from": "method:nwogow:createdbcontext__action_15_loop_15__loop_exit",
          "to": "method:nwogow:createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry",
          "kind": "next",
          "line": 16,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.86
        },
        {
          "id": "method:nwogow:createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry__method:nwogow:createdbcontext__action_16_createdbcontext_loop_16_0__loop_body",
          "from": "method:nwogow:createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry",
          "to": "method:nwogow:createdbcontext__action_16_createdbcontext_loop_16_0__loop_body",
          "kind": "loop-body",
          "label": "currentDir != null && !File.Exists(Path.Combine(currentDir.FullName, \"NexusReader.slnx\"))",
          "line": 16,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.86
        },
        {
          "id": "method:nwogow:createdbcontext__action_16_createdbcontext_loop_16_0__loop_body__method:nwogow:createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry",
          "from": "method:nwogow:createdbcontext__action_16_createdbcontext_loop_16_0__loop_body",
          "to": "method:nwogow:createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry",
          "kind": "loop-back",
          "label": "continue",
          "line": 16,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.86
        },
        {
          "id": "method:nwogow:createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry__method:nwogow:createdbcontext__action_16_createdbcontext_loop_16_0__loop_exit",
          "from": "method:nwogow:createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry",
          "to": "method:nwogow:createdbcontext__action_16_createdbcontext_loop_16_0__loop_exit",
          "kind": "loop-exit",
          "label": "Leaves the loop when the condition no longer holds.",
          "line": 16,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.86
        },
        {
          "id": "method:nwogow:createdbcontext__action_16_createdbcontext_loop_16_0__loop_exit__method:nwogow:createdbcontext__action_21_branch_21__condition",
          "from": "method:nwogow:createdbcontext__action_16_createdbcontext_loop_16_0__loop_exit",
          "to": "method:nwogow:createdbcontext__action_21_branch_21__condition",
          "kind": "next",
          "line": 21,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_21_branch_21__condition__method:nwogow:createdbcontext__action_21_branch_21__true",
          "from": "method:nwogow:createdbcontext__action_21_branch_21__condition",
          "to": "method:nwogow:createdbcontext__action_21_branch_21__true",
          "kind": "condition-true",
          "label": "use src/NexusReader.Web",
          "line": 21,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_21_branch_21__condition__method:nwogow:createdbcontext__action_21_branch_21__false",
          "from": "method:nwogow:createdbcontext__action_21_branch_21__condition",
          "to": "method:nwogow:createdbcontext__action_21_branch_21__false",
          "kind": "condition-false",
          "label": "use current working directory",
          "line": 21,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_21_branch_21__true__method:nwogow:createdbcontext__action_21_branch_21__merge",
          "from": "method:nwogow:createdbcontext__action_21_branch_21__true",
          "to": "method:nwogow:createdbcontext__action_21_branch_21__merge",
          "kind": "next",
          "line": 21,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_21_branch_21__false__method:nwogow:createdbcontext__action_21_branch_21__merge",
          "from": "method:nwogow:createdbcontext__action_21_branch_21__false",
          "to": "method:nwogow:createdbcontext__action_21_branch_21__merge",
          "kind": "next",
          "line": 21,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_21_branch_21__merge__method:nwogow:createdbcontext__action_25_config_build_25__linear",
          "from": "method:nwogow:createdbcontext__action_21_branch_21__merge",
          "to": "method:nwogow:createdbcontext__action_25_config_build_25__linear",
          "kind": "next",
          "line": 25,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_25_config_build_25__linear__method:nwogow:createdbcontext__action_33_call_33__linear",
          "from": "method:nwogow:createdbcontext__action_25_config_build_25__linear",
          "to": "method:nwogow:createdbcontext__action_33_call_33__linear",
          "kind": "next",
          "line": 33,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_33_call_33__linear__method:nwogow:createdbcontext__action_35_guard_clause_35__condition",
          "from": "method:nwogow:createdbcontext__action_33_call_33__linear",
          "to": "method:nwogow:createdbcontext__action_35_guard_clause_35__condition",
          "kind": "next",
          "line": 35,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_35_guard_clause_35__condition__method:nwogow:createdbcontext__action_35_guard_clause_35__true",
          "from": "method:nwogow:createdbcontext__action_35_guard_clause_35__condition",
          "to": "method:nwogow:createdbcontext__action_35_guard_clause_35__true",
          "kind": "condition-true",
          "label": "assign default Postgres connection",
          "line": 35,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_35_guard_clause_35__condition__method:nwogow:createdbcontext__action_35_guard_clause_35__false",
          "from": "method:nwogow:createdbcontext__action_35_guard_clause_35__condition",
          "to": "method:nwogow:createdbcontext__action_35_guard_clause_35__false",
          "kind": "condition-false",
          "label": "keep discovered connection",
          "line": 35,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_35_guard_clause_35__true__method:nwogow:createdbcontext__action_35_guard_clause_35__merge",
          "from": "method:nwogow:createdbcontext__action_35_guard_clause_35__true",
          "to": "method:nwogow:createdbcontext__action_35_guard_clause_35__merge",
          "kind": "next",
          "line": 35,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_35_guard_clause_35__false__method:nwogow:createdbcontext__action_35_guard_clause_35__merge",
          "from": "method:nwogow:createdbcontext__action_35_guard_clause_35__false",
          "to": "method:nwogow:createdbcontext__action_35_guard_clause_35__merge",
          "kind": "next",
          "line": 35,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_35_guard_clause_35__merge__method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__condition",
          "from": "method:nwogow:createdbcontext__action_35_guard_clause_35__merge",
          "to": "method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__condition",
          "kind": "next",
          "line": 35,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.78
        },
        {
          "id": "method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__condition__method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__true",
          "from": "method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__condition",
          "to": "method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__true",
          "kind": "condition-true",
          "label": "true",
          "line": 35,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.78
        },
        {
          "id": "method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__condition__method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__false",
          "from": "method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__condition",
          "to": "method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__false",
          "kind": "condition-false",
          "label": "false",
          "line": 35,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.78
        },
        {
          "id": "method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__true__method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__merge",
          "from": "method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__true",
          "to": "method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__merge",
          "kind": "next",
          "line": 35,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.78
        },
        {
          "id": "method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__false__method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__merge",
          "from": "method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__false",
          "to": "method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__merge",
          "kind": "next",
          "line": 35,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.78
        },
        {
          "id": "method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__merge__method:nwogow:createdbcontext__action_41_persistence_config_41__linear",
          "from": "method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__merge",
          "to": "method:nwogow:createdbcontext__action_41_persistence_config_41__linear",
          "kind": "next",
          "line": 41,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_41_persistence_config_41__linear__method:nwogow:createdbcontext__action_43_createdbcontext_return_43_2__return",
          "from": "method:nwogow:createdbcontext__action_41_persistence_config_41__linear",
          "to": "method:nwogow:createdbcontext__action_43_createdbcontext_return_43_2__return",
          "kind": "return",
          "line": 43,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_43_createdbcontext_return_43_2__return__method:nwogow:createdbcontext__action_43_return_43__return",
          "from": "method:nwogow:createdbcontext__action_43_createdbcontext_return_43_2__return",
          "to": "method:nwogow:createdbcontext__action_43_return_43__return",
          "kind": "return",
          "line": 43,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.7
        },
        {
          "id": "method:nwogow:createdbcontext__action_43_return_43__return__call_method:nwogow:createdbcontext__call_43_AppDbContext_ctor",
          "from": "method:nwogow:createdbcontext__action_43_return_43__return",
          "to": "method:nwogow:createdbcontext__call_43_AppDbContext_ctor",
          "kind": "call",
          "label": "optionsBuilder.Options (DbContextOptions<AppDbContext>)",
          "line": 43,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.88
        },
        {
          "id": "method:nwogow:createdbcontext__call_43_AppDbContext_ctor__implicit_return",
          "from": "method:nwogow:createdbcontext__call_43_AppDbContext_ctor",
          "to": "method:nwogow:createdbcontext__implicit_return",
          "kind": "return",
          "line": 44,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "confidence": 0.72
        }
      ],
      "jumpTargets": [
        {
          "id": "method:nwogow:createdbcontext__call_43_AppDbContext_ctor__jump_NexusReader_Data_Persistence_AppDbContext_cs_AppDbContext_ctor",
          "fromNodeId": "method:nwogow:createdbcontext__call_43_AppDbContext_ctor",
          "kind": "call-target",
          "targetPath": "NexusReader.Data/Persistence/AppDbContext.cs",
          "targetHint": "AppDbContext..ctor",
          "line": 43,
          "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "reason": "Call target AppDbContext..ctor in NexusReader.Data/Persistence/AppDbContext.cs could not be matched to an extracted method symbol.",
          "status": "unresolved"
        }
      ],
      "exceptionTargets": [],
      "loopBackEdges": [
        "method:nwogow:createdbcontext__action_15_loop_15__loop_body__method:nwogow:createdbcontext__action_15_loop_15__loop_entry",
        "method:nwogow:createdbcontext__action_16_createdbcontext_loop_16_0__loop_body__method:nwogow:createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry"
      ],
      "mergeNodeIds": [
        "method:nwogow:createdbcontext__action_21_branch_21__merge",
        "method:nwogow:createdbcontext__action_35_guard_clause_35__merge",
        "method:nwogow:createdbcontext__action_35_createdbcontext_branch_35_1__merge"
      ],
      "language": "csharp",
      "confidence": 0.98,
      "lineSpan": {
        "start": 10,
        "end": 44
      },
      "unsupportedConstructs": [],
      "evidence": [
        {
          "path": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
          "line": 10,
          "summary": "Control-flow fragment extracted for method CreateDbContext.",
          "kind": "file-summary"
        }
      ]
    }
  ],
  "unresolvedJumps": [
    {
      "id": "method:nwogow:createdbcontext__call_43_AppDbContext_ctor__jump_NexusReader_Data_Persistence_AppDbContext_cs_AppDbContext_ctor",
      "fromNodeId": "method:nwogow:createdbcontext__call_43_AppDbContext_ctor",
      "kind": "call-target",
      "targetPath": "NexusReader.Data/Persistence/AppDbContext.cs",
      "targetHint": "AppDbContext..ctor",
      "line": 43,
      "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
      "reason": "Call target AppDbContext..ctor in NexusReader.Data/Persistence/AppDbContext.cs could not be matched to an extracted method symbol.",
      "status": "unresolved"
    }
  ],
  "diagrams": [
    {
      "id": "file_1h2hpbe_appdbcontextfactory_cs_neighborhood_view",
      "purpose": "neighborhood-view",
      "title": "AppDbContextFactory Neighborhood",
      "required": true,
      "diagram": {
        "id": "file_1h2hpbe_appdbcontextfactory_cs_neighborhood_view",
        "kind": "dependency-map",
        "title": "AppDbContextFactory Neighborhood",
        "direction": "LR",
        "nodes": [
          {
            "id": "file_1h2hpbe_appdbcontextfactory_cs",
            "kind": "service",
            "label": "AppDbContextFactory",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs"
          },
          {
            "id": "class_1g09xpu_appdbcontextfactory",
            "kind": "service",
            "label": "AppDbContextFactory",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs"
          },
          {
            "id": "method_nwogow_createdbcontext",
            "kind": "method",
            "label": "CreateDbContext()",
            "shape": "subproc",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 10
          },
          {
            "id": "type_1tyno9s_appdbcontextfactory",
            "kind": "document",
            "label": "AppDbContextFactory",
            "shape": "doc",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 8
          },
          {
            "id": "file_1pacvtg_appdbcontext_cs",
            "kind": "dependency",
            "label": "AppDbContext",
            "shape": "doc",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContext.cs"
          }
        ],
        "edges": [
          {
            "id": "edge_1fr54xr_imports",
            "from": "file_1h2hpbe_appdbcontextfactory_cs",
            "to": "file_1pacvtg_appdbcontext_cs",
            "semanticLabel": "AppDbContext",
            "visibleLabel": "AppDbContext",
            "relation": "uses",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs"
          }
        ],
        "metadata": {
          "evidencePaths": [
            "NexusReader.Data/Persistence/AppDbContextFactory.cs"
          ]
        },
        "subgraphs": []
      },
      "mermaidSource": "flowchart LR\n    class_1g09xpu_appdbcontextfactory(\"AppDbContextFactory\")\n    file_1h2hpbe_appdbcontextfactory_cs(\"AppDbContextFactory\")\n    method_nwogow_createdbcontext[[\"CreateDbContext()\"]]\n    file_1pacvtg_appdbcontext_cs[/\"AppDbContext\"/]\n    type_1tyno9s_appdbcontextfactory[/\"AppDbContextFactory\"/]\n    file_1h2hpbe_appdbcontextfactory_cs -->|AppDbContext| file_1pacvtg_appdbcontext_cs",
      "warnings": []
    },
    {
      "id": "file_1h2hpbe_appdbcontextfactory_cs_execution_view",
      "purpose": "execution-overview",
      "title": "AppDbContextFactory Execution Overview",
      "required": true,
      "diagram": {
        "id": "file_1h2hpbe_appdbcontextfactory_cs_execution_view",
        "kind": "method-flow",
        "title": "AppDbContextFactory Execution Overview",
        "direction": "TD",
        "nodes": [
          {
            "id": "class_1g09xpu_appdbcontextfactory",
            "kind": "service",
            "label": "AppDbContextFactory",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs"
          },
          {
            "id": "method_nwogow_createdbcontext",
            "kind": "method",
            "label": "CreateDbContext()",
            "shape": "subproc",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 10
          },
          {
            "id": "unresolved_unresolved_1tf41qv_call_target",
            "kind": "prompt",
            "label": "Unresolved: AppDbContext..ctor",
            "shape": "diamond",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 43
          }
        ],
        "edges": [
          {
            "id": "class_1g09xpu_appdbcontextfactory_contains_method_nwogow_createdbcontext",
            "from": "class_1g09xpu_appdbcontextfactory",
            "to": "method_nwogow_createdbcontext",
            "semanticLabel": "contains executable method",
            "visibleLabel": "contains",
            "relation": "calls",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 10
          },
          {
            "id": "unresolved_1tf41qv_call_target_edge",
            "from": "method_nwogow_createdbcontext",
            "to": "unresolved_unresolved_1tf41qv_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 43
          }
        ],
        "metadata": {
          "evidencePaths": [
            "NexusReader.Data/Persistence/AppDbContextFactory.cs"
          ],
          "warnings": [
            "Execution overview includes unresolved targets. Use validation artifacts before treating the flow as complete."
          ]
        },
        "subgraphs": []
      },
      "mermaidSource": "flowchart TD\n    class_1g09xpu_appdbcontextfactory(\"AppDbContextFactory\")\n    method_nwogow_createdbcontext[[\"CreateDbContext()\"]]\n    unresolved_unresolved_1tf41qv_call_target{\"Unresolved: AppDbContext..ctor\"}\n    class_1g09xpu_appdbcontextfactory -->|contains| method_nwogow_createdbcontext\n    method_nwogow_createdbcontext -->|unresolved call| unresolved_unresolved_1tf41qv_call_target",
      "warnings": []
    },
    {
      "id": "method_nwogow_createdbcontext__fragment_diagram",
      "purpose": "control-flow",
      "title": "CreateDbContext() Control Flow",
      "required": true,
      "diagram": {
        "id": "method_nwogow_createdbcontext__fragment_diagram",
        "kind": "control-flow",
        "title": "CreateDbContext() Control Flow",
        "direction": "TD",
        "nodes": [
          {
            "id": "method_nwogow_createdbcontext__entry",
            "kind": "step",
            "label": "CreateDbContext entry",
            "shape": "stadium",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 10
          },
          {
            "id": "method_nwogow_createdbcontext__action_12_env_read_12__linear",
            "kind": "step",
            "label": "Read ASPNETCORE_ENVIRONMENT",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 12
          },
          {
            "id": "method_nwogow_createdbcontext__action_15_loop_15__loop_entry",
            "kind": "step",
            "label": "Walk up directories to find solution file",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 15
          },
          {
            "id": "method_nwogow_createdbcontext__action_15_loop_15__loop_body",
            "kind": "step",
            "label": "while (currentDir != null && !File.Exists(Path.Combine(currentDir.FullName, \\\"NexusReader.slnx\\\"))) currentDir = currentDir.Parent;",
            "shape": "subproc",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 15
          },
          {
            "id": "method_nwogow_createdbcontext__action_15_loop_15__loop_exit",
            "kind": "step",
            "label": "exit loop",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 15
          },
          {
            "id": "method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry",
            "kind": "step",
            "label": "currentDir != null && !File.Exists(Path.Combine(currentDir.FullName, \\\"NexusReader.slnx\\\"))",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 16
          },
          {
            "id": "method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_body",
            "kind": "step",
            "label": "while (currentDir != null && !File.Exists(Path.Combine(currentDir.FullName, \\\"NexusReader.slnx\\\")))",
            "shape": "subproc",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 16
          },
          {
            "id": "method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_exit",
            "kind": "step",
            "label": "Leaves the loop when the condition no longer holds.",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 16
          },
          {
            "id": "method_nwogow_createdbcontext__action_21_branch_21__condition",
            "kind": "step",
            "label": "currentDir != null",
            "shape": "diamond",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 21
          },
          {
            "id": "method_nwogow_createdbcontext__action_21_branch_21__true",
            "kind": "step",
            "label": "use src/NexusReader.Web",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 21
          },
          {
            "id": "method_nwogow_createdbcontext__action_21_branch_21__false",
            "kind": "step",
            "label": "use current working directory",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 21
          },
          {
            "id": "method_nwogow_createdbcontext__action_21_branch_21__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 21
          },
          {
            "id": "method_nwogow_createdbcontext__action_25_config_build_25__linear",
            "kind": "step",
            "label": "Build configuration from appsettings and environment",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 25
          },
          {
            "id": "method_nwogow_createdbcontext__action_33_call_33__linear",
            "kind": "step",
            "label": "Get connection string",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 33
          },
          {
            "id": "method_nwogow_createdbcontext__action_35_guard_clause_35__condition",
            "kind": "step",
            "label": "string.IsNullOrEmpty(connectionString)",
            "shape": "diamond",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 35
          },
          {
            "id": "method_nwogow_createdbcontext__action_35_guard_clause_35__true",
            "kind": "step",
            "label": "assign default Postgres connection",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 35
          },
          {
            "id": "method_nwogow_createdbcontext__action_35_guard_clause_35__false",
            "kind": "step",
            "label": "keep discovered connection",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 35
          },
          {
            "id": "method_nwogow_createdbcontext__action_35_guard_clause_35__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 35
          },
          {
            "id": "method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__condition",
            "kind": "step",
            "label": "string.IsNullOrEmpty(connectionString)",
            "shape": "diamond",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 35
          },
          {
            "id": "method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 35
          },
          {
            "id": "method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 35
          },
          {
            "id": "method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 35
          },
          {
            "id": "method_nwogow_createdbcontext__action_41_persistence_config_41__linear",
            "kind": "step",
            "label": "Configure Npgsql with pgvector",
            "shape": "rounded",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 41
          },
          {
            "id": "method_nwogow_createdbcontext__action_43_createdbcontext_return_43_2__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 43
          },
          {
            "id": "method_nwogow_createdbcontext__action_43_return_43__return",
            "kind": "return",
            "label": "Return configured DbContext",
            "shape": "stadium",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 43
          },
          {
            "id": "method_nwogow_createdbcontext__call_43_AppDbContext_ctor",
            "kind": "method",
            "label": "AppDbContext..ctor",
            "shape": "subproc",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 43
          },
          {
            "id": "method_nwogow_createdbcontext__implicit_return",
            "kind": "return",
            "label": "return",
            "shape": "stadium",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 44
          }
        ],
        "edges": [
          {
            "id": "method_nwogow_createdbcontext__entry__method_nwogow_createdbcontext__action_12_env_read_12__linear",
            "from": "method_nwogow_createdbcontext__entry",
            "to": "method_nwogow_createdbcontext__action_12_env_read_12__linear",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 12
          },
          {
            "id": "method_nwogow_createdbcontext__action_12_env_read_12__linear__method_nwogow_createdbcontext__action_15_loop_15__loop_entry",
            "from": "method_nwogow_createdbcontext__action_12_env_read_12__linear",
            "to": "method_nwogow_createdbcontext__action_15_loop_15__loop_entry",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 15
          },
          {
            "id": "method_nwogow_createdbcontext__action_15_loop_15__loop_entry__method_nwogow_createdbcontext__action_15_loop_15__loop_body",
            "from": "method_nwogow_createdbcontext__action_15_loop_15__loop_entry",
            "to": "method_nwogow_createdbcontext__action_15_loop_15__loop_body",
            "semanticLabel": "iterate",
            "visibleLabel": "iterate",
            "relation": "transforms",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 15
          },
          {
            "id": "method_nwogow_createdbcontext__action_15_loop_15__loop_body__method_nwogow_createdbcontext__action_15_loop_15__loop_entry",
            "from": "method_nwogow_createdbcontext__action_15_loop_15__loop_body",
            "to": "method_nwogow_createdbcontext__action_15_loop_15__loop_entry",
            "semanticLabel": "continue",
            "visibleLabel": "continue",
            "relation": "transforms",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 15
          },
          {
            "id": "method_nwogow_createdbcontext__action_15_loop_15__loop_entry__method_nwogow_createdbcontext__action_15_loop_15__loop_exit",
            "from": "method_nwogow_createdbcontext__action_15_loop_15__loop_entry",
            "to": "method_nwogow_createdbcontext__action_15_loop_15__loop_exit",
            "semanticLabel": "exit",
            "visibleLabel": "exit",
            "relation": "transforms",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 15
          },
          {
            "id": "method_nwogow_createdbcontext__action_15_loop_15__loop_exit__method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry",
            "from": "method_nwogow_createdbcontext__action_15_loop_15__loop_exit",
            "to": "method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 16
          },
          {
            "id": "method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry__method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_body",
            "from": "method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry",
            "to": "method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_body",
            "semanticLabel": "currentDir != null && !File.Exists(Path.Combine(currentDir.FullName, \"NexusReader.slnx\"))",
            "visibleLabel": "transforms input",
            "relation": "transforms",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 16
          },
          {
            "id": "method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_body__method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry",
            "from": "method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_body",
            "to": "method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry",
            "semanticLabel": "continue",
            "visibleLabel": "continue",
            "relation": "transforms",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 16
          },
          {
            "id": "method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry__method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_exit",
            "from": "method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry",
            "to": "method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_exit",
            "semanticLabel": "Leaves the loop when the condition no longer holds.",
            "visibleLabel": "Leaves the loop when the condition no longer holds.",
            "relation": "transforms",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 16
          },
          {
            "id": "method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_exit__method_nwogow_createdbcontext__action_21_branch_21__condition",
            "from": "method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_exit",
            "to": "method_nwogow_createdbcontext__action_21_branch_21__condition",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 21
          },
          {
            "id": "method_nwogow_createdbcontext__action_21_branch_21__condition__method_nwogow_createdbcontext__action_21_branch_21__true",
            "from": "method_nwogow_createdbcontext__action_21_branch_21__condition",
            "to": "method_nwogow_createdbcontext__action_21_branch_21__true",
            "semanticLabel": "use src/NexusReader.Web",
            "visibleLabel": "use src / NexusReader.Web",
            "relation": "transforms",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 21
          },
          {
            "id": "method_nwogow_createdbcontext__action_21_branch_21__condition__method_nwogow_createdbcontext__action_21_branch_21__false",
            "from": "method_nwogow_createdbcontext__action_21_branch_21__condition",
            "to": "method_nwogow_createdbcontext__action_21_branch_21__false",
            "semanticLabel": "use current working directory",
            "visibleLabel": "use current working directory",
            "relation": "transforms",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 21
          },
          {
            "id": "method_nwogow_createdbcontext__action_21_branch_21__true__method_nwogow_createdbcontext__action_21_branch_21__merge",
            "from": "method_nwogow_createdbcontext__action_21_branch_21__true",
            "to": "method_nwogow_createdbcontext__action_21_branch_21__merge",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 21
          },
          {
            "id": "method_nwogow_createdbcontext__action_21_branch_21__false__method_nwogow_createdbcontext__action_21_branch_21__merge",
            "from": "method_nwogow_createdbcontext__action_21_branch_21__false",
            "to": "method_nwogow_createdbcontext__action_21_branch_21__merge",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 21
          },
          {
            "id": "method_nwogow_createdbcontext__action_21_branch_21__merge__method_nwogow_createdbcontext__action_25_config_build_25__linear",
            "from": "method_nwogow_createdbcontext__action_21_branch_21__merge",
            "to": "method_nwogow_createdbcontext__action_25_config_build_25__linear",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 25
          },
          {
            "id": "method_nwogow_createdbcontext__action_25_config_build_25__linear__method_nwogow_createdbcontext__action_33_call_33__linear",
            "from": "method_nwogow_createdbcontext__action_25_config_build_25__linear",
            "to": "method_nwogow_createdbcontext__action_33_call_33__linear",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 33
          },
          {
            "id": "method_nwogow_createdbcontext__action_33_call_33__linear__method_nwogow_createdbcontext__action_35_guard_clause_35__condition",
            "from": "method_nwogow_createdbcontext__action_33_call_33__linear",
            "to": "method_nwogow_createdbcontext__action_35_guard_clause_35__condition",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 35
          },
          {
            "id": "method_nwogow_createdbcontext__action_35_guard_clause_35__condition__method_nwogow_createdbcontext__action_35_guard_clause_35__true",
            "from": "method_nwogow_createdbcontext__action_35_guard_clause_35__condition",
            "to": "method_nwogow_createdbcontext__action_35_guard_clause_35__true",
            "semanticLabel": "assign default Postgres connection",
            "visibleLabel": "assign default Postgres connection",
            "relation": "transforms",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 35
          },
          {
            "id": "method_nwogow_createdbcontext__action_35_guard_clause_35__condition__method_nwogow_createdbcontext__action_35_guard_clause_35__false",
            "from": "method_nwogow_createdbcontext__action_35_guard_clause_35__condition",
            "to": "method_nwogow_createdbcontext__action_35_guard_clause_35__false",
            "semanticLabel": "keep discovered connection",
            "visibleLabel": "keep discovered connection",
            "relation": "transforms",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 35
          },
          {
            "id": "method_nwogow_createdbcontext__action_35_guard_clause_35__true__method_nwogow_createdbcontext__action_35_guard_clause_35__merge",
            "from": "method_nwogow_createdbcontext__action_35_guard_clause_35__true",
            "to": "method_nwogow_createdbcontext__action_35_guard_clause_35__merge",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 35
          },
          {
            "id": "method_nwogow_createdbcontext__action_35_guard_clause_35__false__method_nwogow_createdbcontext__action_35_guard_clause_35__merge",
            "from": "method_nwogow_createdbcontext__action_35_guard_clause_35__false",
            "to": "method_nwogow_createdbcontext__action_35_guard_clause_35__merge",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 35
          },
          {
            "id": "method_nwogow_createdbcontext__action_35_guard_clause_35__merge__method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__condition",
            "from": "method_nwogow_createdbcontext__action_35_guard_clause_35__merge",
            "to": "method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__condition",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 35
          },
          {
            "id": "method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__condition__method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__true",
            "from": "method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__condition",
            "to": "method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__true",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 35
          },
          {
            "id": "method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__condition__method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__false",
            "from": "method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__condition",
            "to": "method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__false",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 35
          },
          {
            "id": "method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__true__method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__merge",
            "from": "method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__true",
            "to": "method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__merge",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 35
          },
          {
            "id": "method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__false__method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__merge",
            "from": "method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__false",
            "to": "method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__merge",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 35
          },
          {
            "id": "method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__merge__method_nwogow_createdbcontext__action_41_persistence_config_41__linear",
            "from": "method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__merge",
            "to": "method_nwogow_createdbcontext__action_41_persistence_config_41__linear",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 41
          },
          {
            "id": "method_nwogow_createdbcontext__action_41_persistence_config_41__linear__method_nwogow_createdbcontext__action_43_createdbcontext_return_43_2__return",
            "from": "method_nwogow_createdbcontext__action_41_persistence_config_41__linear",
            "to": "method_nwogow_createdbcontext__action_43_createdbcontext_return_43_2__return",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 43
          },
          {
            "id": "method_nwogow_createdbcontext__action_43_createdbcontext_return_43_2__return__method_nwogow_createdbcontext__action_43_return_43__return",
            "from": "method_nwogow_createdbcontext__action_43_createdbcontext_return_43_2__return",
            "to": "method_nwogow_createdbcontext__action_43_return_43__return",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 43
          },
          {
            "id": "method_nwogow_createdbcontext__action_43_return_43__return__call_method_nwogow_createdbcontext__call_43_AppDbContext_ctor",
            "from": "method_nwogow_createdbcontext__action_43_return_43__return",
            "to": "method_nwogow_createdbcontext__call_43_AppDbContext_ctor",
            "semanticLabel": "optionsBuilder.Options (DbContextOptions<AppDbContext>)",
            "visibleLabel": "optionsBuilder.Options DbContextOptions AppDbContext>",
            "relation": "calls",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 43
          },
          {
            "id": "method_nwogow_createdbcontext__call_43_AppDbContext_ctor__implicit_return",
            "from": "method_nwogow_createdbcontext__call_43_AppDbContext_ctor",
            "to": "method_nwogow_createdbcontext__implicit_return",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.Data/Persistence/AppDbContextFactory.cs",
            "sourceLine": 44
          }
        ],
        "metadata": {
          "evidencePaths": [
            "NexusReader.Data/Persistence/AppDbContextFactory.cs"
          ],
          "warnings": [
            "Call target AppDbContext..ctor in NexusReader.Data/Persistence/AppDbContext.cs could not be matched to an extracted method symbol."
          ]
        },
        "subgraphs": []
      },
      "mermaidSource": "---\nconfig:\n  flowchart:\n    defaultRenderer: \"elk\"\n---\nflowchart TD\n    method_nwogow_createdbcontext__call_43_AppDbContext_ctor[[\"AppDbContext..ctor\"]]\n    method_nwogow_createdbcontext__action_12_env_read_12__linear(\"Read ASPNETCORE_ENVIRONMENT\")\n    method_nwogow_createdbcontext__action_15_loop_15__loop_body[[\"while (currentDir != null && !File.Exists(Path.Combine(currentDir.FullName, \\\\\"NexusReader.slnx\\\\\"))) currentDir = currentDir.Parent;\"]]\n    method_nwogow_createdbcontext__action_15_loop_15__loop_entry(\"Walk up directories to find solution file\")\n    method_nwogow_createdbcontext__action_15_loop_15__loop_exit(\"exit loop\")\n    method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_body[[\"while (currentDir != null && !File.Exists(Path.Combine(currentDir.FullName, \\\\\"NexusReader.slnx\\\\\")))\"]]\n    method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry(\"currentDir != null && !File.Exists(Path.Combine(currentDir.FullName, \\\\\"NexusReader.slnx\\\\\"))\")\n    method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_exit(\"Leaves the loop when the condition no longer holds.\")\n    method_nwogow_createdbcontext__action_21_branch_21__condition{\"currentDir != null\"}\n    method_nwogow_createdbcontext__action_21_branch_21__false(\"use current working directory\")\n    method_nwogow_createdbcontext__action_21_branch_21__merge(\"merge\")\n    method_nwogow_createdbcontext__action_21_branch_21__true(\"use src/NexusReader.Web\")\n    method_nwogow_createdbcontext__action_25_config_build_25__linear(\"Build configuration from appsettings and environment\")\n    method_nwogow_createdbcontext__action_33_call_33__linear(\"Get connection string\")\n    method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__condition{\"string.IsNullOrEmpty(connectionString)\"}\n    method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__false(\"false\")\n    method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__merge(\"merge\")\n    method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__true(\"true\")\n    method_nwogow_createdbcontext__action_35_guard_clause_35__condition{\"string.IsNullOrEmpty(connectionString)\"}\n    method_nwogow_createdbcontext__action_35_guard_clause_35__false(\"keep discovered connection\")\n    method_nwogow_createdbcontext__action_35_guard_clause_35__merge(\"merge\")\n    method_nwogow_createdbcontext__action_35_guard_clause_35__true(\"assign default Postgres connection\")\n    method_nwogow_createdbcontext__action_41_persistence_config_41__linear(\"Configure Npgsql with pgvector\")\n    method_nwogow_createdbcontext__entry([\"CreateDbContext entry\"])\n    method_nwogow_createdbcontext__action_43_createdbcontext_return_43_2__return([\"Returns result\"])\n    method_nwogow_createdbcontext__action_43_return_43__return([\"Return configured DbContext\"])\n    method_nwogow_createdbcontext__implicit_return([\"return\"])\n    method_nwogow_createdbcontext__action_12_env_read_12__linear -->|next| method_nwogow_createdbcontext__action_15_loop_15__loop_entry\n    method_nwogow_createdbcontext__action_15_loop_15__loop_body -->|continue| method_nwogow_createdbcontext__action_15_loop_15__loop_entry\n    method_nwogow_createdbcontext__action_15_loop_15__loop_entry -->|iterate| method_nwogow_createdbcontext__action_15_loop_15__loop_body\n    method_nwogow_createdbcontext__action_15_loop_15__loop_entry -->|exit| method_nwogow_createdbcontext__action_15_loop_15__loop_exit\n    method_nwogow_createdbcontext__action_15_loop_15__loop_exit -->|next| method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry\n    method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_body -->|continue| method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry\n    method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry -->|transforms input| method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_body\n    method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_entry -->|Leaves the loop when the condition no longer holds.| method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_exit\n    method_nwogow_createdbcontext__action_16_createdbcontext_loop_16_0__loop_exit -->|next| method_nwogow_createdbcontext__action_21_branch_21__condition\n    method_nwogow_createdbcontext__action_21_branch_21__condition -->|use current working directory| method_nwogow_createdbcontext__action_21_branch_21__false\n    method_nwogow_createdbcontext__action_21_branch_21__condition -->|use src / NexusReader.Web| method_nwogow_createdbcontext__action_21_branch_21__true\n    method_nwogow_createdbcontext__action_21_branch_21__false -->|next| method_nwogow_createdbcontext__action_21_branch_21__merge\n    method_nwogow_createdbcontext__action_21_branch_21__merge -->|next| method_nwogow_createdbcontext__action_25_config_build_25__linear\n    method_nwogow_createdbcontext__action_21_branch_21__true -->|next| method_nwogow_createdbcontext__action_21_branch_21__merge\n    method_nwogow_createdbcontext__action_25_config_build_25__linear -->|next| method_nwogow_createdbcontext__action_33_call_33__linear\n    method_nwogow_createdbcontext__action_33_call_33__linear -->|next| method_nwogow_createdbcontext__action_35_guard_clause_35__condition\n    method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__condition -->|false| method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__false\n    method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__condition -->|true| method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__true\n    method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__false -->|next| method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__merge\n    method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__merge -->|next| method_nwogow_createdbcontext__action_41_persistence_config_41__linear\n    method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__true -->|next| method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__merge\n    method_nwogow_createdbcontext__action_35_guard_clause_35__condition -->|keep discovered connection| method_nwogow_createdbcontext__action_35_guard_clause_35__false\n    method_nwogow_createdbcontext__action_35_guard_clause_35__condition -->|assign default Postgres connection| method_nwogow_createdbcontext__action_35_guard_clause_35__true\n    method_nwogow_createdbcontext__action_35_guard_clause_35__false -->|next| method_nwogow_createdbcontext__action_35_guard_clause_35__merge\n    method_nwogow_createdbcontext__action_35_guard_clause_35__merge -->|next| method_nwogow_createdbcontext__action_35_createdbcontext_branch_35_1__condition\n    method_nwogow_createdbcontext__action_35_guard_clause_35__true -->|next| method_nwogow_createdbcontext__action_35_guard_clause_35__merge\n    method_nwogow_createdbcontext__action_41_persistence_config_41__linear -->|return| method_nwogow_createdbcontext__action_43_createdbcontext_return_43_2__return\n    method_nwogow_createdbcontext__action_43_createdbcontext_return_43_2__return -->|return| method_nwogow_createdbcontext__action_43_return_43__return\n    method_nwogow_createdbcontext__action_43_return_43__return -->|optionsBuilder.Options DbContextOptions AppDbContext>| method_nwogow_createdbcontext__call_43_AppDbContext_ctor\n    method_nwogow_createdbcontext__call_43_AppDbContext_ctor -->|return| method_nwogow_createdbcontext__implicit_return\n    method_nwogow_createdbcontext__entry -->|next| method_nwogow_createdbcontext__action_12_env_read_12__linear",
      "warnings": [
        "diagram method_nwogow_createdbcontext__fragment_diagram exceeds preferred complexity thresholds (27 nodes, 31 edges)."
      ]
    }
  ],
  "renderHints": {
    "preferredSurface": "three-d",
    "defaultDiagramId": "file_1h2hpbe_appdbcontextfactory_cs_execution_view",
    "controlFlowDiagramIds": [
      "method_nwogow_createdbcontext__fragment_diagram"
    ],
    "defaultControlFlowDiagramIdsBySymbolId": {
      "method:nwogow:createdbcontext": "method_nwogow_createdbcontext__fragment_diagram"
    }
  }
}