Fix code review items: atomic qty increment, unit updatedAt, suppliers/all endpoint, SKU unique index

This commit is contained in:
Ryan Moon
2026-03-31 05:08:01 -05:00
parent 5f5ba9e4a2
commit bde3ad64fd
5 changed files with 29 additions and 9 deletions

View File

@@ -131,6 +131,14 @@ export const SupplierService = {
return paginatedResponse(data, total, params.page, params.limit)
},
async listAll(db: PostgresJsDatabase<any>) {
return db
.select()
.from(suppliers)
.where(eq(suppliers.isActive, true))
.orderBy(suppliers.name)
},
async update(db: PostgresJsDatabase<any>, id: string, input: SupplierUpdateInput) {
const [supplier] = await db
.update(suppliers)

View File

@@ -225,7 +225,7 @@ export const InventoryUnitService = {
if (!valid) throw new ValidationError(`Invalid status: "${input.status}"`)
}
const updates: Record<string, unknown> = { ...input }
const updates: Record<string, unknown> = { ...input, updatedAt: new Date() }
if (input.purchaseCost !== undefined) updates.purchaseCost = input.purchaseCost.toString()
const [unit] = await db
@@ -317,14 +317,11 @@ export const StockReceiptService = {
})
.returning()
// For non-serialized products, increment qty_on_hand
const [product] = await db.select().from(products).where(eq(products.id, productId)).limit(1)
if (product && !product.isSerialized) {
await db
.update(products)
.set({ qtyOnHand: product.qtyOnHand + input.qty, updatedAt: new Date() })
.where(eq(products.id, productId))
}
// For non-serialized products, increment qty_on_hand atomically
await db
.update(products)
.set({ qtyOnHand: sql`${products.qtyOnHand} + ${input.qty}`, updatedAt: new Date() })
.where(and(eq(products.id, productId), eq(products.isSerialized, false)))
return receipt
},