--
-- bookmark__toggle_open_close/2
--
create or replace function bookmark__toggle_open_close(
  p_bookmark_id integer,
  p_browsing_user_id bigint
) returns int4 as $$

DECLARE
BEGIN
    -- Toggle the closed_p flag
    UPDATE bm_in_closed_p SET closed_p =
           (
           SELECT CASE WHEN closed_p = TRUE THEN FALSE ELSE TRUE END
           FROM bm_in_closed_p
           WHERE bookmark_id = p_bookmark_id
           AND in_closed_p_id = p_browsing_user_id
           )
    WHERE bookmark_id = p_bookmark_id
    AND in_closed_p_id = p_browsing_user_id;

    -- Now update the in_closed_p status for this user for all bookmarks under
    -- the toggled folder
    perform bookmark__update_in_closed_p_one_user (p_bookmark_id, p_browsing_user_id);
    RETURN 0;
END;
$$ language plpgsql;