HotTRDealsBackend/adapters/responses/dealCard.adapter.js
2026-02-07 22:42:02 +00:00

58 lines
1.5 KiB
JavaScript

const formatDateAsString = (value) => (value instanceof Date ? value.toISOString() : value ?? null)
function mapDealToDealCardResponse(deal) {
return {
id: deal.id,
title: deal.title,
description: deal.description || "",
price: deal.price ?? null,
originalPrice: deal.originalPrice ?? null,
shippingPrice: deal.shippingPrice ?? null,
couponCode: deal.couponCode ?? null,
location: deal.location ?? null,
discountType: deal.discountType ?? null,
discountValue: deal.discountValue ?? null,
barcodeId: deal.barcodeId ?? null,
score: deal.score,
commentsCount: deal.commentCount,
hasLink: Boolean(deal.url),
status: deal.status,
saleType: deal.saletype,
affiliateType: deal.affiliateType,
myVote: deal.myVote ?? 0,
isSaved: Boolean(deal.isSaved),
createdAt: formatDateAsString(deal.createdAt),
updatedAt: formatDateAsString(deal.updatedAt),
user: {
id: deal.user.id,
username: deal.user.username,
avatarUrl: deal.user.avatarUrl ?? null,
},
seller: deal.seller
? {
name: deal.seller.name,
url: deal.seller.url ?? null,
}
: {
name: deal.customSeller || "",
url: null,
},
imageUrl: deal.images?.[0]?.imageUrl || "",
}
}
function mapPaginatedDealsToDealCardResponse(paginated) {
return {
...paginated,
results: paginated.results.map(mapDealToDealCardResponse),
}
}
module.exports = { mapDealToDealCardResponse,mapPaginatedDealsToDealCardResponse }