Despot:Schema: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(One intermediate revision by the same user not shown)
Line 17: Line 17:
   `user_id` mediumint(8) unsigned NOT NULL,
   `user_id` mediumint(8) unsigned NOT NULL,
   `partition_id` mediumint(8) unsigned NOT NULL,
   `partition_id` mediumint(8) unsigned NOT NULL,
   `class` smallint(1) unsigned NOT NULL default '3',
   `class` enum('owner','peer','member') NOT NULL default 'member',
   UNIQUE KEY `user_id` (`user_id`,`partition_id`),
   UNIQUE KEY `user_id` (`user_id`,`partition_id`),
   KEY `class` (`class`)
   KEY `class` (`class`)
Line 24: Line 24:
   `partition_id` mediumint(8) unsigned NOT NULL,
   `partition_id` mediumint(8) unsigned NOT NULL,
   `field` varchar(255) NOT NULL,
   `field` varchar(255) NOT NULL,
   `oldvalue` varchar(255) default NULL,
   `oldvalue` mediumtext,
   `newvalue` varchar(255) default NULL,
   `newvalue` mediumtext,
   `who` mediumint(8) unsigned NOT NULL,
   `who` mediumint(8) unsigned NOT NULL,
   `ts` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
   `ts` datetime NOT NULL,
   KEY `ts` (`ts`)
   KEY `ts` (`ts`),
  KEY `partition_id` (`partition_id`)


`partitions`
`partitions`
   `id` mediumint(8) unsigned NOT NULL auto_increment,
   `id` mediumint(8) unsigned NOT NULL auto_increment,
   `name` varchar(255) NOT NULL,
   `name` varchar(255) NOT NULL,
   `state` tinyint(1) unsigned NOT NULL default '1',
   `state` enum('open','restricted','closed') NOT NULL default 'open',
   `description` text,
   `description` text,
   `doclinks` mediumtext,
   `doclinks` mediumtext,
   `newsgroups` mediumtext,
   `newsgroups` mediumtext,
   `parent_id` smallint(5) unsigned NOT NULL default '0',
   `parent_id` mediumint(8) unsigned NOT NULL default '0',
   `private` tinyint(1) NOT NULL default '0',
   `private` tinyint(1) NOT NULL default '0',
   PRIMARY KEY  (`id`),
   PRIMARY KEY  (`id`),
  KEY `name` (`name`),
  KEY `parent_id` (`parent_id`)


`repositories`
`repositories`
Line 55: Line 58:
   `repository_id` mediumint(8) unsigned NOT NULL,
   `repository_id` mediumint(8) unsigned NOT NULL,
   `field` varchar(255) NOT NULL,
   `field` varchar(255) NOT NULL,
   `oldvalue` varchar(255) default NULL,
   `oldvalue` mediumtext,
   `newvalue` varchar(255) default NULL,
   `newvalue` mediumtext,
   `who` mediumint(8) unsigned NOT NULL,
   `who` mediumint(8) unsigned NOT NULL,
   `ts` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
   `ts` datetime NOT NULL,
   KEY `ts` (`ts`)
   KEY `ts` (`ts`),
  KEY `repository_id` (`repository_id`)


`restrictions`
`restrictions`
Line 78: Line 82:
`tags`
`tags`
   `name` varchar(255) NOT NULL,
   `name` varchar(255) NOT NULL,
   `partition_id` mediumint(8) unsigned NOT NULL auto_increment,
   `partition_id` mediumint(8) unsigned NOT NULL,
   KEY `name` (`name`)
   KEY `name` (`name`)


Line 84: Line 88:
   `user_id` mediumint(8) unsigned NOT NULL,
   `user_id` mediumint(8) unsigned NOT NULL,
   `field` varchar(255) NOT NULL,
   `field` varchar(255) NOT NULL,
   `oldvalue` varchar(255) default NULL,
   `oldvalue` mediumtext,
   `newvalue` varchar(255) default NULL,
   `newvalue` mediumtext,
   `who` mediumint(8) unsigned NOT NULL,
   `who` mediumint(8) unsigned NOT NULL,
   `ts` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
   `ts` datetime NOT NULL,
   KEY `ts` (`ts`)
   KEY `ts` (`ts`),
  KEY `user_id` (`user_id`)


`vouchers`
`vouchers`

Latest revision as of 06:37, 14 March 2007

Proposed Schema

`branches`

 `id` mediumint(8) unsigned NOT NULL auto_increment,
 `name` varchar(255) NOT NULL,
 PRIMARY KEY  (`id`)

`files`

 `partition_id` mediumint(8) unsigned NOT NULL,
 `repository_id` mediumint(8) unsigned NOT NULL,
 `branch_id` mediumint(8) unsigned NOT NULL default '0',
 `pattern` varchar(255) NOT NULL,
 KEY `partition_id` (`partition_id`),
 KEY `repository_id` (`repository_id`),
 KEY `branch_id` (`branch_id`)

`members`

 `user_id` mediumint(8) unsigned NOT NULL,
 `partition_id` mediumint(8) unsigned NOT NULL,
 `class` enum('owner','peer','member') NOT NULL default 'member',
 UNIQUE KEY `user_id` (`user_id`,`partition_id`),
 KEY `class` (`class`)

`partition_changes`

 `partition_id` mediumint(8) unsigned NOT NULL,
 `field` varchar(255) NOT NULL,
 `oldvalue` mediumtext,
 `newvalue` mediumtext,
 `who` mediumint(8) unsigned NOT NULL,
 `ts` datetime NOT NULL,
 KEY `ts` (`ts`),
 KEY `partition_id` (`partition_id`)

`partitions`

 `id` mediumint(8) unsigned NOT NULL auto_increment,
 `name` varchar(255) NOT NULL,
 `state` enum('open','restricted','closed') NOT NULL default 'open',
 `description` text,
 `doclinks` mediumtext,
 `newsgroups` mediumtext,
 `parent_id` mediumint(8) unsigned NOT NULL default '0',
 `private` tinyint(1) NOT NULL default '0',
 PRIMARY KEY  (`id`),
 KEY `name` (`name`),
 KEY `parent_id` (`parent_id`)

`repositories`

 `id` mediumint(8) unsigned NOT NULL auto_increment,
 `name` varchar(255) NOT NULL,
 `type` tinyint(3) unsigned NOT NULL,
 `root` varchar(255) NOT NULL,
 `vouchers_req` tinyint(3) unsigned NOT NULL default '2',
 `sr_req` tinyint(3) unsigned NOT NULL default '1',
 `private` tinyint(1) NOT NULL default '0',
 PRIMARY KEY  (`id`),
 UNIQUE KEY `name` (`name`,`type`)

`repository_changes`

 `repository_id` mediumint(8) unsigned NOT NULL,
 `field` varchar(255) NOT NULL,
 `oldvalue` mediumtext,
 `newvalue` mediumtext,
 `who` mediumint(8) unsigned NOT NULL,
 `ts` datetime NOT NULL,
 KEY `ts` (`ts`),
 KEY `repository_id` (`repository_id`)

`restrictions`

 `user_id` mediumint(8) unsigned NOT NULL,
 `partition_id` mediumint(8) unsigned NOT NULL,
 UNIQUE KEY `user_id` (`user_id`,`partition_id`)

`sessions`

 `id` varchar(255) NOT NULL default ,
 `data` text,
 `expires` int(11) default NULL,
 PRIMARY KEY  (`id`)

`syncneeded`

 `repository_id` mediumint(8) unsigned NOT NULL,
 `needed` tinyint(1) NOT NULL default '0'

`tags`

 `name` varchar(255) NOT NULL,
 `partition_id` mediumint(8) unsigned NOT NULL,
 KEY `name` (`name`)

`user_changes`

 `user_id` mediumint(8) unsigned NOT NULL,
 `field` varchar(255) NOT NULL,
 `oldvalue` mediumtext,
 `newvalue` mediumtext,
 `who` mediumint(8) unsigned NOT NULL,
 `ts` datetime NOT NULL,
 KEY `ts` (`ts`),
 KEY `user_id` (`user_id`)

`vouchers`

 `user_id` mediumint(8) unsigned NOT NULL,
 `partition_id` mediumint(8) unsigned NOT NULL,
 `voucher_id` mediumint(8) unsigned NOT NULL,
 `sr` tinyint(1) NOT NULL default '0',
 KEY `user_id` (`user_id`,`partition_id`,`voucher_id`)

Fields that need to be decided if they belong in LDAP or mysql

- despot (for if the user is a despotadmin or not)
- neednewpassword (has the user reset his/her password from what was originally mailed?)

Other thoughts

- LDAP will have all the main user data in it (name, ssh keys, passwords, etc.)
- LDAP groups will determine access to repositories in general