[rt-devel] Blast from the Past

Jesse Vincent jesse at bestpractical.com
Mon Mar 24 23:31:52 EST 2003


Date: Sat, 27 Feb 1999 23:43:04 -0800
From: Jesse <jesse at fsck.com>
To: rt-devel at skylight.fsck.com
Subject: Planning for RT2


So I've started to plan for rt2, as I'm planning to release 1.0.0 in
the next several weeks.  The 1.0 series will continue as a
bugfix-track. rt2 will be a COMPLETE rewrite.  Frankly, I'm embarassed
by the current code...it must perish.

rt2 needs to be a good deal more flexible than what we've got now.
I'd like to see the following changes:

	DBI Backend,
	Object-based architecture,
	MIME message handling,
	Get rid of setuidness, if possible,
	Per-queue configurable schema,
	Seperate access to queues from notifications,
	Move transaction content into the database,
	Move mail templates to the database.
	User-mode ticket browsing tool.
	More configurable web ui.
	Cookies-based authentication.



To this end, I've started to put together a schema.  it's not
complete by any means, but I'd love input.


CREATE TABLE ticket (
	id int(11) AUTO_INCREMENT PRIMARY KEY,
	alias char(24),			#a textual name for this ticket.
	parent int(11),			#the id of this ticket's id
	queue char(24) NOT NULL,	#the id of the queue this ticket's in
	title char(127) NOT NULL,	#subject of this fact
	priority int(11),		#0 to 99 relative priority
	due date,			#date due
	created date,			#date created
	modified date,			#date last modified
	time_taken int(11), #in minutes
	requestor_notified date,	
	state ('submitted','reviewed',''stalled','deferred','resolved','historical'),
	primary_key (id)
);


CREATE TABLE transaction (
	id int(11) AUTO_INCREMENT PRIMARY KEY,
	content blob,
	content_type char(64),
	time_taken int(11),
	ticket int(11) NOT NULL
);

CREATE TABLE action (

	id int(11) AUTO_INCREMENT PRIMARY KEY,
	transaction int(11) NOT NULL,
	col char(24) NOT NULL,
	coltype enum('core','extension'),
	id newval char(256)
);


CREATE TABLE ticket_notificants (
	
	ticket int(11) NOT NULL,
	role enum('requestor','owner',3rdparty'),
	person char(80) NOT NULL,
	on enum('state', 'correspond','comment', 'transaction'),
	template char(24) NOT NULL
	
);


CREATE TABLE ticket_access (
	ticket int(11) NOT NULL,
	person char(80) NOT NULL,
	access enum('see','view','modify','admin')
);

CREATE TABLE queue_access (
	queue char(24) NOT NULL,
	person char(80) NOT NULL,
	access enum('see','view','modify','admin')
);

CREATE TABLE queue_notificants (
	
	ticket int(11) NOT NULL,
	person char(80) NOT NULL,
	on enum('state', 'correspond', 'comment','transaction'),
	template char(24) NOT NULL
);


CREATE TABLE queue (
	email char(127) not null,
	name char(64) not null,
 	id char(24),
	primary key (id),
	extended_fields char(24),	 #the name of a table which has the queue's extended schema
);


CREATE TABLE templates (
 	id int(11) AUTO_INCREMENT NOT NULL,
	name char(24) NOT NULL,
	content BLOB,
	embedded_perl BOOL
);

CREATE TABLE users (
	email char(127) not null,
	login char(32),
	password char(32),
	realname char(127),
	primary key (email)
);




More information about the Rt-devel mailing list