彻底重构-1
This commit is contained in:
@@ -1,80 +1,53 @@
|
||||
import { getDb } from '../db/client.js'
|
||||
import { query } from '../db/client.js'
|
||||
|
||||
export function listOrderItemsByOrderId(orderId) {
|
||||
return getDb().prepare(`
|
||||
SELECT *
|
||||
FROM order_items
|
||||
WHERE order_id = ?
|
||||
ORDER BY id ASC
|
||||
`).all(orderId)
|
||||
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 function replaceOrderItems(orderId, items) {
|
||||
const db = getDb()
|
||||
const existingItems = listOrderItemsByOrderId(orderId)
|
||||
const updateStatement = db.prepare(`
|
||||
UPDATE order_items
|
||||
SET
|
||||
sku_code = ?,
|
||||
sku_name = ?,
|
||||
quantity = ?,
|
||||
spec_json = ?,
|
||||
delivery_mode = ?,
|
||||
updated_at = ?
|
||||
WHERE id = ?
|
||||
`)
|
||||
const insertStatement = db.prepare(`
|
||||
INSERT INTO order_items (
|
||||
order_id,
|
||||
sku_code,
|
||||
sku_name,
|
||||
quantity,
|
||||
spec_json,
|
||||
delivery_mode,
|
||||
created_at,
|
||||
updated_at
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
||||
`)
|
||||
export async function replaceOrderItems(orderId, items) {
|
||||
await query('DELETE FROM order_items WHERE order_id = $1', [Number(orderId)])
|
||||
|
||||
for (let index = 0; index < items.length; index += 1) {
|
||||
const item = items[index]
|
||||
const existingItem = existingItems[index] || null
|
||||
|
||||
if (existingItem) {
|
||||
updateStatement.run(
|
||||
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.deliveryMode,
|
||||
item.specJson || '{}',
|
||||
item.itemSnapshotJson || item.specJson || '{}',
|
||||
item.createdAt,
|
||||
item.updatedAt,
|
||||
existingItem.id,
|
||||
)
|
||||
continue
|
||||
}
|
||||
|
||||
insertStatement.run(
|
||||
orderId,
|
||||
item.skuCode,
|
||||
item.skuName,
|
||||
item.quantity,
|
||||
item.specJson,
|
||||
item.deliveryMode,
|
||||
item.createdAt,
|
||||
item.updatedAt,
|
||||
],
|
||||
)
|
||||
}
|
||||
|
||||
if (existingItems.length > items.length) {
|
||||
const redundantIds = existingItems.slice(items.length).map((item) => item.id)
|
||||
const placeholders = redundantIds.map(() => '?').join(', ')
|
||||
|
||||
db.prepare(`DELETE FROM order_items WHERE order_id = ? AND id IN (${placeholders})`).run(orderId, ...redundantIds)
|
||||
}
|
||||
|
||||
return listOrderItemsByOrderId(orderId)
|
||||
}
|
||||
|
||||
export function getOrderItemById(orderItemId) {
|
||||
return getDb().prepare('SELECT * FROM order_items WHERE id = ? LIMIT 1').get(orderItemId) || null
|
||||
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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user