@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

MethodPathAuthDescription
GET/reviewsList reviews with filters
GET/reviews/:idGet review by ID
GET/reviews/admin/allYesList all reviews (admin)
GET/reviews/stats/:contentIdGet review stats for a content item
POST/reviewsYesCreate a new review
POST/reviews/:id/helpfulYesMark review as helpful
POST/reviews/:id/reportYesReport review
POST/reviews/:id/responseYesAdd merchant response to review
PUT/reviews/:idYesUpdate review
PATCH/reviews/:id/moderateYesModerate review (approve/reject/flag)
DELETE/reviews/:idYesDelete review

Internals

Use-cases

Application operations. Each is a single-purpose class with one execute() method.

Use-caseSignature
AddMerchantResponseUseCaseexecute(tenantId: string, reviewId: string, response: string): Promise<ReviewResponseDto>
CreateReviewUseCaseexecute(tenantId: string, dto: CreateReviewDto, memberId?: string): Promise<ReviewResponseDto>
DeleteReviewUseCaseexecute(tenantId: string, reviewId: string, memberId?: string, isAdmin = false): Promise<void>
GetReviewStatsUseCaseexecute(tenantId: string, contentId: string): Promise<ReviewStatsResponseDto>
GetReviewUseCaseexecute(tenantId: string, reviewId: string): Promise<ReviewResponseDto>
ListReviewsUseCaseexecute(tenantId: string, query: ReviewQueryDto): Promise<PaginatedReviewsResponseDto>
MarkReviewHelpfulUseCaseexecute(tenantId: string, reviewId: string): Promise<ReviewResponseDto>
ModerateReviewUseCaseexecute(tenantId: string, reviewId: string, dto: ModerateReviewDto): Promise<ReviewResponseDto>
ReportReviewUseCaseexecute(tenantId: string, reviewId: string): Promise<ReviewResponseDto>
UpdateReviewUseCaseexecute(tenantId: string, reviewId: string, dto: UpdateReviewDto, memberId?: string): Promise<ReviewResponseDto>

Entities

Sequelize models owned by this module.

Review — table reviews

FieldType
idstring
tenantIdstring
tenantTenant
contentIdstring
contentContent
memberIdstring | null
memberMember
ratingnumber
titlestring | null
bodystring | null
reviewerNamestring
reviewerEmailstring | null
statusReviewStatus
isVerifiedPurchaseboolean
moderationNotestring | null
moderatedAtDate | null
helpfulCountnumber
reportCountnumber
media{ url: string
merchantResponsestring | null
merchantRespondedAtDate | null
dataRecord<string, unknown>
createdAtDate
updatedAtDate

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.