+
diff --git a/supabase/migrations/20231210071647_profiles.sql b/supabase/migrations/20231210071647_profiles.sql
index 223d2af..10173af 100644
--- a/supabase/migrations/20231210071647_profiles.sql
+++ b/supabase/migrations/20231210071647_profiles.sql
@@ -1,14 +1,20 @@
-create table public.profiles (
- id uuid not null references auth.users on delete cascade,
- username varchar(64),
- nickname varchar(256),
- school int8,
- primary key (id)
+create table public.profiles
+(
+ id uuid not null references auth.users on delete cascade,
+ username varchar(64),
+ nickname varchar(256),
+ school int8,
+ primary key (id)
);
-alter table public.profiles enable row level security;
+
+alter table public.profiles
+ enable row level security;
+
create policy "Public profiles are viewable by everyone." on profiles for
-select using (true);
+ select using (true);
+
create policy "Users can insert their own profile." on profiles for
-insert with check (auth.uid() = id);
+ insert with check (auth.uid() = id);
+
create policy "Users can update own profile." on profiles for
-update using (auth.uid() = id);
\ No newline at end of file
+ update using (auth.uid() = id);
\ No newline at end of file
diff --git a/supabase/migrations/20231210071842_problems.sql b/supabase/migrations/20231210071842_problems.sql
index 7007967..f05316e 100644
--- a/supabase/migrations/20231210071842_problems.sql
+++ b/supabase/migrations/20231210071842_problems.sql
@@ -1,30 +1,39 @@
-create table public.problems (
- id bigint generated by default as identity,
- title text not null,
- description text not null,
- type character varying not null,
- tags character varying [] null,
- author uuid null,
- metadata jsonb null,
- is_draft boolean null default true,
- is_hidden boolean null default false,
- created_at timestamp with time zone null default now(),
- constraint problems_pkey primary key (id),
- constraint problems_author_fkey foreign key (author) references auth.users (id)
+create table public.problems
+(
+ id bigint generated by default as identity,
+ title text not null,
+ description text not null,
+ type character varying not null,
+ tags character varying[] null,
+ author uuid null,
+ metadata jsonb null,
+ is_draft boolean null default true,
+ is_hidden boolean null default false,
+ created_at timestamp with time zone null default now(),
+ constraint problems_pkey primary key (id),
+ constraint problems_author_fkey foreign key (author) references auth.users (id)
) tablespace pg_default;
-alter table public.problems enable row level security;
+
+alter table public.problems
+ enable row level security;
+
create policy "Public problems are viewable by everyone." on problems for
-select using (true);
-create table public.problem_cases (
- id bigint generated by default as identity,
- spec jsonb not null,
- limitations jsonb not null,
- answer jsonb not null,
- problem int8 not null,
- is_hidden bool not null default true,
- constraint problem_cases_pkey primary key (id),
- constraint problem_cases_author_fkey foreign key (problem) references public.problems (id)
+ select using (true);
+
+create table public.problem_cases
+(
+ id bigint generated by default as identity,
+ spec jsonb not null,
+ limitations jsonb not null,
+ answer jsonb not null,
+ problem int8 not null,
+ is_hidden bool not null default true,
+ constraint problem_cases_pkey primary key (id),
+ constraint problem_cases_author_fkey foreign key (problem) references public.problems (id)
) tablespace pg_default;
-alter table public.problem_cases enable row level security;
+
+alter table public.problem_cases
+ enable row level security;
+
create policy "Public problem cases are viewable by everyone." on problem_cases for
-select using (is_hidden = false);
\ No newline at end of file
+ select using (is_hidden = false);
\ No newline at end of file
diff --git a/supabase/migrations/20231210135930_challenges.sql b/supabase/migrations/20231210135930_challenges.sql
index 63bc3bb..ab57fb1 100644
--- a/supabase/migrations/20231210135930_challenges.sql
+++ b/supabase/migrations/20231210135930_challenges.sql
@@ -1,14 +1,36 @@
-create table public.challenges (
- id bigint generated by default as identity,
- answers jsonb not null,
- details jsonb not null,
- author uuid not null,
- problem int8 not null,
- status varchar(256) not null,
- created_at timestamp with time zone null default now(),
- constraint challenges_pkey primary key (id),
- constraint challenges_author_fkey foreign key (author) references auth.users (id),
- constraint challenges_problem_fkey foreign key (problem) references public.problems (id)
+create table public.challenges
+(
+ id bigint generated by default as identity,
+ answers jsonb not null,
+ details jsonb not null,
+ author uuid not null,
+ problem int8 not null,
+ status varchar(256) not null,
+ created_at timestamp with time zone null default now(),
+ constraint challenges_pkey primary key (id),
+ constraint challenges_author_fkey foreign key (author) references auth.users (id),
+ constraint challenges_problem_fkey foreign key (problem) references public.problems (id)
) tablespace pg_default;
+
alter table public.challenges enable row level security;
-create policy "The challagers can see their challenges" on "public"."challenges" for select to public using (auth.uid() = author) with check (true)
\ No newline at end of file
+
+create
+policy "Enable insert for everyone" on "public"."challenges"
+as permissive for insert
+to public
+with check (true);
+
+create
+policy "Enable read access for users' own items" on "public"."challenges"
+as permissive for
+select
+ to public
+ using (author = auth.uid());
+
+create
+policy "Enable update access for users' own items" on "public"."challenges"
+as permissive for
+update
+ to public
+ using (author = auth.uid())
+with check (author = auth.uid())
\ No newline at end of file