This commit is contained in:
37
supabase/functions/main/index.ts
Normal file
37
supabase/functions/main/index.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* Edge Function: main (relay)
|
||||
* Enruta todas las requests al worker de la función correspondiente.
|
||||
* Requerido por supabase/edge-runtime en self-hosted (--main-service).
|
||||
* No expuesto directamente — solo opera como router interno.
|
||||
*/
|
||||
|
||||
const FUNCTIONS = ['invite-user', 'revoke-user']
|
||||
|
||||
Deno.serve(async (req: Request) => {
|
||||
const url = new URL(req.url)
|
||||
|
||||
// Extraer nombre de función del path: /functions/v1/invite-user → invite-user
|
||||
const segments = url.pathname.split('/').filter(Boolean)
|
||||
const functionName = segments[segments.length - 1]
|
||||
|
||||
if (!functionName || !FUNCTIONS.includes(functionName)) {
|
||||
return new Response(
|
||||
JSON.stringify({ error: `Función no encontrada: ${functionName}` }),
|
||||
{ status: 404, headers: { 'Content-Type': 'application/json' } },
|
||||
)
|
||||
}
|
||||
|
||||
const servicePath = `/home/deno/functions/${functionName}`
|
||||
|
||||
try {
|
||||
// EdgeRuntime.userWorkers es el API del supabase/edge-runtime para crear workers por función
|
||||
const worker = await EdgeRuntime.userWorkers.create({ servicePath })
|
||||
return await worker.fetch(req)
|
||||
} catch (err) {
|
||||
const message = err instanceof Error ? err.message : String(err)
|
||||
return new Response(
|
||||
JSON.stringify({ error: message }),
|
||||
{ status: 500, headers: { 'Content-Type': 'application/json' } },
|
||||
)
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user