-- /packages/photo-album/sql/postgresql/photo-album-clip.sql
--
--
-- Extremely simple image clipboard to support photo
-- ordering and presentation generation
--
-- Copyright (C) 2002 Jeff Davis
-- @author Jeff Davis davis@xarg.net
-- @creation-date 10/30/2002
--
-- @cvs-id $Id: photo-album-clip.sql,v 1.4 2004/03/17 11:00:48 jeffd Exp $
--
-- This is free software distributed under the terms of the GNU Public
-- License. Full text of the license is available from the GNU Project:
-- http://www.fsf.org/copyleft/gpl.html
create table pa_collections (
collection_id integer
constraint pa_collection_id_fk
references acs_objects(object_id)
constraint pa_collections_pk
primary key,
owner_id integer
constraint pa_collections_owner_id_fk
references users(user_id) on delete cascade
constraint pa_collections_owner_id_nn
not null,
title varchar(255)
constraint pa_collections_title_nn
not null
);
comment on table pa_collections is '
Table for saving a collection of photos
';
create table pa_collection_photo_map (
collection_id integer
constraint pa_collections_fk
references pa_collections(collection_id) on delete cascade,
photo_id integer
constraint pa_photos_fk
references cr_items(item_id) on delete cascade,
constraint pa_collection_photo_map_pk
primary key (collection_id, photo_id)
);
comment on table pa_collections is '
Map a photo into the collection.
';
select acs_object_type__create_type(
'photo_collection',
'Photo Collection',
'Photo Collections',
'acs_object',
'pa_collections',
'collection_id',
'photo_album',
'f',
null,
'pa_collection__title'
);
create or replace function pa_collection__new (integer,integer,varchar,timestamptz,integer,varchar,integer)
returns integer as '
declare
p_collection_id alias for $1; -- default null
p_owner_id alias for $2; -- default null
p_title alias for $3;
p_creation_date alias for $4; -- default now()
p_creation_user alias for $5; -- default null
p_creation_ip alias for $6; -- default null
p_context_id alias for $7; -- default null
v_collection_id pa_collections.collection_id%TYPE;
begin
v_collection_id := acs_object__new (
p_collection_id,
''photo_collection'',
p_creation_date,
p_creation_user,
p_creation_ip,
p_context_id
);
insert into pa_collections
(collection_id, owner_id, title)
values
(v_collection_id, p_owner_id, p_title);
PERFORM acs_permission__grant_permission(
v_collection_id,
p_owner_id,
''admin''
);
return v_collection_id;
end;' language 'plpgsql';
create or replace function pa_collection__delete (integer)
returns integer as '
declare
p_collection_id alias for $1;
begin
delete from acs_permissions
where object_id = p_collection_id;
delete from pa_collections
where collection_id = p_collection_id;
raise NOTICE ''Deleting photo_collection...'';
PERFORM acs_object__delete(p_collection_id);
return 0;
end;' language 'plpgsql';
create or replace function pa_collection__title (integer)
returns varchar as '
declare
p_collection_id alias for $1;
v_title varchar;
begin
select title into v_title
from pa_collections
where collection_id = p_collection_id;
return v_title;
end;
' language 'plpgsql';