110 lines
4.9 KiB
PL/PgSQL
110 lines
4.9 KiB
PL/PgSQL
|
|
SET statement_timeout = 0;
|
|
SET lock_timeout = 0;
|
|
SET idle_in_transaction_session_timeout = 0;
|
|
SET client_encoding = 'UTF8';
|
|
SET standard_conforming_strings = on;
|
|
SELECT pg_catalog.set_config('search_path', '', false);
|
|
SET check_function_bodies = false;
|
|
SET xmloption = content;
|
|
SET client_min_messages = warning;
|
|
SET row_security = off;
|
|
|
|
CREATE SCHEMA IF NOT EXISTS "storage";
|
|
|
|
ALTER SCHEMA "storage" OWNER TO "supabase_admin";
|
|
|
|
CREATE OR REPLACE FUNCTION "storage"."can_insert_object"("bucketid" "text", "name" "text", "owner" "uuid", "metadata" "jsonb") RETURNS "void"
|
|
LANGUAGE "plpgsql"
|
|
AS $$
|
|
BEGIN
|
|
INSERT INTO "storage"."objects" ("bucket_id", "name", "owner", "metadata") VALUES (bucketid, name, owner, metadata);
|
|
-- hack to rollback the successful insert
|
|
RAISE sqlstate 'PT200' using
|
|
message = 'ROLLBACK',
|
|
detail = 'rollback successful insert';
|
|
END
|
|
$$;
|
|
|
|
ALTER FUNCTION "storage"."can_insert_object"("bucketid" "text", "name" "text", "owner" "uuid", "metadata" "jsonb") OWNER TO "supabase_storage_admin";
|
|
|
|
CREATE TABLE IF NOT EXISTS "storage"."objects" (
|
|
"id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL,
|
|
"bucket_id" "text",
|
|
"name" "text",
|
|
"owner" "uuid",
|
|
"created_at" timestamp with time zone DEFAULT "now"(),
|
|
"updated_at" timestamp with time zone DEFAULT "now"(),
|
|
"last_accessed_at" timestamp with time zone DEFAULT "now"(),
|
|
"metadata" "jsonb",
|
|
"path_tokens" "text"[] GENERATED ALWAYS AS ("string_to_array"("name", '/'::"text")) STORED,
|
|
"version" "text",
|
|
"owner_id" "text"
|
|
);
|
|
|
|
ALTER TABLE "storage"."objects" OWNER TO "supabase_storage_admin";
|
|
|
|
COMMENT ON COLUMN "storage"."objects"."owner" IS 'Field is deprecated, use owner_id instead';
|
|
|
|
ALTER TABLE ONLY "storage"."buckets"
|
|
ADD CONSTRAINT "buckets_pkey" PRIMARY KEY ("id");
|
|
|
|
ALTER TABLE ONLY "storage"."migrations"
|
|
ADD CONSTRAINT "migrations_name_key" UNIQUE ("name");
|
|
|
|
ALTER TABLE ONLY "storage"."migrations"
|
|
ADD CONSTRAINT "migrations_pkey" PRIMARY KEY ("id");
|
|
|
|
ALTER TABLE ONLY "storage"."objects"
|
|
ADD CONSTRAINT "objects_pkey" PRIMARY KEY ("id");
|
|
|
|
CREATE UNIQUE INDEX "bname" ON "storage"."buckets" USING "btree" ("name");
|
|
|
|
CREATE UNIQUE INDEX "bucketid_objname" ON "storage"."objects" USING "btree" ("bucket_id", "name");
|
|
|
|
CREATE INDEX "name_prefix_search" ON "storage"."objects" USING "btree" ("name" "text_pattern_ops");
|
|
|
|
CREATE OR REPLACE TRIGGER "delete_images" AFTER DELETE ON "storage"."objects" FOR EACH ROW EXECUTE FUNCTION "public"."check_can_upload"();
|
|
|
|
CREATE OR REPLACE TRIGGER "insert_images" AFTER INSERT ON "storage"."objects" FOR EACH ROW EXECUTE FUNCTION "public"."check_can_upload"();
|
|
|
|
CREATE OR REPLACE TRIGGER "update_objects_updated_at" BEFORE UPDATE ON "storage"."objects" FOR EACH ROW EXECUTE FUNCTION "storage"."update_updated_at_column"();
|
|
|
|
ALTER TABLE ONLY "storage"."objects"
|
|
ADD CONSTRAINT "objects_bucketId_fkey" FOREIGN KEY ("bucket_id") REFERENCES "storage"."buckets"("id");
|
|
|
|
ALTER TABLE ONLY "storage"."objects"
|
|
ADD CONSTRAINT "objects_owner_fkey" FOREIGN KEY ("owner") REFERENCES "auth"."users"("id");
|
|
|
|
CREATE POLICY "Anyone can read owner" ON "storage"."objects" FOR SELECT USING ((("bucket_id" = 'public-images'::"text") AND ("owner" IS NULL)));
|
|
|
|
CREATE POLICY "Authenticated users can delete images" ON "storage"."objects" FOR DELETE TO "authenticated" USING ((("bucket_id" = 'public-images'::"text") AND ("auth"."uid"() = "owner")));
|
|
|
|
CREATE POLICY "Authenticated users can insert images" ON "storage"."objects" FOR INSERT TO "authenticated" WITH CHECK ((("bucket_id" = 'public-images'::"text") AND ("auth"."uid"() = "owner")));
|
|
|
|
CREATE POLICY "Authenticated users can read images" ON "storage"."objects" FOR SELECT TO "authenticated" USING ((("bucket_id" = 'public-images'::"text") AND ("auth"."uid"() = "owner")));
|
|
|
|
CREATE POLICY "Authenticated users can update images" ON "storage"."objects" FOR UPDATE TO "authenticated" USING (("bucket_id" = 'public-images'::"text")) WITH CHECK (("auth"."uid"() = "owner"));
|
|
|
|
ALTER TABLE "storage"."buckets" ENABLE ROW LEVEL SECURITY;
|
|
|
|
ALTER TABLE "storage"."migrations" ENABLE ROW LEVEL SECURITY;
|
|
|
|
ALTER TABLE "storage"."objects" ENABLE ROW LEVEL SECURITY;
|
|
|
|
CREATE POLICY "objects_auth_select" ON "storage"."objects" FOR SELECT TO "authenticated" USING (("owner" = "auth"."uid"()));
|
|
|
|
GRANT ALL ON SCHEMA "storage" TO "postgres";
|
|
GRANT USAGE ON SCHEMA "storage" TO "anon";
|
|
GRANT USAGE ON SCHEMA "storage" TO "authenticated";
|
|
GRANT USAGE ON SCHEMA "storage" TO "service_role";
|
|
GRANT ALL ON SCHEMA "storage" TO "supabase_storage_admin";
|
|
GRANT ALL ON SCHEMA "storage" TO "dashboard_user";
|
|
|
|
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "storage" GRANT ALL ON SEQUENCES TO "postgres";
|
|
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "storage" GRANT ALL ON SEQUENCES TO "anon";
|
|
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "storage" GRANT ALL ON SEQUENCES TO "authenticated";
|
|
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "storage" GRANT ALL ON SEQUENCES TO "service_role";
|
|
|
|
RESET ALL;
|