From 6ca933c47ce7749f0821c12cc473c3c879439aeb Mon Sep 17 00:00:00 2001 From: Sosokker Date: Wed, 6 Nov 2024 23:06:11 +0700 Subject: [PATCH] refactor: query top project with projetCard view --- src/app/page.tsx | 54 +++++++++++++++--------------------- src/lib/data/projectQuery.ts | 35 ++++++++--------------- 2 files changed, 33 insertions(+), 56 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 19cc657..44941c0 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -8,23 +8,10 @@ import { getTopProjects } from "@/lib/data/projectQuery"; import { createSupabaseClient } from "@/lib/supabase/serverComponentClient"; import { Suspense } from "react"; import { FC } from "react"; - -interface Project { - id: number; - project_name: string; - project_short_description: string; - card_image_url: string; - published_time: string; - business: { location: string }[]; - project_tag: { tag: { id: number; value: string }[] }[]; - project_investment_detail: { - min_investment: number; - total_investment: number; - }[]; -} +import { ProjectCardProps } from "@/types/ProjectCard"; interface TopProjectsProps { - projects: Project[]; + projects: ProjectCardProps[] | null; } const TopProjects: FC = ({ projects }) => { @@ -34,21 +21,22 @@ const TopProjects: FC = ({ projects }) => { return (
{projects.map((project) => ( - - - Array.isArray(item.tag) ? item.tag.map((tag) => tag.value) : [] - )} - minInvestment={project.project_investment_detail[0]?.min_investment || 0} - totalInvestor={0} - totalRaised={project.project_investment_detail[0]?.total_investment || 0} - /> - +
+ + + + +
))}
); @@ -141,10 +129,12 @@ export default async function Home() {

The deals attracting the most interest right now

{topProjectsError ? ( -
Error fetching projects: {topProjectsError}
+
+

Failed to load top projects. Please try again later.

+
) : ( }> - + )}
diff --git a/src/lib/data/projectQuery.ts b/src/lib/data/projectQuery.ts index 9402632..ce457b8 100644 --- a/src/lib/data/projectQuery.ts +++ b/src/lib/data/projectQuery.ts @@ -4,43 +4,30 @@ import { ProjectCardProps } from "@/types/ProjectCard"; async function getTopProjects(client: SupabaseClient, numberOfRecords: number = 4) { try { const { data, error } = await client - .from("project") + .from("project_card") .select( ` - id, + project_id, project_name, - business_id, - published_time, - project_short_description, - card_image_url, - project_investment_detail ( - min_investment, - total_investment, - target_investment, - investment_deadline - ), - project_tag ( - tag ( - id, - value - ) - ), - business ( - location - ) + short_description, + image_url, + join_date, + location, + total_investor, + total_raise, + min_investment, + tags ` ) - .order("published_time", { ascending: false }) + .order("total_raise", { ascending: false }) .limit(numberOfRecords); if (error) { - console.error("Error fetching top projects:", error.message); return { data: null, error: error.message }; } return { data, error: null }; } catch (err) { - console.error("Unexpected error:", err); return { data: null, error: "An unexpected error occurred." }; } }