Jupiter.Market.Elastic.Comparables.Services.IndexerService
This service coordinates Service Bus consumption, deal enrichment from Table.Deal and related tables, and synchronization with the Comparables Index.
See the detailed conceptual article: IndexerService Logic.
Methods
#ctor
Initializes a new instance of the #ctor class.
Parameters:
- esOptions: Elasticsearch settings.
- indexerOptions: Indexer settings.
- dataService: The data service for deal retrieval.
- elasticIndexService: The ElasticSearch index service.
- logger: The logger instance.
- loggerHelper: The logger helper for conditional logging.
- dealDataMapper: The deal data mapper for enrichment.
- serviceBusClient: The Azure Service Bus client.
- serviceBusOptions: Service Bus settings.
- serviceBusAdministrationClient: The Service Bus administration client.
- serviceBusMessageService: The Service Bus message service.
RunAsync
No summary available.
Parameters:
- reprocessDeadLetterQueue: Whether to reprocess dead-letter queue messages.
- maxDeadLetterMessagesToProcess: Maximum number of dead-letter messages to process.
- cancellationToken: Cancellation token.
Jupiter.Market.Elastic.Comparables.Services.IndexerService.ResendOldestUpdated
No summary available.
RunManualAsync
No summary available.
Parameters:
- cancellationToken: Cancellation token.
ErrorHandler
No summary available.
Parameters:
- args: The error event arguments.
Jupiter.Market.Elastic.Comparables.Services.IndexerService.LogServiceBusProgress
No summary available.
ReprocessDeadLetterMessagesAsync
No summary available.
Parameters:
- maxMessagesToProcess: The maximum number of messages to process.
- usePriority: Whether to use the high-priority subscription.
- cancellationToken: Cancellation token.
IndexDealByIdAsync
No summary available.
Retrieves data from Table.Deal, Table.Listing, Table.Sale, and Table.Lease to construct the enriched IndexDealByIdAsync object.
Title/UPRN Split Logic: If the deal has a TitleId (and not UprnId), all comparables are fetched using the Title-based queries and grouped by (DealId, TitleId).
If the deal has a UprnId (and not TitleId), all comparables are fetched using the UPRN-based queries and grouped by (DealId, UprnId).
If neither is present, the deal is skipped and a warning is logged.
Deal Construction: All comparables for the deal are combined into a ConcurrentBag<Comparable>.
The IndexDealByIdAsync object is constructed with IDs, property type, comparable type/status, all comparables, and enriched IndexDealByIdAsync using M:Jupiter.Market.Elastic.Comparables.Mappers.DealDataMapper.MapFromComparables(Jupiter.Market.Elastic.Comparables.Models.DealReference,System.Collections.Generic.List{Jupiter.Market.Elastic.Comparables.Models.Comparable})DealType and OwnershipType are determined from the comparables and deal reference.
The constructed deal is upserted into the Comparables Index.
Parameters:
- dealId: The deal ID to index.
- cancellationToken: Cancellation token.
GetDealTypeForDeal
Determines the GetDealTypeForDeal for a deal based on its comparables.
Parameters:
- combinedComps: The combined comparables.
Returns: The determined .
GetOwnershipTypeForDeal
Determines the GetOwnershipTypeForDeal for a deal based on its comparables and reference.
Parameters:
- combinedComps: The combined comparables.
- dealReference: The deal reference.
Returns: The determined .
GetComparableStatusForDeal
Determines the GetComparableStatusForDeal for a deal based on its comparables.
Parameters:
- combinedComps: The combined comparables.
Returns: The determined .
LoadHousePriceIndexDataAsync
No summary available.
Parameters:
- cancellationToken: Cancellation token.