summaryrefslogtreecommitdiff
path: root/sql/functions/contact.mark_contact_us_post.sql
diff options
context:
space:
mode:
Diffstat (limited to 'sql/functions/contact.mark_contact_us_post.sql')
-rw-r--r--sql/functions/contact.mark_contact_us_post.sql38
1 files changed, 38 insertions, 0 deletions
diff --git a/sql/functions/contact.mark_contact_us_post.sql b/sql/functions/contact.mark_contact_us_post.sql
new file mode 100644
index 0000000..7bcc001
--- /dev/null
+++ b/sql/functions/contact.mark_contact_us_post.sql
@@ -0,0 +1,38 @@
+drop function contact.mark_contact_us_post (
+ p_contact_us_post_id int,
+ p_user_id int,
+ p_read_p bool
+);
+
+create or replace function contact.mark_contact_us_post (
+ p_contact_us_post_id int,
+ p_user_id int,
+ p_read_p bool
+)
+returns void
+as $$
+declare
+ l_id bigint;
+begin
+ if(p_read_p) then
+ select id into l_id
+ from contact.contact_us_posts_read
+ where contact_us_post_id = p_contact_us_post_id
+ and user_id = p_user_id;
+
+ if(l_id is null) then
+ insert into contact.contact_us_posts_read (
+ contact_us_post_id,
+ user_id
+ ) values (
+ p_contact_us_post_id,
+ p_user_id
+ );
+ end if;
+ else
+ delete from contact.contact_us_posts_read
+ where contact_us_post_id = p_contact_us_post_id
+ and user_id = p_user_id;
+ end if;
+end;
+$$ language plpgsql;