'use server'; import type { Message } from '@/lib/types/medipost'; import { getSupabaseServerAdminClient } from '@/packages/supabase/src/clients/server-admin-client'; export function getLatestMessage({ messages, excludedMessageIds, }: { messages?: Message[]; excludedMessageIds?: string[]; }) { if (!messages?.length) { return null; } const filtered = messages.filter(({ messageId }) => !excludedMessageIds?.includes(messageId)); if (!filtered.length) { return null; } return filtered.reduce((prev, current) => Number(prev.messageId) > Number(current.messageId) ? prev : current, { messageId: '' } as Message, ); } export async function createMedipostActionLog({ action, xml, hasAnalysisResults = false, medusaOrderId, responseXml, hasError = false, medipostExternalOrderId, medipostPrivateMessageId, }: { action: | 'send_order_to_medipost' | 'sync_analysis_results_from_medipost' | 'send_fake_analysis_results_to_medipost' | 'send_analysis_results_to_medipost'; xml: string; hasAnalysisResults?: boolean; medusaOrderId?: string | null; responseXml?: string | null; hasError?: boolean; medipostExternalOrderId?: string | null; medipostPrivateMessageId?: string | null; }) { await getSupabaseServerAdminClient() .schema('medreport') .from('medipost_actions') .insert({ action, xml, has_analysis_results: hasAnalysisResults, medusa_order_id: medusaOrderId, response_xml: responseXml, has_error: hasError, medipost_external_order_id: medipostExternalOrderId, medipost_private_message_id: medipostPrivateMessageId, }) .select('id') .throwOnError(); }