[
  {
    "fragmentId": "method:e4n4cn:buildtargetmodel__fragment",
    "ownerFileId": "file:1psv1cv:20260506184227-updatesubscriptionplanisunlimited",
    "ownerSymbolId": "method:e4n4cn:buildtargetmodel",
    "ownerSymbolName": "BuildTargetModel",
    "entryNodeId": "method:e4n4cn:buildtargetmodel__entry",
    "exitNodeIds": [
      "method:e4n4cn:buildtargetmodel__implicit_return"
    ],
    "nodes": [
      {
        "id": "method:e4n4cn:buildtargetmodel__entry",
        "kind": "entry",
        "label": "BuildTargetModel entry",
        "line": 20,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.99,
        "detail": "Constructs the EF Core model for this migration: configures entities, properties, constraints, relationships, annotations and seed data."
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_22_warning_directive_22__linear",
        "kind": "statement",
        "label": "Suppress obsolete warnings",
        "line": 22,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7,
        "detail": "#pragma warning disable 612, 618 (and restore at end)"
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_23_annotation_23__linear",
        "kind": "statement",
        "label": "Set model annotations",
        "line": 23,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7,
        "detail": "modelBuilder.HasAnnotation(\"ProductVersion\",\"10.0.7\").HasAnnotation(\"Relational:MaxIdentifierLength\", 63)"
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_27_extension_enable_27__linear",
        "kind": "statement",
        "label": "Enable Postgres vector extension",
        "line": 27,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7,
        "detail": "NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, \"vector\")"
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_28_identity_config_28__linear",
        "kind": "statement",
        "label": "Use identity-by-default columns for Postgres",
        "line": 28,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7,
        "detail": "NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder)"
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_162_define_entity_162__linear",
        "kind": "statement",
        "label": "Define entity 'Ebook'",
        "line": 162,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7,
        "detail": "Configures properties, keys, indexes (TenantId, UserId), table name 'Ebooks', and required constraints"
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_209_define_entity_209__linear",
        "kind": "statement",
        "label": "Define entity 'KnowledgeUnit'",
        "line": 209,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7,
        "detail": "Configures properties (including Vector vector(768)), keys, indexes (SourceId, TenantId), table 'KnowledgeUnits'"
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_255_define_entity_255__linear",
        "kind": "statement",
        "label": "Define entity 'KnowledgeUnitLink'",
        "line": 255,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7,
        "detail": "Configures identity Id, relation fields, indexes, table 'KnowledgeUnitLinks'"
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_287_define_entity_287__linear",
        "kind": "statement",
        "label": "Define entity 'NexusUser'",
        "line": 287,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7,
        "detail": "Configures many identity/user properties, SubscriptionPlanId default and index, indexes (NormalizedEmail, NormalizedUserName, SubscriptionPlanId, TenantId), table 'AspNetUsers'"
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_385_define_entity_385__linear",
        "kind": "statement",
        "label": "Define entity 'QuizResult'",
        "line": 385,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7,
        "detail": "Configures quiz result properties, indexes (TenantId, UserId), table 'QuizResults'"
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_422_define_entity_422__linear",
        "kind": "statement",
        "label": "Define entity 'SemanticKnowledgeCache'",
        "line": 422,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7,
        "detail": "Configures properties including Vector vector(1536), primary key ContentHash, unique index and TenantId index, table 'SemanticKnowledgeCache'"
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_467_define_entity_467__linear",
        "kind": "statement",
        "label": "Define entity 'SubscriptionPlan' with seed data",
        "line": 467,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7,
        "detail": "Configures SubscriptionPlan properties (AITokenLimit, IsUnlimitedTokens, MonthlyPrice, PlanName, StripeProductId), unique index on PlanName and seed data rows for Free, Basic, Pro, Enterprise"
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_501_seed_data_501__linear",
        "kind": "statement",
        "label": "Seed SubscriptionPlans",
        "line": 501,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7,
        "detail": "HasData adds four SubscriptionPlan rows (Ids 1..4) including Enterprise with IsUnlimitedTokens = true"
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_540_relationship_540__linear",
        "kind": "statement",
        "label": "Identity / role and user relations (FKs with cascade)",
        "line": 540,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7,
        "detail": "Configures foreign keys and cascade delete between IdentityRoleClaim, IdentityUserClaim, IdentityUserLogin, IdentityUserRole, IdentityUserToken and identity/user tables"
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_591_relationship_591__linear",
        "kind": "statement",
        "label": "Ebook -> NexusUser (FK, cascade)",
        "line": 591,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7,
        "detail": "b.HasOne(...).WithMany(\"Ebooks\").HasForeignKey(\"UserId\").OnDelete(DeleteBehavior.Cascade).IsRequired()"
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_602_relationship_602__linear",
        "kind": "statement",
        "label": "KnowledgeUnitLink -> KnowledgeUnit (FKs, cascade)",
        "line": 602,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7,
        "detail": "SourceUnit and TargetUnit FKs with cascade delete and navigations"
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_621_relationship_621__linear",
        "kind": "statement",
        "label": "NexusUser -> SubscriptionPlan (FK, restrict)",
        "line": 621,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7,
        "detail": "b.HasOne(SubscriptionPlan).WithMany().HasForeignKey(\"SubscriptionPlanId\").OnDelete(DeleteBehavior.Restrict).IsRequired()"
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_643_navigation_643__linear",
        "kind": "statement",
        "label": "Configure entity navigations",
        "line": 643,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7,
        "detail": "Sets navigation properties for KnowledgeUnit Incoming/OutgoingLinks and NexusUser Ebooks/QuizResults"
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__implicit_return",
        "kind": "return",
        "label": "return",
        "line": 657,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.72,
        "detail": "Implicit method exit inferred from method boundary."
      }
    ],
    "edges": [
      {
        "id": "method:e4n4cn:buildtargetmodel__entry__method:e4n4cn:buildtargetmodel__action_22_warning_directive_22__linear",
        "from": "method:e4n4cn:buildtargetmodel__entry",
        "to": "method:e4n4cn:buildtargetmodel__action_22_warning_directive_22__linear",
        "kind": "next",
        "line": 22,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_22_warning_directive_22__linear__method:e4n4cn:buildtargetmodel__action_23_annotation_23__linear",
        "from": "method:e4n4cn:buildtargetmodel__action_22_warning_directive_22__linear",
        "to": "method:e4n4cn:buildtargetmodel__action_23_annotation_23__linear",
        "kind": "next",
        "line": 23,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_23_annotation_23__linear__method:e4n4cn:buildtargetmodel__action_27_extension_enable_27__linear",
        "from": "method:e4n4cn:buildtargetmodel__action_23_annotation_23__linear",
        "to": "method:e4n4cn:buildtargetmodel__action_27_extension_enable_27__linear",
        "kind": "next",
        "line": 27,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_27_extension_enable_27__linear__method:e4n4cn:buildtargetmodel__action_28_identity_config_28__linear",
        "from": "method:e4n4cn:buildtargetmodel__action_27_extension_enable_27__linear",
        "to": "method:e4n4cn:buildtargetmodel__action_28_identity_config_28__linear",
        "kind": "next",
        "line": 28,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_28_identity_config_28__linear__method:e4n4cn:buildtargetmodel__action_162_define_entity_162__linear",
        "from": "method:e4n4cn:buildtargetmodel__action_28_identity_config_28__linear",
        "to": "method:e4n4cn:buildtargetmodel__action_162_define_entity_162__linear",
        "kind": "next",
        "line": 162,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_162_define_entity_162__linear__method:e4n4cn:buildtargetmodel__action_209_define_entity_209__linear",
        "from": "method:e4n4cn:buildtargetmodel__action_162_define_entity_162__linear",
        "to": "method:e4n4cn:buildtargetmodel__action_209_define_entity_209__linear",
        "kind": "next",
        "line": 209,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_209_define_entity_209__linear__method:e4n4cn:buildtargetmodel__action_255_define_entity_255__linear",
        "from": "method:e4n4cn:buildtargetmodel__action_209_define_entity_209__linear",
        "to": "method:e4n4cn:buildtargetmodel__action_255_define_entity_255__linear",
        "kind": "next",
        "line": 255,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_255_define_entity_255__linear__method:e4n4cn:buildtargetmodel__action_287_define_entity_287__linear",
        "from": "method:e4n4cn:buildtargetmodel__action_255_define_entity_255__linear",
        "to": "method:e4n4cn:buildtargetmodel__action_287_define_entity_287__linear",
        "kind": "next",
        "line": 287,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_287_define_entity_287__linear__method:e4n4cn:buildtargetmodel__action_385_define_entity_385__linear",
        "from": "method:e4n4cn:buildtargetmodel__action_287_define_entity_287__linear",
        "to": "method:e4n4cn:buildtargetmodel__action_385_define_entity_385__linear",
        "kind": "next",
        "line": 385,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_385_define_entity_385__linear__method:e4n4cn:buildtargetmodel__action_422_define_entity_422__linear",
        "from": "method:e4n4cn:buildtargetmodel__action_385_define_entity_385__linear",
        "to": "method:e4n4cn:buildtargetmodel__action_422_define_entity_422__linear",
        "kind": "next",
        "line": 422,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_422_define_entity_422__linear__method:e4n4cn:buildtargetmodel__action_467_define_entity_467__linear",
        "from": "method:e4n4cn:buildtargetmodel__action_422_define_entity_422__linear",
        "to": "method:e4n4cn:buildtargetmodel__action_467_define_entity_467__linear",
        "kind": "next",
        "line": 467,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_467_define_entity_467__linear__method:e4n4cn:buildtargetmodel__action_501_seed_data_501__linear",
        "from": "method:e4n4cn:buildtargetmodel__action_467_define_entity_467__linear",
        "to": "method:e4n4cn:buildtargetmodel__action_501_seed_data_501__linear",
        "kind": "next",
        "line": 501,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_501_seed_data_501__linear__method:e4n4cn:buildtargetmodel__action_540_relationship_540__linear",
        "from": "method:e4n4cn:buildtargetmodel__action_501_seed_data_501__linear",
        "to": "method:e4n4cn:buildtargetmodel__action_540_relationship_540__linear",
        "kind": "next",
        "line": 540,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_540_relationship_540__linear__method:e4n4cn:buildtargetmodel__action_591_relationship_591__linear",
        "from": "method:e4n4cn:buildtargetmodel__action_540_relationship_540__linear",
        "to": "method:e4n4cn:buildtargetmodel__action_591_relationship_591__linear",
        "kind": "next",
        "line": 591,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_591_relationship_591__linear__method:e4n4cn:buildtargetmodel__action_602_relationship_602__linear",
        "from": "method:e4n4cn:buildtargetmodel__action_591_relationship_591__linear",
        "to": "method:e4n4cn:buildtargetmodel__action_602_relationship_602__linear",
        "kind": "next",
        "line": 602,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_602_relationship_602__linear__method:e4n4cn:buildtargetmodel__action_621_relationship_621__linear",
        "from": "method:e4n4cn:buildtargetmodel__action_602_relationship_602__linear",
        "to": "method:e4n4cn:buildtargetmodel__action_621_relationship_621__linear",
        "kind": "next",
        "line": 621,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_621_relationship_621__linear__method:e4n4cn:buildtargetmodel__action_643_navigation_643__linear",
        "from": "method:e4n4cn:buildtargetmodel__action_621_relationship_621__linear",
        "to": "method:e4n4cn:buildtargetmodel__action_643_navigation_643__linear",
        "kind": "next",
        "line": 643,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.7
      },
      {
        "id": "method:e4n4cn:buildtargetmodel__action_643_navigation_643__linear__implicit_return",
        "from": "method:e4n4cn:buildtargetmodel__action_643_navigation_643__linear",
        "to": "method:e4n4cn:buildtargetmodel__implicit_return",
        "kind": "return",
        "line": 657,
        "sourcePath": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "confidence": 0.72
      }
    ],
    "jumpTargets": [],
    "exceptionTargets": [],
    "loopBackEdges": [],
    "mergeNodeIds": [],
    "language": "csharp",
    "confidence": 0.98,
    "lineSpan": {
      "start": 20,
      "end": 657
    },
    "unsupportedConstructs": [],
    "evidence": [
      {
        "path": "NexusReader.Data/Migrations/20260506184227_UpdateSubscriptionPlanIsUnlimitedTokens.Designer.cs",
        "line": 20,
        "summary": "Control-flow fragment extracted for method BuildTargetModel.",
        "kind": "file-summary"
      }
    ]
  }
]