From 2f22b6c88f21f5956dc7e3c1da2fa90c85aab005 Mon Sep 17 00:00:00 2001 From: Danel Kungla Date: Tue, 23 Sep 2025 17:18:49 +0300 Subject: [PATCH] fix sql --- app/home/(user)/(dashboard)/page.tsx | 4 -- .../_components/recommendations-skeleton.tsx | 2 - ..._fix_latest_response_elements_function.sql | 42 +++++++++++++++++++ 3 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 supabase/migrations/20250923171400_fix_latest_response_elements_function.sql diff --git a/app/home/(user)/(dashboard)/page.tsx b/app/home/(user)/(dashboard)/page.tsx index 757502e..22a671c 100644 --- a/app/home/(user)/(dashboard)/page.tsx +++ b/app/home/(user)/(dashboard)/page.tsx @@ -6,7 +6,6 @@ import { toTitleCase } from '@/lib/utils'; import { getSupabaseServerClient } from '@/packages/supabase/src/clients/server-client'; import { PageBody, PageHeader } from '@kit/ui/page'; -import { Skeleton } from '@kit/ui/skeleton'; import { Trans } from '@kit/ui/trans'; import { createUserAnalysesApi } from '@kit/user-analyses/api'; @@ -62,9 +61,6 @@ async function UserHomePage() { }> - }> - - )} diff --git a/app/home/(user)/_components/recommendations-skeleton.tsx b/app/home/(user)/_components/recommendations-skeleton.tsx index 74cb352..eaa9917 100644 --- a/app/home/(user)/_components/recommendations-skeleton.tsx +++ b/app/home/(user)/_components/recommendations-skeleton.tsx @@ -12,8 +12,6 @@ import { } from '@kit/ui/shadcn/card'; import { Skeleton } from '@kit/ui/skeleton'; -import OrderAnalysesCards from './order-analyses-cards'; - const RecommendationsSkeleton = () => { const emptyData = [ { diff --git a/supabase/migrations/20250923171400_fix_latest_response_elements_function.sql b/supabase/migrations/20250923171400_fix_latest_response_elements_function.sql new file mode 100644 index 0000000..288d311 --- /dev/null +++ b/supabase/migrations/20250923171400_fix_latest_response_elements_function.sql @@ -0,0 +1,42 @@ +drop function if exists medreport.get_latest_analysis_response_elements_for_current_user(uuid); + +create or replace function medreport.get_latest_analysis_response_elements_for_current_user(p_user_id uuid) +returns table ( + analysis_name medreport.analysis_response_elements.analysis_name%type, + response_time medreport.analysis_response_elements.response_time%type, + norm_upper medreport.analysis_response_elements.norm_upper%type, + norm_lower medreport.analysis_response_elements.norm_lower%type, + norm_status medreport.analysis_response_elements.norm_status%type, + response_value medreport.analysis_response_elements.response_value%type, + analysis_name_lab medreport.analysis_elements.analysis_name_lab%type +) +language sql +as $$ + WITH ranked AS ( + SELECT + are.analysis_name, + are.response_time, + are.norm_upper, + are.norm_lower, + are.norm_status, + are.response_value, + ae.analysis_name_lab, + ROW_NUMBER() OVER ( + PARTITION BY are.analysis_name + ORDER BY are.response_time DESC, are.id DESC + ) AS rn + FROM medreport.analysis_responses ar + JOIN medreport.analysis_response_elements are + ON are.analysis_response_id = ar.id + JOIN medreport.analysis_elements ae + ON are.analysis_element_original_id = ae.analysis_id_original + WHERE ar.user_id = auth.uid() + AND ar.order_status = 'COMPLETED' + ) + SELECT analysis_name, response_time, norm_upper, norm_lower, norm_status, response_value, analysis_name_lab + FROM ranked + WHERE rn = 1 + ORDER BY analysis_name; +$$; + +grant execute on function medreport.get_latest_analysis_response_elements_for_current_user(uuid) to authenticated, service_role;