diff --git a/src/pages/dashboard.astro b/src/pages/dashboard.astro index bcb2696..7f1babe 100644 --- a/src/pages/dashboard.astro +++ b/src/pages/dashboard.astro @@ -4,15 +4,29 @@ import NavBar from "../components/NavBar.astro"; import NavItems from "../components/NavItems.astro"; import Footer from "../components/Footer.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 totalQty = inventory.reduce((s, c) => s + c.qty, 0); -// const totalValue = inventory.reduce((s, c) => s + nmPrice(c) * c.qty, 0); -// const totalGain = inventory.reduce((s, c) => s + gain(c) * c.qty, 0); -const totalQty = 1234; -const totalValue = 5678.90; -const totalGain = 1234.56; +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; + ---