2025-12-06 19:13:27 -03:00

79 lines
2.2 KiB
TypeScript

import { serve } from "https://deno.land/std@0.168.0/http/server.ts";
import { mydb } from "../../lib/mySupabase.ts";
import { corsHeaders, jsonResponse, errorResponse } from "../../lib/utils.ts";
import {
createWaitlistSchema,
waitlistFiltersSchema,
} from "../../lib/validation.ts";
serve(async (req) => {
// Handle CORS preflight
if (req.method === "OPTIONS") {
return new Response("ok", { status: 200, headers: corsHeaders() });
}
try {
// POST com method GET no body (padrão Supabase callFunction)
if (req.method === "POST") {
const body = await req.json();
// Se é um GET simulado via POST
if (body.method === "GET") {
const { patient_id, doctor_id, status } = body.filters || {};
let query = mydb.from("waitlist").select("*");
if (patient_id) query = query.eq("patient_id", patient_id);
if (doctor_id) query = query.eq("doctor_id", doctor_id);
if (status) query = query.eq("status", status);
const { data, error } = await query;
if (error) {
return errorResponse(error.message);
}
return jsonResponse(data);
}
// POST normal - criar entrada na waitlist
const validatedData = createWaitlistSchema.parse(body);
const { data, error } = await mydb
.from("waitlist")
.insert([validatedData])
.select();
if (error) {
return errorResponse(error.message);
}
return jsonResponse(data[0]);
}
if (req.method === "GET") {
const url = new URL(req.url);
const patientId = url.searchParams.get("patient_id");
const doctorId = url.searchParams.get("doctor_id");
let query = mydb.from("waitlist").select("*");
if (patientId) query = query.eq("patient_id", patientId);
if (doctorId) query = query.eq("doctor_id", doctorId);
const { data, error } = await query;
if (error) {
return errorResponse(error.message);
}
return jsonResponse(data);
}
return errorResponse("Method not allowed", 405);
} catch (error) {
console.error("Error in waitlist function:", error);
return errorResponse(error.message);
}
});