@withpotter/review — module reference
HTTP routes this module mounts, plus its internal use-cases, entities, and repositories. The exhaustive request/response contract is the engine’s OpenAPI document at /docs; the layered structure below follows the package internal architecture.
HTTP routes
Reviews /reviews
| Method | Path | Auth | Description |
|---|---|---|---|
GET | /reviews | — | List reviews with filters |
GET | /reviews/:id | — | Get review by ID |
GET | /reviews/admin/all | Yes | List all reviews (admin) |
GET | /reviews/stats/:contentId | — | Get review stats for a content item |
POST | /reviews | Yes | Create a new review |
POST | /reviews/:id/helpful | Yes | Mark review as helpful |
POST | /reviews/:id/report | Yes | Report review |
POST | /reviews/:id/response | Yes | Add merchant response to review |
PUT | /reviews/:id | Yes | Update review |
PATCH | /reviews/:id/moderate | Yes | Moderate review (approve/reject/flag) |
DELETE | /reviews/:id | Yes | Delete review |
Internals
Use-cases
Application operations. Each is a single-purpose class with one execute() method.
| Use-case | Signature |
|---|---|
AddMerchantResponseUseCase | execute(tenantId: string, reviewId: string, response: string): Promise<ReviewResponseDto> |
CreateReviewUseCase | execute(tenantId: string, dto: CreateReviewDto, memberId?: string): Promise<ReviewResponseDto> |
DeleteReviewUseCase | execute(tenantId: string, reviewId: string, memberId?: string, isAdmin = false): Promise<void> |
GetReviewStatsUseCase | execute(tenantId: string, contentId: string): Promise<ReviewStatsResponseDto> |
GetReviewUseCase | execute(tenantId: string, reviewId: string): Promise<ReviewResponseDto> |
ListReviewsUseCase | execute(tenantId: string, query: ReviewQueryDto): Promise<PaginatedReviewsResponseDto> |
MarkReviewHelpfulUseCase | execute(tenantId: string, reviewId: string): Promise<ReviewResponseDto> |
ModerateReviewUseCase | execute(tenantId: string, reviewId: string, dto: ModerateReviewDto): Promise<ReviewResponseDto> |
ReportReviewUseCase | execute(tenantId: string, reviewId: string): Promise<ReviewResponseDto> |
UpdateReviewUseCase | execute(tenantId: string, reviewId: string, dto: UpdateReviewDto, memberId?: string): Promise<ReviewResponseDto> |
Entities
Sequelize models owned by this module.
Review — table reviews
| Field | Type |
|---|---|
id | string |
tenantId | string |
tenant | Tenant |
contentId | string |
content | Content |
memberId | string | null |
member | Member |
rating | number |
title | string | null |
body | string | null |
reviewerName | string |
reviewerEmail | string | null |
status | ReviewStatus |
isVerifiedPurchase | boolean |
moderationNote | string | null |
moderatedAt | Date | null |
helpfulCount | number |
reportCount | number |
media | { url: string |
merchantResponse | string | null |
merchantRespondedAt | Date | null |
data | Record<string, unknown> |
createdAt | Date |
updatedAt | Date |
Repositories
Data-access classes wrapping the entities.
ReviewRepository
findById · findByContentAndMember · findWithFilters · getContentStats · getRecentReviews · getTenantStats · getReviewTimeSeries · getTopReviewedContent · create · update · delete · approve · reject · flag · incrementHelpful · incrementReport · addMerchantResponse
Generated from the module’s source. Routes are relative to the engine root
(default http://localhost:3001). For full request/response schemas use the live
OpenAPI document.