From e30ee019294e2abbbd3644b73e4327ae17df4392 Mon Sep 17 00:00:00 2001 From: ckonstanski Date: Mon, 27 May 2024 14:52:07 -0600 Subject: gallery --- sql/functions/general.get_galleries.sql | 20 +++++++++++++++ sql/functions/general.get_gallery.sql | 24 ++++++++++++++++++ sql/functions/general.insert_gallery.sql | 33 ++++++++++++++++++++++++ sql/functions/general.update_gallery.sql | 43 ++++++++++++++++++++++++++++++++ 4 files changed, 120 insertions(+) create mode 100644 sql/functions/general.get_galleries.sql create mode 100644 sql/functions/general.get_gallery.sql create mode 100644 sql/functions/general.insert_gallery.sql create mode 100644 sql/functions/general.update_gallery.sql (limited to 'sql/functions') diff --git a/sql/functions/general.get_galleries.sql b/sql/functions/general.get_galleries.sql new file mode 100644 index 0000000..fc93095 --- /dev/null +++ b/sql/functions/general.get_galleries.sql @@ -0,0 +1,20 @@ +drop function general.get_galleries (); + +create or replace function general.get_galleries () +returns setof general.gallery_t +as $$ +begin + return query + select g.id, + g.description, + g.filename, + g.mime_type, + substring(g.content::text from 3) as content, + g.created, + g.modified + from general.gallery g + order by g.modified desc; + + return; +end; +$$ language plpgsql; diff --git a/sql/functions/general.get_gallery.sql b/sql/functions/general.get_gallery.sql new file mode 100644 index 0000000..66c9fce --- /dev/null +++ b/sql/functions/general.get_gallery.sql @@ -0,0 +1,24 @@ +drop function general.get_gallery ( + p_id bigint +); + +create or replace function general.get_gallery ( + p_id bigint +) +returns setof general.gallery_t +as $$ +begin + return query + select g.id, + g.description, + g.filename, + g.mime_type, + substring(g.content::text from 3) as content, + g.created, + g.modified + from general.gallery g + where g.id = p_id; + + return; +end; +$$ language plpgsql; diff --git a/sql/functions/general.insert_gallery.sql b/sql/functions/general.insert_gallery.sql new file mode 100644 index 0000000..0582c6b --- /dev/null +++ b/sql/functions/general.insert_gallery.sql @@ -0,0 +1,33 @@ +drop function general.insert_gallery ( + p_description text, + p_filename character varying, + p_mime_type character varying, + p_hex text +); + +create or replace function general.insert_gallery ( + p_description text, + p_filename character varying, + p_mime_type character varying, + p_hex text +) +returns bigint +as $$ +declare + l_id bigint; +begin + insert into general.gallery ( + description, + filename, + mime_type, + content + ) values ( + p_description, + p_filename, + p_mime_type, + decode(p_hex, 'hex') + ) returning id into l_id; + + return l_id; +end; +$$ language plpgsql; diff --git a/sql/functions/general.update_gallery.sql b/sql/functions/general.update_gallery.sql new file mode 100644 index 0000000..e8532db --- /dev/null +++ b/sql/functions/general.update_gallery.sql @@ -0,0 +1,43 @@ +drop function general.update_gallery ( + p_id bigint, + p_description text, + p_filename character varying, + p_mime_type character varying, + p_hex text +); + +create or replace function general.update_gallery ( + p_id bigint, + p_description text, + p_filename character varying, + p_mime_type character varying, + p_hex text +) +returns bigint +as $$ +declare + l_id bigint; +begin + select g.id into l_id + from general.gallery g + where g.id = p_id; + + if(l_id is not null) then + update general.gallery + set description = p_description, + filename = p_filename, + mime_type = p_mime_type, + content = decode(p_hex, 'hex'), + modified = now() + where id = p_id; + + select g.id into l_id + from general.gallery g + where g.id = p_id; + + return l_id; + else + return null; + end if; +end; +$$ language plpgsql; -- cgit v1.3