Skip to content

Commit 64ef867

Browse files
chore: wip
1 parent 5f6308a commit 64ef867

File tree

1 file changed

+60
-0
lines changed
  • storage/framework/core/commerce/src/reviews

1 file changed

+60
-0
lines changed
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import type { GiftCardRequestType, ProductRequestType } from '@stacksjs/orm'
2+
import type { GiftCardJsonResponse, NewGiftCard } from '../../../../orm/src/models/GiftCard'
3+
import { db } from '@stacksjs/database'
4+
import type { NewProductReview, ProductReviewJsonResponse } from '../../../../orm/src/models/ProductReview'
5+
6+
/**
7+
* Create a new gift card
8+
*
9+
* @param request The gift card data to store
10+
* @returns The newly created gift card record
11+
*/
12+
export async function store(request: ProductRequestType): Promise<ProductReviewJsonResponse | undefined> {
13+
await request.validate()
14+
15+
const productReviewData: NewProductReview = {
16+
product_id: request.get<number>('product_id'),
17+
customer_id: request.get<number>('customer_id'),
18+
rating: request.get<number>('rating'),
19+
title: request.get('title'),
20+
content: request.get('content'),
21+
is_verified_purchase: request.get<boolean>('is_verified_purchase'),
22+
is_approved: request.get<boolean>('is_approved'),
23+
helpful_votes: request.get<number>('helpful_votes'),
24+
unhelpful_votes: request.get<number>('unhelpful_votes'),
25+
purchase_date: request.get('purchase_date'),
26+
images: request.get('purchase_date'),
27+
}
28+
29+
try {
30+
// Insert the gift card record
31+
const createdProductReview = await db
32+
.insertInto('product_reviews')
33+
.values(productReviewData)
34+
.executeTakeFirst()
35+
36+
// If insert was successful, retrieve the newly created gift card
37+
if (createdProductReview.insertId) {
38+
const productReview = await db
39+
.selectFrom('product_reviews')
40+
.where('id', '=', Number(createdProductReview.insertId))
41+
.selectAll()
42+
.executeTakeFirst()
43+
44+
return productReview
45+
}
46+
47+
return undefined
48+
}
49+
catch (error) {
50+
if (error instanceof Error) {
51+
if (error.message.includes('Duplicate entry') && error.message.includes('code')) {
52+
throw new Error('A gift card with this code already exists')
53+
}
54+
55+
throw new Error(`Failed to create gift card: ${error.message}`)
56+
}
57+
58+
throw error
59+
}
60+
}

0 commit comments

Comments
 (0)