-- 900_triggers_and_functions.sql -- Automated timestamps and consistency triggers -- === FUNCTION: update_updated_at_column === CREATE OR REPLACE FUNCTION update_updated_at_column() RETURNS TRIGGER AS $$ BEGIN NEW.updated_at = CURRENT_TIMESTAMP; RETURN NEW; END; $$ language 'plpgsql'; -- === TRIGGERS === -- Auth & Users CREATE TRIGGER update_users_updated_at BEFORE UPDATE ON public.users FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); CREATE TRIGGER update_federated_identities_updated_at BEFORE UPDATE ON public.federated_identities FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); CREATE TRIGGER update_user_sessions_updated_at BEFORE UPDATE ON public.user_sessions FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); -- RBAC & Profiles CREATE TRIGGER update_roles_updated_at BEFORE UPDATE ON public.roles FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); CREATE TRIGGER update_user_profiles_updated_at BEFORE UPDATE ON public.user_profiles FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); CREATE TRIGGER update_user_settings_updated_at BEFORE UPDATE ON public.user_settings FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); CREATE TRIGGER update_admin_settings_updated_at BEFORE UPDATE ON public.admin_settings FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); -- Files CREATE TRIGGER update_files_updated_at BEFORE UPDATE ON public.files FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); CREATE TRIGGER update_file_uploads_updated_at BEFORE UPDATE ON public.file_uploads FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); CREATE TRIGGER update_file_conversions_updated_at BEFORE UPDATE ON public.file_conversions FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); -- Streaming Core CREATE TRIGGER update_tracks_updated_at BEFORE UPDATE ON public.tracks FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); CREATE TRIGGER update_track_versions_updated_at BEFORE UPDATE ON public.track_versions FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); CREATE TRIGGER update_playlists_updated_at BEFORE UPDATE ON public.playlists FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); CREATE TRIGGER update_playlist_collaborators_updated_at BEFORE UPDATE ON public.playlist_collaborators FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); CREATE TRIGGER update_playlist_follows_updated_at BEFORE UPDATE ON public.playlist_follows FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); CREATE TRIGGER update_queues_updated_at BEFORE UPDATE ON public.queues FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); -- Streaming Analytics CREATE TRIGGER update_track_plays_updated_at BEFORE UPDATE ON public.track_plays FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); CREATE TRIGGER update_track_shares_updated_at BEFORE UPDATE ON public.track_shares FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); CREATE TRIGGER update_track_comments_updated_at BEFORE UPDATE ON public.track_comments FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); -- Media Processing CREATE TRIGGER update_hls_streams_updated_at BEFORE UPDATE ON public.hls_streams FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); -- Legacy Chat CREATE TRIGGER update_rooms_updated_at BEFORE UPDATE ON public.rooms FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); CREATE TRIGGER update_room_members_updated_at BEFORE UPDATE ON public.room_members FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); CREATE TRIGGER update_messages_updated_at BEFORE UPDATE ON public.messages FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();