- Changed Supabase URL and anon key for the connection. - Added a cache buster file for page caching management. - Integrated ChatMessages component into AcompanhamentoPaciente and MensagensMedico pages for improved messaging interface. - Created new MensagensPaciente page for patient messaging. - Updated PainelMedico to include messaging functionality with patients. - Enhanced message service to support conversation retrieval and message sending. - Added a test HTML file for Supabase connection verification and message table interaction.
72 lines
2.0 KiB
TypeScript
72 lines
2.0 KiB
TypeScript
import { Handler } from '@netlify/functions';
|
|
import { createClient } from '@supabase/supabase-js';
|
|
|
|
const supabase = createClient(
|
|
'https://yuanqfswhberkoevtmfr.supabase.co',
|
|
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl1YW5xZnN3aGJlcmtvZXZ0bWZyIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImlhdCI6MTc1NDk1NDM2OSwiZXhwIjoyMDcwNTMwMzY5fQ.BO9vXLKqJx7HxPQkrSbhCdAZ-y0n_Rg3UMEwvZqKr_g' // SERVICE ROLE KEY
|
|
);
|
|
|
|
export const handler: Handler = async (event) => {
|
|
// CORS headers
|
|
const headers = {
|
|
'Access-Control-Allow-Origin': '*',
|
|
'Access-Control-Allow-Headers': 'Content-Type',
|
|
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
|
|
'Content-Type': 'application/json',
|
|
};
|
|
|
|
if (event.httpMethod === 'OPTIONS') {
|
|
return { statusCode: 200, headers, body: '' };
|
|
}
|
|
|
|
try {
|
|
const { action, sender_id, receiver_id, content, user1_id, user2_id } = JSON.parse(event.body || '{}');
|
|
|
|
if (action === 'send') {
|
|
// Enviar mensagem
|
|
const { data, error } = await supabase
|
|
.from('messages')
|
|
.insert({ sender_id, receiver_id, content, read: false })
|
|
.select()
|
|
.single();
|
|
|
|
if (error) throw error;
|
|
|
|
return {
|
|
statusCode: 200,
|
|
headers,
|
|
body: JSON.stringify({ success: true, data }),
|
|
};
|
|
}
|
|
|
|
if (action === 'get') {
|
|
// Buscar mensagens
|
|
const { data, error } = await supabase
|
|
.from('messages')
|
|
.select('*')
|
|
.or(`and(sender_id.eq.${user1_id},receiver_id.eq.${user2_id}),and(sender_id.eq.${user2_id},receiver_id.eq.${user1_id})`)
|
|
.order('created_at', { ascending: true });
|
|
|
|
if (error) throw error;
|
|
|
|
return {
|
|
statusCode: 200,
|
|
headers,
|
|
body: JSON.stringify({ success: true, data }),
|
|
};
|
|
}
|
|
|
|
return {
|
|
statusCode: 400,
|
|
headers,
|
|
body: JSON.stringify({ error: 'Invalid action' }),
|
|
};
|
|
} catch (error: any) {
|
|
return {
|
|
statusCode: 500,
|
|
headers,
|
|
body: JSON.stringify({ error: error.message }),
|
|
};
|
|
}
|
|
};
|