--
-- packages/ticket-tracker/sql/ticket-create.sql
--
-- 
-- @author Phong Nguyen (phong@arsdigita.com)
-- @author Tony Tseng (tony@arsidigta.com)
-- 
-- @creation-date 2000-11-15
--
-- @cvs-id $Id: ticket-create.sql,v 1.3 2003/05/17 12:33:30 jeffd Exp $
--
-- Ported to OpenACS - Vinod Kurup (vkurup@massmed.org)
--

----------------------------------
-- KNOWLEDGE LEVEL OBJECTS
----------------------------------

select acs_object_type__create_type (
	'ttracker_ticket',
	'Ticket Tracker Ticket',
	'Ticket Tracker Tickets',
	'acs_message',
	'ttracker_tickets',
	'ticket_id',
	'ttracker_ticket',
	'f',
	null,
	'ttracker_ticket.name'
);    

select acs_attribute__create_attribute (
	'ttracker_ticket',
	'category_id',
	'integer',
	'Category ID',
	'Category IDs',
	null,
	null,
	null,
	1,
	1,
	null,
	'type_specific',
	'f'
);

select acs_attribute__create_attribute (
	'ttracker_ticket',
	'subject',
	'string',
	'Subject',
	'Subjects',
	null,
	null,
	null,
	1,
	1,
	null,
	'type_specific',
	'f'
);

select acs_attribute__create_attribute (
	'ttracker_ticket',
	'severity',
	'integer',
	'Severity',
	'Severities',
	null,
	null,
	null,
	1,
	1,
	null,
	'type_specific',
	'f'
);

select acs_attribute__create_attribute (
	'ttracker_ticket',
	'priority',
	'integer',
	'Priority',
	'Priorities',
	null,
	null,
	null,
	1,
	1,
	null,
	'type_specific',
	'f'
);

----------------------------------
-- OPERATIONAL LEVEL
----------------------------------

create table ttracker_tickets (
    ticket_id        integer
                     constraint ttkr_tkt_pk
                     primary key
                     constraint ttkr_tkt_fk	
                     references acs_messages (message_id) on delete cascade,
    category_id      integer 
                     constraint ttkr_tkt_category_id_fk
                     references ttracker_categories (category_id) on delete cascade,
    creation_user    integer
					 constraint ttkr_tkt_creation_user_fk
                     references persons(person_id)
                     constraint ttkr_tkt_creation_user_nn
                     not null,
    creation_date    timestamptz default current_timestamp
                     constraint ttkr_tkt_date_nn
                     not null,                 
    subject          varchar(1000)
                     constraint ttkr_tkt_subject_nn
                     not null,
    severity         integer
                     constraint ttkr_tkt_severity_nn
                     not null,
    priority         integer
                     constraint ttkr_tkt_priority_nn
                     not null
);

-- to prevent ttracker_tickets from getting locked 
-- when ttracker_categories table is being updated
create index tt_category_id_idx on ttracker_tickets (category_id);

-- to prevent ttracker_tickets from getting locked 
-- when persons table is being updated
create index tt_creation_user_idx on ttracker_tickets (creation_user);

comment on table ttracker_tickets is '
    The contents of a ticket is stored as an acs-message. This table 
    extends the the acs_messages table to hold additional knowledge 
    level attributes for a ticket type.    
';

comment on column ttracker_tickets.creation_user is '
    The id of the user who submitted the ticket. It is stored 
    redundantly to avoid joining acs-objects.
';

comment on column ttracker_tickets.creation_date is '
    The creation date of the ticket. It is stored redundantly to 
    avoid joining against cr_items and cr_revisions.
';

comment on column ttracker_tickets.category_id is '
    The id of the category to associate this ticket to.
';

comment on column ttracker_tickets.subject is '
    The subject of the ticket. It is stored redundantly to avoid 
    joining against cr_items and cr_revisions. 
';

comment on column ttracker_tickets.severity is '
    The severity level of the ticket.
';

comment on column ttracker_tickets.priority is '
    The priority level of the ticket.
';


