diff --git a/backend/supabase/private_user_message_channel_members.sql b/backend/supabase/private_user_message_channel_members.sql index 29bc4d08..a3987002 100644 --- a/backend/supabase/private_user_message_channel_members.sql +++ b/backend/supabase/private_user_message_channel_members.sql @@ -30,12 +30,10 @@ END$$; ALTER TABLE private_user_message_channel_members ENABLE ROW LEVEL SECURITY; -- Indexes -DROP INDEX IF EXISTS pumcm_members_idx; -CREATE INDEX pumcm_members_idx +CREATE INDEX IF NOT EXISTS pumcm_members_idx ON public.private_user_message_channel_members USING btree (channel_id, user_id); -DROP INDEX IF EXISTS unique_user_channel; -CREATE UNIQUE INDEX unique_user_channel +CREATE UNIQUE INDEX IF NOT EXISTS unique_user_channel ON public.private_user_message_channel_members USING btree (channel_id, user_id); diff --git a/backend/supabase/private_user_messages.sql b/backend/supabase/private_user_messages.sql index c31e4045..a2d77ff7 100644 --- a/backend/supabase/private_user_messages.sql +++ b/backend/supabase/private_user_messages.sql @@ -16,7 +16,5 @@ CREATE TABLE IF NOT EXISTS private_user_messages ( ALTER TABLE private_user_messages ENABLE ROW LEVEL SECURITY; -- Indexes -DROP INDEX IF EXISTS private_user_messages_channel_id_idx; - CREATE INDEX IF NOT EXISTS private_user_messages_channel_id_idx ON public.private_user_messages USING btree (channel_id, created_time DESC); diff --git a/backend/supabase/private_user_seen_message_channels.sql b/backend/supabase/private_user_seen_message_channels.sql index 3ce8793e..6ac1406a 100644 --- a/backend/supabase/private_user_seen_message_channels.sql +++ b/backend/supabase/private_user_seen_message_channels.sql @@ -47,8 +47,6 @@ FOR SELECT ); -- Indexes -DROP INDEX IF EXISTS user_seen_private_messages_created_time_desc_idx; - -CREATE INDEX user_seen_private_messages_created_time_desc_idx +CREATE INDEX IF NOT EXISTS user_seen_private_messages_created_time_desc_idx ON public.private_user_seen_message_channels USING btree (user_id, channel_id, created_time DESC); diff --git a/backend/supabase/profile_ships.sql b/backend/supabase/profile_ships.sql index 60396542..e3702c16 100644 --- a/backend/supabase/profile_ships.sql +++ b/backend/supabase/profile_ships.sql @@ -17,9 +17,6 @@ FOR SELECT USING (true); -- Indexes -- Primary key automatically creates a unique index on (creator_id, ship_id), so no need to recreate it. --- Keep additional indexes for query optimization: -DROP INDEX IF EXISTS profile_ships_target1_id; -CREATE INDEX profile_ships_target1_id ON public.profile_ships USING btree (target1_id); +CREATE INDEX IF NOT EXISTS profile_ships_target1_id ON public.profile_ships USING btree (target1_id); -DROP INDEX IF EXISTS profile_ships_target2_id; -CREATE INDEX profile_ships_target2_id ON public.profile_ships USING btree (target2_id); +CREATE INDEX IF NOT EXISTS profile_ships_target2_id ON public.profile_ships USING btree (target2_id); diff --git a/backend/supabase/profile_stars.sql b/backend/supabase/profile_stars.sql index a1d89000..33db09b2 100644 --- a/backend/supabase/profile_stars.sql +++ b/backend/supabase/profile_stars.sql @@ -16,6 +16,4 @@ FOR SELECT USING (true); -- Indexes -- The primary key already creates a unique index on (creator_id, star_id), so no need to recreate it. - -DROP INDEX IF EXISTS profile_stars_target_id_idx; -CREATE INDEX profile_stars_target_id_idx ON public.profile_stars USING btree (target_id); +CREATE INDEX IF NOT EXISTS profile_stars_target_id_idx ON public.profile_stars USING btree (target_id); diff --git a/backend/supabase/profiles.sql b/backend/supabase/profiles.sql index cd0c2c5a..e7327b0b 100644 --- a/backend/supabase/profiles.sql +++ b/backend/supabase/profiles.sql @@ -69,11 +69,9 @@ FOR UPDATE WITH CHECK ((user_id = firebase_uid())); -- Indexes -DROP INDEX IF EXISTS profiles_user_id_idx; -CREATE INDEX profiles_user_id_idx ON public.profiles USING btree (user_id); +CREATE INDEX IF NOT EXISTS profiles_user_id_idx ON public.profiles USING btree (user_id); -DROP INDEX IF EXISTS unique_user_id; -CREATE UNIQUE INDEX unique_user_id ON public.profiles USING btree (user_id); +CREATE UNIQUE INDEX IF NOT EXISTS unique_user_id ON public.profiles USING btree (user_id); CREATE INDEX IF NOT EXISTS idx_profiles_last_mod_24h ON public.profiles USING btree (last_modification_time); @@ -82,13 +80,10 @@ CREATE INDEX IF NOT EXISTS idx_profiles_bio_length ON profiles (bio_length); -- Fastest general-purpose index -DROP INDEX IF EXISTS profiles_lat_lon_idx; -CREATE INDEX profiles_lat_lon_idx ON profiles (city_latitude, city_longitude); +CREATE INDEX IF NOT EXISTS profiles_lat_lon_idx ON profiles (city_latitude, city_longitude); -- Optional additional index for large tables / clustered inserts -DROP INDEX IF EXISTS profiles_lat_lon_brin_idx; -CREATE INDEX profiles_lat_lon_brin_idx ON profiles USING BRIN (city_latitude, city_longitude) WITH (pages_per_range = 32); - +CREATE INDEX IF NOT EXISTS profiles_lat_lon_brin_idx ON profiles USING BRIN (city_latitude, city_longitude) WITH (pages_per_range = 32); -- Functions and Triggers diff --git a/backend/supabase/push_subscriptions.sql b/backend/supabase/push_subscriptions.sql index c583d7ff..82cd77c8 100644 --- a/backend/supabase/push_subscriptions.sql +++ b/backend/supabase/push_subscriptions.sql @@ -10,11 +10,8 @@ create table push_subscriptions ( ALTER TABLE push_subscriptions ENABLE ROW LEVEL SECURITY; -- Indexes -DROP INDEX IF EXISTS user_id_idx; -CREATE INDEX user_id_idx ON push_subscriptions (user_id); +CREATE INDEX IF not exists user_id_idx ON push_subscriptions (user_id); -DROP INDEX IF EXISTS endpoint_idx; -CREATE INDEX endpoint_idx ON push_subscriptions (endpoint); +CREATE INDEX IF not exists endpoint_idx ON push_subscriptions (endpoint); -DROP INDEX IF EXISTS endpoint_user_id_idx; -CREATE INDEX endpoint_user_id_idx ON push_subscriptions (endpoint, user_id); \ No newline at end of file +CREATE INDEX IF not exists endpoint_user_id_idx ON push_subscriptions (endpoint, user_id); \ No newline at end of file diff --git a/backend/supabase/users.sql b/backend/supabase/users.sql index 8e9f802f..ae5aa839 100644 --- a/backend/supabase/users.sql +++ b/backend/supabase/users.sql @@ -18,20 +18,16 @@ ALTER TABLE users ENABLE ROW LEVEL SECURITY; -- Policies DROP POLICY IF EXISTS "public read" ON users; - CREATE POLICY "public read" ON users FOR SELECT USING (true); -- Indexes -DROP INDEX IF EXISTS user_username_idx; -CREATE INDEX user_username_idx ON public.users USING btree (username); +CREATE INDEX IF NOT EXISTS user_username_idx ON public.users USING btree (username); -DROP INDEX IF EXISTS users_created_time; -CREATE INDEX users_created_time ON public.users USING btree (created_time DESC); +CREATE INDEX IF NOT EXISTS users_created_time ON public.users USING btree (created_time DESC); -DROP INDEX IF EXISTS users_name_idx; -CREATE INDEX users_name_idx ON public.users USING btree (name); +CREATE INDEX IF NOT EXISTS users_name_idx ON public.users USING btree (name); -- Remove these if you trust PRIMARY KEY auto-index: -- DROP INDEX IF EXISTS users_pkey; diff --git a/backend/supabase/views.sql b/backend/supabase/views.sql deleted file mode 100644 index 8b137891..00000000 --- a/backend/supabase/views.sql +++ /dev/null @@ -1 +0,0 @@ - diff --git a/backend/supabase/vote_results.sql b/backend/supabase/vote_results.sql index 4bd38de7..db0ed9b2 100644 --- a/backend/supabase/vote_results.sql +++ b/backend/supabase/vote_results.sql @@ -24,20 +24,15 @@ CREATE POLICY "public read" ON vote_results FOR ALL USING (true); -- Indexes -DROP INDEX IF EXISTS user_id_idx; -CREATE INDEX user_id_idx ON vote_results (user_id); +CREATE INDEX IF NOT EXISTS user_id_idx ON vote_results (user_id); -DROP INDEX IF EXISTS vote_id_idx; -CREATE INDEX vote_id_idx ON vote_results (vote_id); +CREATE INDEX IF NOT EXISTS vote_id_idx ON vote_results (vote_id); -DROP INDEX IF EXISTS idx_vote_results_vote_choice; -CREATE INDEX idx_vote_results_vote_choice ON vote_results (vote_id, choice); +CREATE INDEX IF NOT EXISTS idx_vote_results_vote_choice ON vote_results (vote_id, choice); -DROP INDEX IF EXISTS idx_vote_results_vote_choice_priority; -CREATE INDEX idx_vote_results_vote_choice_priority ON vote_results (vote_id, choice, priority); +CREATE INDEX IF NOT EXISTS idx_vote_results_vote_choice_priority ON vote_results (vote_id, choice, priority); -DROP INDEX IF EXISTS idx_votes_created_time; -CREATE INDEX idx_votes_created_time ON votes (created_time DESC); +CREATE INDEX IF NOT EXISTS idx_votes_created_time ON votes (created_time DESC); drop function if exists get_votes_with_results; diff --git a/backend/supabase/votes.sql b/backend/supabase/votes.sql index ca85a98f..232d1a3d 100644 --- a/backend/supabase/votes.sql +++ b/backend/supabase/votes.sql @@ -20,8 +20,6 @@ CREATE POLICY "public read" ON votes FOR ALL USING (true); -- Indexes -DROP INDEX IF EXISTS creator_id_idx; -CREATE INDEX creator_id_idx ON votes (creator_id); +CREATE INDEX IF NOT EXISTS creator_id_idx ON votes (creator_id); -DROP INDEX IF EXISTS idx_votes_created_time; -CREATE INDEX idx_votes_created_time ON votes (created_time DESC); +CREATE INDEX IF NOT EXISTS idx_votes_created_time ON votes (created_time DESC);