1+ create type "public "." stream_platform" as enum (' Twitch' , ' Youtube' );
2+
3+ create table "public "." event_streams" (
4+ " id" bigint generated by default as identity not null ,
5+ " event_id" uuid not null ,
6+ " title" varchar (255 ),
7+ " platform" stream_platform not null ,
8+ " channel" varchar (255 ) not null ,
9+ " url" varchar (512 ),
10+ " internal_id" varchar (255 ),
11+ " start_time" timestamp with time zone
12+ );
13+
14+ alter table " public" ." event_streams" enable row level security;
15+
16+ CREATE UNIQUE INDEX event_streams_pkey ON public .event_streams USING btree (id);
17+
18+ alter table " public" ." event_streams" add constraint " event_streams_pkey" PRIMARY KEY using index " event_streams_pkey" ;
19+
20+ alter table " public" ." event_streams" add constraint " public_event_streams_event_id_fkey" FOREIGN KEY (event_id) REFERENCES events(id) not valid;
21+
22+ alter table " public" ." event_streams" validate constraint " public_event_streams_event_id_fkey" ;
23+
24+ create policy " SELECT event_streams global"
25+ on " public" ." event_streams"
26+ as permissive
27+ for select
28+ to authenticated
29+ using (
30+ ((auth .jwt () - > ' app_metadata' ::text ) - > ' globalPermissions' ::text ) @> ' "Events_View"' ::jsonb
31+ );
32+
33+ create policy " SELECT event_streams event_staff"
34+ on " public" ." event_streams"
35+ as permissive
36+ for select
37+ to authenticated
38+ using (event_id IN (
39+ SELECT event_staffs .event_id
40+ FROM event_staffs
41+ WHERE (
42+ event_staffs .user_id = (SELECT auth .uid () AS uid) AND
43+ (' Event_View' ::text = ANY (event_staffs .permissions ))
44+ )
45+ ));
46+
47+ create policy " SELECT event_streams av_token"
48+ on " public" ." event_streams"
49+ as permissive
50+ for select
51+ to public
52+ using (
53+ event_id = (auth .jwt () - >> ' eventId' ::text )::uuid
54+ );
55+
56+ grant select on table " public" ." event_streams" to " anon" ;
57+
58+ grant trigger on table " public" ." event_streams" to " anon" ;
59+
60+ grant delete on table " public" ." event_streams" to " authenticated" ;
61+
62+ grant insert on table " public" ." event_streams" to " authenticated" ;
63+
64+ grant references on table " public" ." event_streams" to " authenticated" ;
65+
66+ grant select on table " public" ." event_streams" to " authenticated" ;
67+
68+ grant trigger on table " public" ." event_streams" to " authenticated" ;
69+
70+ grant truncate on table " public" ." event_streams" to " authenticated" ;
71+
72+ grant update on table " public" ." event_streams" to " authenticated" ;
73+
74+ grant delete on table " public" ." event_streams" to " service_role" ;
75+
76+ grant insert on table " public" ." event_streams" to " service_role" ;
77+
78+ grant references on table " public" ." event_streams" to " service_role" ;
79+
80+ grant select on table " public" ." event_streams" to " service_role" ;
81+
82+ grant trigger on table " public" ." event_streams" to " service_role" ;
83+
84+ grant truncate on table " public" ." event_streams" to " service_role" ;
85+
86+ grant update on table " public" ." event_streams" to " service_role" ;
0 commit comments