chan-delorean/sql/make_get_posts.sql

26 lines
605 B
PL/PgSQL

BEGIN TRANSACTION;
DROP TYPE IF EXISTS post_key CASCADE;
-- DROP FUNCTION IF EXISTS get_posts;
CREATE TYPE post_key AS
( thread_id bigint
, board_post_id bigint
);
CREATE OR REPLACE FUNCTION get_posts(board_posts post_key[])
RETURNS SETOF posts AS $$
SELECT *
FROM posts
WHERE (thread_id, board_post_id) IN (SELECT thread_id, board_post_id FROM unnest(board_posts))
$$ LANGUAGE sql;
GRANT EXECUTE ON FUNCTION get_posts TO chan_archive_anon;
GRANT EXECUTE ON FUNCTION get_posts TO chan_archiver;
REVOKE EXECUTE ON FUNCTION get_posts FROM PUBLIC;
COMMIT;