added a fix for variant selection (without it cards with multiple versions would add all at form submit)

This commit is contained in:
Zach Harding
2026-04-05 16:32:44 -04:00
parent d06c6fb9bf
commit 5d716a4d8e
3 changed files with 23 additions and 9 deletions

View File

@@ -2,7 +2,7 @@ import type { APIRoute } from 'astro';
import { db } from '../../db/index';
import { inventory, skus, cards } from '../../db/schema';
import { client } from '../../db/typesense';
import { eq, and } from 'drizzle-orm';
import { eq, and, sql } from 'drizzle-orm';
const GainLoss = (purchasePrice: any, marketPrice: any) => {
if (!purchasePrice || !marketPrice) return '<div class="fs-5 fw-semibold">N/A</div>';
@@ -20,6 +20,7 @@ const inventories = await db
inventoryId: inventory.inventoryId,
cardId: inventory.cardId,
condition: inventory.condition,
variant: inventory.variant,
quantity: inventory.quantity,
purchasePrice: inventory.purchasePrice,
note: inventory.note,
@@ -35,7 +36,11 @@ const inventories = await db
skus,
and(
eq(cards.productId, skus.productId),
eq(inventory.condition, skus.condition)
eq(inventory.condition, skus.condition),
eq(
sql`COALESCE(${inventory.variant}, 'Normal')`,
skus.variant
)
)
)
.where(and(
@@ -49,7 +54,7 @@ const inventories = await db
const purchasePriceDisplay = inv.purchasePrice ? `$${Number(inv.purchasePrice).toFixed(2)}` : '—';
return `
<article class="alert alert-dark rounded-4 inventory-entry-card"
<article class="border rounded-4 p-2 inventory-entry-card"
data-inventory-id="${inv.inventoryId}"
data-card-id="${inv.cardId}"
data-purchase-price="${inv.purchasePrice}"
@@ -106,12 +111,13 @@ const inventories = await db
}
const addToInventory = async (userId: string, cardId: number, condition: string, purchasePrice: number, quantity: number, note: string, catalogName: string) => {
const addToInventory = async (userId: string, cardId: number, condition: string, variant: string, purchasePrice: number, quantity: number, note: string, catalogName: string) => {
const inv = await db.insert(inventory).values({
userId: userId,
cardId: cardId,
catalogName: catalogName,
condition: condition,
variant: variant,
purchasePrice: purchasePrice,
quantity: quantity,
note: note,
@@ -147,11 +153,12 @@ export const POST: APIRoute = async ({ request, locals }) => {
case 'add':
const condition = formData.get('condition')?.toString() || 'Unknown';
const variant = formData.get('variant')?.toString() || 'Normal';
const purchasePrice = Number(formData.get('purchasePrice')) || 0;
const quantity = Number(formData.get('quantity')) || 1;
const note = formData.get('note')?.toString() || '';
const catalogName = formData.get('catalogName')?.toString() || 'Default';
await addToInventory(userId!, cardId, condition, purchasePrice, quantity, note, catalogName);
await addToInventory(userId!, cardId, condition, variant, purchasePrice, quantity, note, catalogName);
break;
case 'remove':