54 lines
1.2 KiB
JavaScript
54 lines
1.2 KiB
JavaScript
import { query } from '../db/client.js'
|
|
|
|
export async function listOrderItemsByOrderId(orderId) {
|
|
const result = await query(
|
|
`
|
|
SELECT *
|
|
FROM order_items
|
|
WHERE order_id = $1
|
|
ORDER BY id ASC
|
|
`,
|
|
[Number(orderId)],
|
|
)
|
|
|
|
return result.rows
|
|
}
|
|
|
|
export async function replaceOrderItems(orderId, items) {
|
|
await query('DELETE FROM order_items WHERE order_id = $1', [Number(orderId)])
|
|
|
|
for (const item of items) {
|
|
await query(
|
|
`
|
|
INSERT INTO order_items (
|
|
order_id,
|
|
sku_code,
|
|
sku_name,
|
|
quantity,
|
|
spec_json,
|
|
item_snapshot_json,
|
|
created_at,
|
|
updated_at
|
|
) VALUES ($1, $2, $3, $4, $5::jsonb, $6::jsonb, $7, $8)
|
|
`,
|
|
[
|
|
Number(orderId),
|
|
item.skuCode,
|
|
item.skuName,
|
|
item.quantity,
|
|
item.specJson || '{}',
|
|
item.itemSnapshotJson || item.specJson || '{}',
|
|
item.createdAt,
|
|
item.updatedAt,
|
|
],
|
|
)
|
|
}
|
|
|
|
return listOrderItemsByOrderId(orderId)
|
|
}
|
|
|
|
export async function getOrderItemById(orderItemId) {
|
|
const result = await query('SELECT * FROM order_items WHERE id = $1 LIMIT 1', [Number(orderItemId)])
|
|
return result.rows[0] || null
|
|
}
|