35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
// Follow this setup guide to integrate the Deno language server with your editor:
|
|
// https://deno.land/manual/getting_started/setup_your_environment
|
|
// This enables autocomplete, go to definition, etc.
|
|
|
|
import { serve } from "https://deno.land/std@0.131.0/http/server.ts"
|
|
import { createClient } from 'https://esm.sh/@supabase/supabase-js@2'
|
|
|
|
console.log("Hello from functions!")
|
|
const emailRegex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
|
|
|
|
serve(async (req) => {
|
|
if (req.method === 'OPTIONS') {
|
|
return new Response('ok')
|
|
}
|
|
|
|
const supabase = createClient(Deno.env.get('SUPABASE_URL'), Deno.env.get('SUPABASE_ANON_KEY'))
|
|
|
|
const { email, name } = await req.json()
|
|
if (!name || !email || !emailRegex.test(email)) throw new Error(
|
|
'Please provide a valid email address or name'
|
|
)
|
|
|
|
const { data, error } = await supabase
|
|
.from('subscribers')
|
|
.upsert({ name: name, email: email })
|
|
.select()
|
|
|
|
if (error) throw new Error(error.message)
|
|
|
|
return new Response(
|
|
JSON.stringify(data),
|
|
{ headers: { "Content-Type": "application/json" } },
|
|
)
|
|
})
|