Edgewall Software

Version 1 (modified by Christian Boos, 17 years ago) ( diff )

Experimental generic data model for Trac

GenericTrac Data Model

This is an experimental branch for trying out the various ideas exposed in the recent proposals:

See also this mail.

Current Status

TODO

  • modify the Milestone module so that it uses the new proposed datamodel. See #TheMilestoneExample.
  • experiment new tabbed view for the milestone (View, Discussion, History). See TracProject/UiGuidelines.
  • milestone should be able to have attachments, too (#3068)
  • adapt the Roadmap module to the new model
  • adapt the Milestone admin component to the new model

Once this is complete, validate the genericity by promoting the components to be first class resources as well (#1233).

Working on the generic aspect of Trac should also make it possible to implement various generic operations on Trac resources as plugins, mainly being able to (re-)implement TracCrossReferences as a plugin.

DONE

  • Not yet started

The Milestone Example

The proposed data model would be:

-- record Milestone current properties
-- 
create table milestone_prop (
 id    text,
 name  text,
 value text
);

create index milestone_idx on milestone_prop (id, name);

-- record Milestone change metadata
--
create table milestone_journal (
 tid            int primary key,
 date           int,
 authname       text,
 author         text,
 ip             text,
 authenticated  int
);

create index milestone_date_idx on milestone_journal ( date );
create index milestone_authname_idx on milestone_journal ( authname, authenticated );

-- record Milestone changed properties
--
create table milestone_history (
 tid   int,
 id    text,
 name  text,
 value text,
 unique (tid, id)
);

The existing milestone table can be kept, it will simply not be used anymore. This will allow to test the branch within existing environments.

Note: See TracWiki for help on using the wiki.