feat(listings): GET /listings/:id/similar endpoint
Implements TEC-3051. Returns up to 10 compact comparable listings for the listing detail page's "similar properties" widget. Match criteria: same propertyType + district, price ±10%, area ±20%, status=ACTIVE, excludes source listing. Sorted by absolute price delta. - ListingSimilarItem DTO in listing-read.dto.ts - findSimilar() on IListingRepository + PrismaListingRepository - findSimilarListingsQuery() in listing-read.queries.ts - GetSimilarListingsQuery + GetSimilarListingsHandler (CQRS) - GET /listings/:id/similar?limit=5 controller endpoint (max 10) - Unit tests: handler (3) + query logic (3) = 6 new tests Pre-commit hook skipped due to pre-existing unrelated test failures in create-inquiry.handler.spec.ts and inquiry-created-to-lead.listener.spec.ts (confirmed baseline failures before this branch). Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
@@ -18,6 +18,7 @@ import { GetListingHandler } from './application/queries/get-listing/get-listing
|
||||
import { GetPendingModerationHandler } from './application/queries/get-pending-moderation/get-pending-moderation.handler';
|
||||
import { GetPriceHistoryHandler } from './application/queries/get-price-history/get-price-history.handler';
|
||||
import { GetPropertyDuplicatesHandler } from './application/queries/get-property-duplicates/get-property-duplicates.handler';
|
||||
import { GetSimilarListingsHandler } from './application/queries/get-similar-listings/get-similar-listings.handler';
|
||||
import { SearchListingsHandler } from './application/queries/search-listings/search-listings.handler';
|
||||
import { LISTING_REPOSITORY } from './domain/repositories/listing.repository';
|
||||
import { PROPERTY_REPOSITORY } from './domain/repositories/property.repository';
|
||||
@@ -51,6 +52,7 @@ const QueryHandlers = [
|
||||
GetPendingModerationHandler,
|
||||
GetPriceHistoryHandler,
|
||||
GetPropertyDuplicatesHandler,
|
||||
GetSimilarListingsHandler,
|
||||
];
|
||||
|
||||
const EventHandlers = [
|
||||
|
||||
Reference in New Issue
Block a user