mirror of
https://github.com/jcreek/SvelteKitSaasBoilerplate.git
synced 2026-07-13 19:13:48 +00:00
chore(#15): add migration to create profiles table
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
create table "public"."profiles" (
|
||||
"id" uuid not null,
|
||||
"updated_at" timestamp with time zone,
|
||||
"created_at" timestamp with time zone default now(),
|
||||
"username" text,
|
||||
"full_name" text
|
||||
);
|
||||
|
||||
|
||||
alter table "public"."profiles" enable row level security;
|
||||
|
||||
CREATE UNIQUE INDEX profiles_pkey ON public.profiles USING btree (id);
|
||||
|
||||
CREATE UNIQUE INDEX profiles_username_key ON public.profiles USING btree (username);
|
||||
|
||||
alter table "public"."profiles" add constraint "profiles_pkey" PRIMARY KEY using index "profiles_pkey";
|
||||
|
||||
alter table "public"."profiles" add constraint "profiles_id_fkey" FOREIGN KEY (id) REFERENCES auth.users(id) ON DELETE CASCADE not valid;
|
||||
|
||||
alter table "public"."profiles" validate constraint "profiles_id_fkey";
|
||||
|
||||
alter table "public"."profiles" add constraint "profiles_username_key" UNIQUE using index "profiles_username_key";
|
||||
|
||||
alter table "public"."profiles" add constraint "username_length" CHECK ((char_length(username) >= 3)) not valid;
|
||||
|
||||
alter table "public"."profiles" validate constraint "username_length";
|
||||
|
||||
set check_function_bodies = off;
|
||||
|
||||
CREATE OR REPLACE FUNCTION public.handle_new_user()
|
||||
RETURNS trigger
|
||||
LANGUAGE plpgsql
|
||||
SECURITY DEFINER
|
||||
AS $function$
|
||||
begin
|
||||
insert into public.profiles (id, full_name)
|
||||
values (new.id, new.raw_user_meta_data->>'full_name');
|
||||
return new;
|
||||
end;
|
||||
$function$
|
||||
;
|
||||
|
||||
grant delete on table "public"."profiles" to "anon";
|
||||
|
||||
grant insert on table "public"."profiles" to "anon";
|
||||
|
||||
grant references on table "public"."profiles" to "anon";
|
||||
|
||||
grant select on table "public"."profiles" to "anon";
|
||||
|
||||
grant trigger on table "public"."profiles" to "anon";
|
||||
|
||||
grant truncate on table "public"."profiles" to "anon";
|
||||
|
||||
grant update on table "public"."profiles" to "anon";
|
||||
|
||||
grant delete on table "public"."profiles" to "authenticated";
|
||||
|
||||
grant insert on table "public"."profiles" to "authenticated";
|
||||
|
||||
grant references on table "public"."profiles" to "authenticated";
|
||||
|
||||
grant select on table "public"."profiles" to "authenticated";
|
||||
|
||||
grant trigger on table "public"."profiles" to "authenticated";
|
||||
|
||||
grant truncate on table "public"."profiles" to "authenticated";
|
||||
|
||||
grant update on table "public"."profiles" to "authenticated";
|
||||
|
||||
grant delete on table "public"."profiles" to "service_role";
|
||||
|
||||
grant insert on table "public"."profiles" to "service_role";
|
||||
|
||||
grant references on table "public"."profiles" to "service_role";
|
||||
|
||||
grant select on table "public"."profiles" to "service_role";
|
||||
|
||||
grant trigger on table "public"."profiles" to "service_role";
|
||||
|
||||
grant truncate on table "public"."profiles" to "service_role";
|
||||
|
||||
grant update on table "public"."profiles" to "service_role";
|
||||
|
||||
create policy "Public profiles are viewable by everyone."
|
||||
on "public"."profiles"
|
||||
as permissive
|
||||
for select
|
||||
to public
|
||||
using (true);
|
||||
|
||||
|
||||
create policy "Users can insert their own profile."
|
||||
on "public"."profiles"
|
||||
as permissive
|
||||
for insert
|
||||
to public
|
||||
with check ((auth.uid() = id));
|
||||
|
||||
|
||||
create policy "Users can update own profile."
|
||||
on "public"."profiles"
|
||||
as permissive
|
||||
for update
|
||||
to public
|
||||
using ((auth.uid() = id));
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user