--
-- news__status/2
--
create or replace function news__status(
timestamp with time zone,
timestamp with time zone
) returns varchar as $$
declare
p_publish_date alias for $1;
p_archive_date alias for $2;
begin
if p_publish_date is not null then
if p_publish_date > current_timestamp then
-- Publishing in the future
if p_archive_date is null then
return 'going_live_no_archive';
else
return 'going_live_with_archive';
end if;
else
-- Published in the past
if p_archive_date is null then
return 'published_no_archive';
else
if p_archive_date > current_timestamp then
return 'published_with_archive';
else
return 'archived';
end if;
end if;
end if;
else
-- publish_date null
return 'unapproved';
end if;
end;
$$ language plpgsql;