-- Grants for app user on all current tables, sequences and functions
-- Generated by extract_schema.sh — re-run after each migration

GRANT SELECT, INSERT, UPDATE, DELETE ON public.course_admins TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.course_config TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.course_email_rules TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.course_email_templates TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.course_professor_levels TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.course_reminder_rules TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.courses TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.email_dispatch_rules TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.email_templates TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.guests TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.levels TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.notifications_log TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.partners TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.professor_profiles TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.promotion_reasons TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.registration_messages TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.registrations_true TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.session_log TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.session_notifications_log TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.session_participants TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.session_schedule_exceptions TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.session_schedules TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.sessions TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.student_lifecycle_log TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.student_profiles TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.superadmin_profiles TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.system_config TO "elfi1953_stc-eu";
GRANT SELECT, INSERT, UPDATE, DELETE ON public.tutor_profiles TO "elfi1953_stc-eu";

GRANT USAGE, SELECT ON SEQUENCE public.course_admins_id_seq TO "elfi1953_stc-eu";
GRANT USAGE, SELECT ON SEQUENCE public.course_email_rules_id_seq TO "elfi1953_stc-eu";
GRANT USAGE, SELECT ON SEQUENCE public.course_email_templates_id_seq TO "elfi1953_stc-eu";
GRANT USAGE, SELECT ON SEQUENCE public.course_professor_levels_id_seq TO "elfi1953_stc-eu";
GRANT USAGE, SELECT ON SEQUENCE public.course_reminder_rules_id_seq TO "elfi1953_stc-eu";
GRANT USAGE, SELECT ON SEQUENCE public.courses_course_id_seq TO "elfi1953_stc-eu";
GRANT USAGE, SELECT ON SEQUENCE public.email_dispatch_rules_id_seq TO "elfi1953_stc-eu";
GRANT USAGE, SELECT ON SEQUENCE public.notifications_log_id_seq TO "elfi1953_stc-eu";
GRANT USAGE, SELECT ON SEQUENCE public.promotion_reasons_reason_id_seq TO "elfi1953_stc-eu";
GRANT USAGE, SELECT ON SEQUENCE public.registrations_true_result_id_seq TO "elfi1953_stc-eu";
GRANT USAGE, SELECT ON SEQUENCE public.session_log_id_seq TO "elfi1953_stc-eu";
GRANT USAGE, SELECT ON SEQUENCE public.session_notifications_log_id_seq TO "elfi1953_stc-eu";
GRANT USAGE, SELECT ON SEQUENCE public.session_participants_id_seq TO "elfi1953_stc-eu";
GRANT USAGE, SELECT ON SEQUENCE public.session_schedule_exceptions_exception_id_seq TO "elfi1953_stc-eu";
GRANT USAGE, SELECT ON SEQUENCE public.session_schedules_schedule_id_seq TO "elfi1953_stc-eu";
GRANT USAGE, SELECT ON SEQUENCE public.sessions_session_id_seq TO "elfi1953_stc-eu";
GRANT USAGE, SELECT ON SEQUENCE public.student_lifecycle_log_lifecycle_log_id_seq TO "elfi1953_stc-eu";

GRANT EXECUTE ON FUNCTION public.fn_admin_add_course_admin(p_course_id integer, p_professor_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_add_professor_assignment(p_course_id integer, p_professor_id bigint, p_level_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_create_course(p_data jsonb) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_create_email_rule(p_event_type character varying, p_template_key character varying, p_email_field character varying, p_name_field character varying, p_language character varying) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_create_email_template(p_template_key character varying, p_language character varying, p_subject character varying, p_body_html text, p_body_text text) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_delete_course_email_template(p_course_id integer, p_template_key text, p_language text) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_delete_email_rule(p_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_delete_email_template(p_template_key character varying, p_language character varying) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_get_course_config(p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_get_course_email_rules(p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_list_course_admins(p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_list_course_email_templates(p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_list_courses() TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_list_email_rules() TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_list_email_templates() TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_list_guests() TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_list_levels(p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_list_notify_templates(p_type text) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_list_partners(p_filter text) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_list_professor_assignments(p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_list_promotion_reasons() TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_partner_detail(p_partner_id bigint) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_remove_course_admin(p_id integer, p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_remove_professor_assignment(p_assignment_id integer, p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_search_partners(p_query text) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_set_course_config(p_course_id integer, p_config jsonb) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_set_course_email_rule(p_course_id integer, p_event_type text, p_active boolean) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_toggle_email_rule(p_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_toggle_level(p_level_id integer, p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_toggle_partner_role(p_partner_id bigint, p_role text, p_active boolean) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_toggle_promotion_reason(p_reason_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_update_email_template(p_template_key character varying, p_language character varying, p_subject character varying, p_body_html text, p_body_text text) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_update_professor_assignment(p_id integer, p_level_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_upsert_course_email_template(p_course_id integer, p_template_key text, p_language text, p_subject text, p_body_html text, p_body_text text) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_upsert_level(p_data jsonb) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_admin_upsert_promotion_reason(p_data jsonb) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_check_course_access(p_partner_id bigint, p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_check_enrollment_quota(p_tutor_id bigint, p_level_id integer, p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_enroll_partner_system(p_data jsonb) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_get_system_config(p_key character varying, p_language character varying) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_get_user_session_context(p_email valid_email) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_log_notification(p_event_type text, p_email text, p_session_id integer, p_partner_id bigint) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_log_session_notification(p_session_id integer, p_email text, p_event_type text) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_prepare_notifications(p_event_type text, p_context jsonb, p_language text, p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_professor_cancel_session(p_professor_id bigint, p_session_id integer, p_reason text) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_professor_create_session(p_professor_id bigint, p_course_id integer, p_title text, p_scheduled_at timestamp with time zone, p_duration_min integer, p_participant_roles text[]) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_professor_list_admin_courses(p_professor_id bigint) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_professor_list_course_colleagues(p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_professor_list_course_guests(p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_professor_list_course_students(p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_professor_list_course_tutors(p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_professor_list_courses(p_professor_id bigint, p_is_superadmin_active boolean) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_professor_list_session_participants(p_session_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_professor_list_sessions(p_professor_id bigint, p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_professor_save_session_zoom(p_session_id integer, p_zoom_meeting_id text, p_zoom_join_url text, p_participants jsonb) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_professor_sync_attendance(p_session_id integer, p_attendance jsonb) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_register_tutor(p_data jsonb) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_reminder_list(p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_reminder_toggle(p_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_reminder_upsert(p_data jsonb) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_schedule_delete(p_schedule_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_schedule_delete_exception(p_exception_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_schedule_list(p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_schedule_toggle(p_schedule_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_schedule_upsert(p_data jsonb) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_schedule_upsert_exception(p_data jsonb) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_session_upsert_participant(p_session_id integer, p_partner_id bigint, p_email text, p_full_name text, p_breakout_room text, p_zoom_registrant_id text, p_zoom_join_url text) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_set_system_config(p_key character varying, p_language character varying, p_value text) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_student_get_enrollment(p_partner_id bigint, p_email text, p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_substitute_template(p_template text, p_context jsonb) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_tutor_check_student(p_partner_id bigint, p_email text, p_tutor_id bigint) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_tutor_convert_guest(p_tutor_id bigint, p_guest_email text, p_partner_id bigint, p_zinzino_range text) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_tutor_list_courses(p_tutor_id bigint) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_tutor_list_promotion_reasons(p_lang text) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_tutor_list_promotion_reasons() TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_tutor_list_students(p_tutor_id bigint, p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_tutor_list_upcoming_sessions(p_partner_id bigint, p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_tutor_next_session_for_student(p_partner_id bigint, p_course_id integer, p_session_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_tutor_next_session_for_student(p_partner_id bigint, p_course_id integer) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_tutor_promote_student(p_tutor_id bigint, p_student_id bigint, p_course_id integer, p_new_level_id integer, p_reason_id integer, p_comments text) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_tutor_update_student_status(p_student_id bigint, p_new_status text, p_tutor_id bigint, p_reason text) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_tutor_update_student_status(p_student_id bigint, p_new_status text, p_tutor_id bigint, p_course_id integer, p_reason text) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_upsert_partner(p_partner_id bigint, p_email valid_email, p_name text, p_surname text, p_phone intl_phone, p_country iso_country, p_range text, p_mismatch_key text) TO "elfi1953_stc-eu";
GRANT EXECUTE ON FUNCTION public.fn_validate_partner_id(p_partner_id bigint, p_email valid_email) TO "elfi1953_stc-eu";
