From a6ccc6a5f4b4ef1328c1e1ea105f8239e4b4f12d Mon Sep 17 00:00:00 2001 From: Indigo Tang Date: Sun, 6 Jul 2025 13:42:26 +0000 Subject: [PATCH] Implement my toys page sqlite database function on dashboard --- src/app/[locale]/dashboard/my-toys/page.tsx | 30 ++++---------------- src/app/[locale]/dashboard/page.tsx | 15 ++++++---- toyshare.db | Bin 4096 -> 24576 bytes toyshare.db-shm | Bin 32768 -> 32768 bytes toyshare.db-wal | Bin 259592 -> 4136512 bytes 5 files changed, 15 insertions(+), 30 deletions(-) diff --git a/src/app/[locale]/dashboard/my-toys/page.tsx b/src/app/[locale]/dashboard/my-toys/page.tsx index c7e581b..6fee55e 100644 --- a/src/app/[locale]/dashboard/my-toys/page.tsx +++ b/src/app/[locale]/dashboard/my-toys/page.tsx @@ -2,9 +2,8 @@ import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { getToysByOwner } from "@/data/operations"; -import { mockRentalHistory } from "@/lib/mockData"; import Link from "next/link"; -import { PlusCircle, Edit3, Trash2, Eye, ToyBrick as ToyBrickIcon, BarChartHorizontalBig } from "lucide-react"; +import { PlusCircle, Edit3, Trash2, Eye, ToyBrick as ToyBrickIcon } from "lucide-react"; import Image from "next/image"; import type { Toy } from "@/types"; import { Badge } from "@/components/ui/badge"; @@ -16,16 +15,6 @@ export default async function MyToysPage() { const t = await getI18n(); const userToys = getToysByOwner(currentUserId); - const getRentalCountForToy = (toyId: string): number => { - // NOTE: This part still uses mock data and will need to be migrated. - return mockRentalHistory.filter(entry => entry.toy.id === toyId && entry.toy.ownerId === currentUserId).length; - }; - - const userToysWithRentalCount = userToys.map(toy => ({ - ...toy, - rentalCount: getRentalCountForToy(toy.id), - })); - return (
@@ -41,7 +30,7 @@ export default async function MyToysPage() {
- {userToysWithRentalCount.length === 0 ? ( + {userToys.length === 0 ? ( @@ -59,8 +48,8 @@ export default async function MyToysPage() { ) : (
- {userToysWithRentalCount.map(toy => ( - + {userToys.map(toy => ( + ))}
)} @@ -71,10 +60,9 @@ export default async function MyToysPage() { interface ListedToyItemProps { toy: Toy & {dataAiHint?: string}; t: (key: string, params?: Record) => string; - rentalCount: number; } -function ListedToyItem({ toy, t, rentalCount }: ListedToyItemProps) { +function ListedToyItem({ toy, t }: ListedToyItemProps) { const placeholderHint = toy.dataAiHint || toy.category.toLowerCase() || "toy"; return ( @@ -117,14 +105,6 @@ function ListedToyItem({ toy, t, rentalCount }: ListedToyItemProps) { {t('toy_details.price')}: {toy.pricePerDay !== undefined ? (toy.pricePerDay > 0 ? `$${toy.pricePerDay}${t('toy_details.price_per_day')}` : t('toy_details.price_free')) : 'Not set'}
- {rentalCount > 0 && ( -
- - {rentalCount === 1 - ? t('dashboard.my_toys.rental_count_one') - : t('dashboard.my_toys.rental_count_many', { count: rentalCount })} -
- )} diff --git a/src/app/[locale]/dashboard/page.tsx b/src/app/[locale]/dashboard/page.tsx index 6644332..4528f8b 100644 --- a/src/app/[locale]/dashboard/page.tsx +++ b/src/app/[locale]/dashboard/page.tsx @@ -3,15 +3,20 @@ import { Button } from "@/components/ui/button"; import Link from "next/link"; import { ToyBrick, PlusCircle, ListOrdered, User, ShoppingBag } from "lucide-react"; import { getI18n } from "@/locales/server"; +import { getToysByOwner } from "@/data/operations"; -const userStats = { - listedToys: 3, - activeRentals: 1, - pendingRequests: 2, -}; +const currentUserId = 1; // Mock logged-in user ID export default async function DashboardOverviewPage() { const t = await getI18n(); + const userToys = getToysByOwner(currentUserId); + + const userStats = { + listedToys: userToys.length, // Real data from DB + activeRentals: 1, // Mock data + pendingRequests: 2, // Mock data + }; + return (
diff --git a/toyshare.db b/toyshare.db index db7a7459cf0d014b0dc2333abb5541c58c2d6ed1..55e1ab8fe21ff977866d0a656600d043d072e887 100644 GIT binary patch literal 24576 zcmeI4TW=#t7026g>|7>Evsy)d7$KcxG@1!^oH)0IMWb2A>6wXg9mgRIt0?5SEQ^8AC(HCjf?Ftl&F~@BZsI_+_|%f}g2t-|zdnVibSz zok{Z_MrJZ&Onou+C-b+HnW@wJn(J~+KoigeGyzRO6VL=S0Zl*?c<%{xcTyv{TrPFl z30d9cQNUFYABHMbt6a07R$kw>ATENZ;}E}u12yZ1HQ29i?v$%|D! z`3jON(U888{h?m$RjtjJyM!5@_O3jK-CkH#Yqw$@B;I){oH^Lrg$--lLcdkY2bJ=M z6}x5b$w)T${ppk;JcnNdpSk$ldBUPl#^)!5_oPI}?0!0%%jZ*XVrTRk2K=*#dp5sy zI()-Lw<@1f92BtUT-OoTAo_F z?~w<8H>UnNH8nXp@%xEiPI!2#Uz&g>pb2OKnt&#t31|YEfF|(%5Qs)bjhROaxs&HR zOn6Xs+QNIqnFFt+XSXDy^H2B%Yx^!Q+Oi!tXoaC4e7vyWyUgY-={i`mP+DBPz<1I2 zn$JUi5k4z#>}+xF3$F=bivvE8Z2R+1s)eQD{Og%OP^BC+aflq-)5}zRz9LYBGsN3r8ZVSVs#*-X%tF)MM1&4Ko z53Q9}WS>%pmD?RI)9Eqe$=t&9@#X6Z!>2FUVBQ(-LsXa_5~3ZZ&bUi`mv8qSj7w$X zm1wrODnKJrNQSn~8&7HSOaIyA*J~B#!8!h+SzLe!pTip-6zJS$-ptkf z+czd68#pa52vwArPkRFej3?>h2SK_dD1ETHN)qi6qQWj~s{S){}`8 zFUM13#(Zu*cYJwTc5w>?&&Hq+J#S!Uo)fQk}Y#r-{cLbX_nX`Pe!Lqc-|6jud2eDjb?SUP?w` zlj0ob8e)Ipx=Fb!!+>mZMT3LO8x&x)I@>ejcuyNKTZY*(e`o&M{FV8I`7`s&_vc2Z zXQByc0-As(pb2OKnt&#t31|YEfF_^`{4WVirx#NHwyQQmrL@~{W7{j+FTJs=mFbt> z*t#0-m)_WvO7}}|?A8o@n4TZIy|+Ps|4*4;8Te1XGyzRO6VL=S0Zl*?&;&FAO+XXS z1T+Cn;C&)6mP+U1eTQI#p8vCBTgFs0IWv(S|J(Qnc%omLfF_^`XabsmCZGvu0)r6f zRx=1@QDvw6Z z9)EhA&hGFKb;1=9cDg^#JTRYi+Yiri7LQlgIf_^@jTp+PKSo8V4KE{siKt~*URZ%Z z`~>x@{hDT6Qvl&`=EerwEz}Mx?x7Zysjw#r7Yf=D3S6 zAW@)dvj8tmDql>X4T?KSk3r|Rg_78OVku2W1A;BHJa4Tq=ezZdb>41weiEm2X;6GtudyS{{8B z7U5OLmkedu*b9?@0e@eME5Tg!X&H67l*?W04UNL)K_?cQnI|)GUO%0Uxo+TGPJ%RT2-@p5VQ-EsN=lfJ!XLvYuDm#Dz!UU2y^Jz-Y5r;oZe1@7{u zhla+X#bFx<^2l#B$}tbi9&jg0vcu7RNw$3K=~#mt`>%;f*C@~?^)d!#qSSW#m$??P zu+K0u!g+E#8Q>FCH`Pq1&yUFfhw~J52g(KNXj-~=0Joo8-oa2q9?+i zC!s&6q$f?2dLm-#X){a!c)=No`~z%bqe8sNi8j<(NFjs8v<@7U|5GVS`$g01QCiCv zf52P9cKN`Bs+BxiJ20H2dA>JajOKgeu5@?YmA;E{H#B;E0e(K3nl!EM$)m399^n!! zRU~FJG$J=iHXtnP_#*@;d_TaL!!!vmM1UlTPi~EvZ$g^+q)RO8r!MuR3(Eg7xj~%* zx|7uRcuym>dj}oU1WapjZ~-3Bor+-6T{Zqyh2?zF`Z}@)U5#;W1dg3g%pDkN(mY>r zWx(@?{{2WxcP{19^6b09J&XVD9!pE;gv=d_pY;D(^ACpkPxCADFXo@kKjMjD3=Q%h zo^GQFXabsmCZGvu0-As(pb2OKnt&#t31|ZU2Lv){Gqskb<7$SEE5meLPSbH|XgF<- GmHq`b%le@J delta 33 ncmZoTz}TQLL7J73fq{W>Vxv7bBZFR>7B7&;Ah21`U>ZLFdXNT% diff --git a/toyshare.db-shm b/toyshare.db-shm index 8b4efd5736298dc815236e380a541638b791a72e..b1b45ead649c47002a72033e7e66c761d1fc1b3d 100644 GIT binary patch literal 32768 zcmeI)MQ>I?6oBEkEu}cci@Q^xxE7Zdm*VbT+#QO$6sN`ADPG)u0&6ye4J-C=za~u@ zcI@Emdveds+{wvI&Xc*@iTfH)C=wzdcw#>X7>3Mim}0tzUgfC36Apnw7jD4>7>3Mim}0tzUgfC36Apnw7jD4>7> z3Mim}0tzUgfC36Apnw7jD4>7>3Mim}0tzUgfC6DE5E0xjQJCVCBaW)nq#;d6pf#Q8 zN-vTa!f-}2p6SeDK8skzS~ii!UJh`S6P)8B*SJL%Psrv?m@3&;cnU;Qgjgz4jXK2B zf_8MHH~mRr43n760+zCl&FtVH>73>g*SX76Uh+OXLF_6Y2^6F#rKm)8>e7^!w5L0L z7{Ca|GMPD~vW)d?VJC+;#u+YigL^#V6(91ElC6fPKn$g+Og);>fgTKGBvY8nayGDw z!<^*`_j%68@NC|$^0`1HB`8CAYEhp?w4o!3Br}MiOkgTASj-AmvyI*C<0KiJ=Qa;` z#9Kb)b2;1p{{^BbL@`QImI_p%2DNEGW17>7wsfKkJ?Tq71~ZINjAJ6xn8`dAvV@ha zVIy1F&K~x2gyWndlM7tsCU7>3Mim}0tzUgfC36A qpnw7jD4>7>3Mim}0tzUgfC36Apnw7jD4>7>3Mim}0t);~0>1(9)_hR_ delta 364 zcmb7=yG{a85Qaa_0YqJd71qTI2#R;t`xViB0b673GuUatCKh%kr?WA^&em*WV`6*+ zAHl{@7#gj0mY}iqPyRC}-#?j5CJ0mzs7B${BT`NrgRCz#DL(X1Zc4>t`>6GJ_i~=P zxV&ngRX$GnZ@-M{s3z~%A9b;5q|LQu9?G5)5*PneS?2d2G2P80o-nsL)6AQu71s5$ zA3o`-a$+Q~aT#HpDvK<$!A^LuTgp|WNRwfZJfoDEVTDchBz#l0rWc1XD$KIV7Inez z%8Ap*09iTA5Je`KV~zdJxJ;6M3QRGN$1Vo~+sf_1Vwe(>OtZie>ugiQm+;g323glh A4*&oF diff --git a/toyshare.db-wal b/toyshare.db-wal index df16db9f4458488eb519a5194517403a4dca189d..e564ea3938db94ae3ec3016d640640e057cff4bf 100644 GIT binary patch delta 25188 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 AMF0Q*