32 lines
1,014 B
MySQL
32 lines
1,014 B
MySQL
|
|
-- Create table to store conversation state
|
||
|
|
create table if not exists public.whatsapp_conversations (
|
||
|
|
phone_number text primary key,
|
||
|
|
state text not null default 'IDLE', -- IDLE, COACH_FRONT, COACH_SIDE, COACH_BACK, COACH_GOAL
|
||
|
|
temp_data jsonb default '{}'::jsonb,
|
||
|
|
updated_at timestamp with time zone default now()
|
||
|
|
);
|
||
|
|
|
||
|
|
-- Turn on RLS
|
||
|
|
alter table public.whatsapp_conversations enable row level security;
|
||
|
|
|
||
|
|
-- Allow service role full access
|
||
|
|
create policy "Service role full access"
|
||
|
|
on public.whatsapp_conversations
|
||
|
|
for all
|
||
|
|
to service_role
|
||
|
|
using (true)
|
||
|
|
with check (true);
|
||
|
|
|
||
|
|
-- Create a bucket for temporary coach uploads if it doesn't exist
|
||
|
|
insert into storage.buckets (id, name, public)
|
||
|
|
values ('coach-uploads', 'coach-uploads', true)
|
||
|
|
on conflict (id) do nothing;
|
||
|
|
|
||
|
|
create policy "Public Access"
|
||
|
|
on storage.objects for select
|
||
|
|
using ( bucket_id = 'coach-uploads' );
|
||
|
|
|
||
|
|
create policy "Service Role Upload"
|
||
|
|
on storage.objects for insert
|
||
|
|
with check ( bucket_id = 'coach-uploads' );
|