1 line
3.4 KiB
JSON
1 line
3.4 KiB
JSON
{"path":"NexusReader.Application/Abstractions/Services/IBillingService.cs","purpose":"Defines an application-layer billing service abstraction that declares handlers for subscription updates and deletions (used by infrastructure implementations to react to Stripe/customer events).","classification":{"role":"service","layer":"application","confidence":0.86,"evidence":["Service naming pattern","Application/service path heuristic","namespace NexusReader.Application.Abstractions.Services","public interface IBillingService declares subscription-related handler methods"]},"className":"IBillingService","methods":[{"name":"HandleSubscriptionUpdatedAsync","line":8,"endLine":8,"signature":"(customerEmail: string, stripeProductId: string) -> Task<Result>","purpose":"Contract for handling when a customer's subscription is created or updated (by Stripe or equivalent).","calls":[],"actions":[{"id":"abstract-definition_8","kind":"mapping","label":"declares handler contract","line":8,"detail":"Interface method with no implementation; concrete services implement business behavior (e.g., persistence, notifications, mapping).","visibility":"detail-only","confidence":0.7}]},{"name":"HandleSubscriptionDeletedAsync","line":9,"endLine":9,"signature":"(customerEmail: string) -> Task<Result>","purpose":"Contract for handling when a customer's subscription is deleted (cleanup or downgrade actions).","calls":[],"actions":[{"id":"abstract-definition_9","kind":"mapping","label":"declares handler contract","line":9,"detail":"Interface method with no implementation; concrete services implement removal/fallback logic.","visibility":"detail-only","confidence":0.7}]}],"types":[{"name":"IBillingService","kind":"interface","line":6,"purpose":"Abstraction exposing billing/subscription lifecycle handlers to be implemented by infrastructure or application services.","fields":[{"name":"HandleSubscriptionUpdatedAsync","type":"Task<Result>","required":true,"line":8,"description":"Async handler invoked when a subscription is created or updated; accepts customer email and Stripe product id."},{"name":"HandleSubscriptionDeletedAsync","type":"Task<Result>","required":true,"line":9,"description":"Async handler invoked when a subscription is deleted; accepts customer email."}]}],"serviceRegistrations":[],"startupActions":[],"dependencies":["NexusReader.Domain.Entities (using)","FluentResults (using)"],"patterns":["Service Interface","Dependency Injection (abstraction)"],"domainConcepts":["Billing","Subscription","Customer (email)","StripeProduct"],"keyDetails":"Pure interface in the Application.Abstractions layer; no runtime behavior here—concrete implementations will perform persistence, external calls, mapping, and error handling and return FluentResults.Result.","orchestrationMethods":[],"typedContracts":[{"name":"IBillingService","kind":"interface","line":6,"fieldCount":2,"evidencePaths":["NexusReader.Application/Abstractions/Services/IBillingService.cs"]}],"persistenceInteractions":[],"externalInteractions":[],"evidenceAnchors":[{"kind":"typed-contract","label":"IBillingService","line":6,"summary":"interface with 2 fields.","confidence":0.8,"evidencePaths":["NexusReader.Application/Abstractions/Services/IBillingService.cs"]}],"cacheMetadata":{"schemaVersion":2,"analysisVersion":"2026-05-23.cache-v1","contentChecksum":"1ea42394f881117d7099f76358dac73a54ee1ba37391a7c814ba6979efff5008","sourceByteSize":328,"analyzedAt":"2026-05-23T16:16:18.338Z","technology":"dotnet"}} |