[
  {
    "fragmentId": "method:5tn4c6:up__fragment",
    "ownerFileId": "file:13u663i:20260510151022-normalizeauthor-cs",
    "ownerSymbolId": "method:5tn4c6:up",
    "ownerSymbolName": "Up",
    "entryNodeId": "method:5tn4c6:up__entry",
    "exitNodeIds": [
      "method:5tn4c6:up__implicit_return"
    ],
    "nodes": [
      {
        "id": "method:5tn4c6:up__entry",
        "kind": "entry",
        "label": "Up entry",
        "line": 12,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.99,
        "detail": "Apply schema changes: remove Ebooks.Author string, add Ebooks.AuthorId int, create Authors table, create index and foreign key."
      },
      {
        "id": "method:5tn4c6:up__action_14_schema_change_14__linear",
        "kind": "statement",
        "label": "Drop column Ebooks.Author",
        "line": 14,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.7,
        "detail": "migrationBuilder.DropColumn(name: \"Author\", table: \"Ebooks\")"
      },
      {
        "id": "method:5tn4c6:up__action_18_schema_change_18__linear",
        "kind": "statement",
        "label": "Add column Ebooks.AuthorId (int, non-nullable, default 0)",
        "line": 18,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.7,
        "detail": "migrationBuilder.AddColumn<int>(name: \"AuthorId\", table: \"Ebooks\", type: \"integer\", nullable: false, defaultValue: 0)"
      },
      {
        "id": "method:5tn4c6:up__action_25_schema_change_25__linear",
        "kind": "statement",
        "label": "Create Authors table",
        "line": 25,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.7,
        "detail": "Creates Authors(Id int identity, Name varchar(255) not null) and primary key"
      },
      {
        "id": "method:5tn4c6:up__action_38_schema_change_38__linear",
        "kind": "statement",
        "label": "Create index IX_Ebooks_AuthorId",
        "line": 38,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.7,
        "detail": "migrationBuilder.CreateIndex(name: \"IX_Ebooks_AuthorId\", table: \"Ebooks\", column: \"AuthorId\")"
      },
      {
        "id": "method:5tn4c6:up__action_43_schema_change_43__linear",
        "kind": "statement",
        "label": "Add foreign key FK_Ebooks_Authors_AuthorId (Restrict on delete)",
        "line": 43,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.7,
        "detail": "migrationBuilder.AddForeignKey(name: \"FK_Ebooks_Authors_AuthorId\", table: \"Ebooks\", column: \"AuthorId\", principalTable: \"Authors\", principalColumn: \"Id\", onDelete: ReferentialAction.Restrict)"
      },
      {
        "id": "method:5tn4c6:up__implicit_return",
        "kind": "return",
        "label": "return",
        "line": 50,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.72,
        "detail": "Implicit method exit inferred from method boundary."
      }
    ],
    "edges": [
      {
        "id": "method:5tn4c6:up__entry__method:5tn4c6:up__action_14_schema_change_14__linear",
        "from": "method:5tn4c6:up__entry",
        "to": "method:5tn4c6:up__action_14_schema_change_14__linear",
        "kind": "next",
        "line": 14,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.7
      },
      {
        "id": "method:5tn4c6:up__action_14_schema_change_14__linear__method:5tn4c6:up__action_18_schema_change_18__linear",
        "from": "method:5tn4c6:up__action_14_schema_change_14__linear",
        "to": "method:5tn4c6:up__action_18_schema_change_18__linear",
        "kind": "next",
        "line": 18,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.7
      },
      {
        "id": "method:5tn4c6:up__action_18_schema_change_18__linear__method:5tn4c6:up__action_25_schema_change_25__linear",
        "from": "method:5tn4c6:up__action_18_schema_change_18__linear",
        "to": "method:5tn4c6:up__action_25_schema_change_25__linear",
        "kind": "next",
        "line": 25,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.7
      },
      {
        "id": "method:5tn4c6:up__action_25_schema_change_25__linear__method:5tn4c6:up__action_38_schema_change_38__linear",
        "from": "method:5tn4c6:up__action_25_schema_change_25__linear",
        "to": "method:5tn4c6:up__action_38_schema_change_38__linear",
        "kind": "next",
        "line": 38,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.7
      },
      {
        "id": "method:5tn4c6:up__action_38_schema_change_38__linear__method:5tn4c6:up__action_43_schema_change_43__linear",
        "from": "method:5tn4c6:up__action_38_schema_change_38__linear",
        "to": "method:5tn4c6:up__action_43_schema_change_43__linear",
        "kind": "next",
        "line": 43,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.7
      },
      {
        "id": "method:5tn4c6:up__action_43_schema_change_43__linear__implicit_return",
        "from": "method:5tn4c6:up__action_43_schema_change_43__linear",
        "to": "method:5tn4c6:up__implicit_return",
        "kind": "return",
        "line": 50,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.72
      }
    ],
    "jumpTargets": [],
    "exceptionTargets": [],
    "loopBackEdges": [],
    "mergeNodeIds": [],
    "language": "csharp",
    "confidence": 0.8799999999999999,
    "lineSpan": {
      "start": 12,
      "end": 50
    },
    "unsupportedConstructs": [],
    "evidence": [
      {
        "path": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "line": 12,
        "summary": "Control-flow fragment extracted for method Up.",
        "kind": "file-summary"
      }
    ]
  },
  {
    "fragmentId": "method:wcoxzi:down__fragment",
    "ownerFileId": "file:13u663i:20260510151022-normalizeauthor-cs",
    "ownerSymbolId": "method:wcoxzi:down",
    "ownerSymbolName": "Down",
    "entryNodeId": "method:wcoxzi:down__entry",
    "exitNodeIds": [
      "method:wcoxzi:down__implicit_return"
    ],
    "nodes": [
      {
        "id": "method:wcoxzi:down__entry",
        "kind": "entry",
        "label": "Down entry",
        "line": 53,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.99,
        "detail": "Revert the Up changes: drop FK, drop Authors table, drop index and AuthorId column, and re-add Ebooks.Author string column."
      },
      {
        "id": "method:wcoxzi:down__action_55_schema_change_55__linear",
        "kind": "statement",
        "label": "Drop foreign key FK_Ebooks_Authors_AuthorId",
        "line": 55,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.7,
        "detail": "migrationBuilder.DropForeignKey(name: \"FK_Ebooks_Authors_AuthorId\", table: \"Ebooks\")"
      },
      {
        "id": "method:wcoxzi:down__action_59_schema_change_59__linear",
        "kind": "statement",
        "label": "Drop Authors table",
        "line": 59,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.7,
        "detail": "migrationBuilder.DropTable(name: \"Authors\")"
      },
      {
        "id": "method:wcoxzi:down__action_62_schema_change_62__linear",
        "kind": "statement",
        "label": "Drop index IX_Ebooks_AuthorId",
        "line": 62,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.7,
        "detail": "migrationBuilder.DropIndex(name: \"IX_Ebooks_AuthorId\", table: \"Ebooks\")"
      },
      {
        "id": "method:wcoxzi:down__action_66_schema_change_66__linear",
        "kind": "statement",
        "label": "Drop column Ebooks.AuthorId",
        "line": 66,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.7,
        "detail": "migrationBuilder.DropColumn(name: \"AuthorId\", table: \"Ebooks\")"
      },
      {
        "id": "method:wcoxzi:down__action_70_schema_change_70__linear",
        "kind": "statement",
        "label": "Add column Ebooks.Author (varchar(255), non-nullable, default \"\")",
        "line": 70,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.7,
        "detail": "migrationBuilder.AddColumn<string>(name: \"Author\", table: \"Ebooks\", type: \"character varying(255)\", maxLength: 255, nullable: false, defaultValue: \"\")"
      },
      {
        "id": "method:wcoxzi:down__implicit_return",
        "kind": "return",
        "label": "return",
        "line": 77,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.72,
        "detail": "Implicit method exit inferred from method boundary."
      }
    ],
    "edges": [
      {
        "id": "method:wcoxzi:down__entry__method:wcoxzi:down__action_55_schema_change_55__linear",
        "from": "method:wcoxzi:down__entry",
        "to": "method:wcoxzi:down__action_55_schema_change_55__linear",
        "kind": "next",
        "line": 55,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.7
      },
      {
        "id": "method:wcoxzi:down__action_55_schema_change_55__linear__method:wcoxzi:down__action_59_schema_change_59__linear",
        "from": "method:wcoxzi:down__action_55_schema_change_55__linear",
        "to": "method:wcoxzi:down__action_59_schema_change_59__linear",
        "kind": "next",
        "line": 59,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.7
      },
      {
        "id": "method:wcoxzi:down__action_59_schema_change_59__linear__method:wcoxzi:down__action_62_schema_change_62__linear",
        "from": "method:wcoxzi:down__action_59_schema_change_59__linear",
        "to": "method:wcoxzi:down__action_62_schema_change_62__linear",
        "kind": "next",
        "line": 62,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.7
      },
      {
        "id": "method:wcoxzi:down__action_62_schema_change_62__linear__method:wcoxzi:down__action_66_schema_change_66__linear",
        "from": "method:wcoxzi:down__action_62_schema_change_62__linear",
        "to": "method:wcoxzi:down__action_66_schema_change_66__linear",
        "kind": "next",
        "line": 66,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.7
      },
      {
        "id": "method:wcoxzi:down__action_66_schema_change_66__linear__method:wcoxzi:down__action_70_schema_change_70__linear",
        "from": "method:wcoxzi:down__action_66_schema_change_66__linear",
        "to": "method:wcoxzi:down__action_70_schema_change_70__linear",
        "kind": "next",
        "line": 70,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.7
      },
      {
        "id": "method:wcoxzi:down__action_70_schema_change_70__linear__implicit_return",
        "from": "method:wcoxzi:down__action_70_schema_change_70__linear",
        "to": "method:wcoxzi:down__implicit_return",
        "kind": "return",
        "line": 77,
        "sourcePath": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "confidence": 0.72
      }
    ],
    "jumpTargets": [],
    "exceptionTargets": [],
    "loopBackEdges": [],
    "mergeNodeIds": [],
    "language": "csharp",
    "confidence": 0.8799999999999999,
    "lineSpan": {
      "start": 53,
      "end": 77
    },
    "unsupportedConstructs": [],
    "evidence": [
      {
        "path": "NexusReader.Data/Migrations/20260510151022_NormalizeAuthor.cs",
        "line": 53,
        "summary": "Control-flow fragment extracted for method Down.",
        "kind": "file-summary"
      }
    ]
  }
]