--- import Layout from "../layouts/Main.astro"; import Footer from "../components/Footer.astro"; import BackToTop from "../components/BackToTop.astro"; import FirstEditionIcon from "../components/FirstEditionIcon.astro"; import { db } from '../db/index'; import { inventory, skus } from '../db/schema'; import { sql, sum, eq } from "drizzle-orm"; const { userId } = Astro.locals.auth(); const summary = await db .select({ totalQty: sum(inventory.quantity).mapWith(Number), totalValue: sum(sql`(${inventory.quantity} * ${skus.marketPrice})`).mapWith(Number), totalGain: sum(sql`(${inventory.quantity} * (${skus.marketPrice} - ${inventory.purchasePrice}))`).mapWith(Number), }) .from(inventory) .innerJoin(skus, eq(inventory.skuId, skus.skuId)) .where(eq(inventory.userId, userId!)) .execute() .then(res => res[0]); const totalQty = summary.totalQty || 0; const totalValue = summary.totalValue || 0; const totalGain = summary.totalGain || 0; // distinct catalog names for this user, for the sidebar catalog list const catalogRows = userId ? await db .selectDistinct({ name: inventory.catalogName }) .from(inventory) .where(eq(inventory.userId, userId)) : []; const catalogs = catalogRows .map(r => r.name) .filter((n): n is string => !!n) .sort((a, b) => a.localeCompare(b)); ---
Add cards