40 lines
901 B
PL/PgSQL
40 lines
901 B
PL/PgSQL
-- Deploy camper:add_media to pg
|
|
-- requires: roles
|
|
-- requires: schema_camper
|
|
-- requires: media
|
|
-- requires: media_content
|
|
-- requires: media_type
|
|
|
|
begin;
|
|
|
|
set search_path to camper, public;
|
|
|
|
create or replace function add_media(company integer, filename text, media_type media_type, content bytea) returns integer as
|
|
$$
|
|
declare
|
|
hash bytea;
|
|
mid integer;
|
|
begin
|
|
insert into media_content (media_type, bytes)
|
|
values (media_type, content)
|
|
on conflict (content_hash) do update
|
|
set media_type = excluded.media_type
|
|
returning content_hash into hash
|
|
;
|
|
|
|
insert into media (company_id, original_filename, content_hash)
|
|
values (company, filename, hash)
|
|
returning media_id into mid
|
|
;
|
|
|
|
return mid;
|
|
end
|
|
$$
|
|
language plpgsql
|
|
;
|
|
|
|
revoke execute on function add_media(integer, text, media_type, bytea) from public;
|
|
grant execute on function add_media(integer, text, media_type, bytea) to admin;
|
|
|
|
commit;
|