More refactoring for subgroups.
[timetracker.git] / mysql.sql
index e3f0bd8..0f3f00c 100644 (file)
--- a/mysql.sql
+++ b/mysql.sql
@@ -17,6 +17,7 @@ CREATE TABLE `tt_groups` (
   `parent_id` int(11) default NULL,                      # parent group id
   `org_id` int(11) default NULL,                         # organization id (id of top group)
   `name` varchar(80) default NULL,                       # group name
+  `description` varchar(255) default NULL,               # group description
   `currency` varchar(7) default NULL,                    # currency symbol
   `decimal_mark` char(1) NOT NULL default '.',           # separator in decimals
   `lang` varchar(10) NOT NULL default 'en',              # language
@@ -333,13 +334,16 @@ create unique index client_name_idx on tt_clients(group_id, name, status);
 # Structure for table tt_client_project_binds. This table maps clients to assigned projects.
 #
 CREATE TABLE `tt_client_project_binds` (
-  `client_id` int(11) NOT NULL, # client id
-  `project_id` int(11) NOT NULL # project id
+  `client_id` int(11) NOT NULL,                    # client id
+  `project_id` int(11) NOT NULL,                   # project id
+  `group_id` int(11) default NULL,                 # group id
+  `org_id` int(11) default NULL                    # organization id
 );
 
 # Indexes for tt_client_project_binds.
 create index client_idx on tt_client_project_binds(client_id);
 create index project_idx on tt_client_project_binds(project_id);
+create unique index client_project_idx on tt_client_project_binds(client_id, project_id);
 
 
 #
@@ -348,6 +352,8 @@ create index project_idx on tt_client_project_binds(project_id);
 #
 CREATE TABLE `tt_config` (
   `user_id` int(11) NOT NULL,            # user id
+  `group_id` int(11) default NULL,       # group id
+  `org_id` int(11) default NULL,         # organization id
   `param_name` varchar(32) NOT NULL,     # parameter name
   `param_value` varchar(80) default NULL # parameter value
 );
@@ -364,6 +370,7 @@ create unique index param_idx on tt_config(user_id, param_name);
 CREATE TABLE `tt_custom_fields` (
   `id` int(11) NOT NULL auto_increment,    # custom field id
   `group_id` int(11) NOT NULL,             # group id
+  `org_id` int(11) default NULL,           # organization id
   `type` tinyint(4) NOT NULL default 0,    # custom field type (text or dropdown)
   `label` varchar(32) NOT NULL default '', # custom field label
   `required` tinyint(4) default 0,         # whether this custom field is mandatory for time records
@@ -377,8 +384,11 @@ CREATE TABLE `tt_custom_fields` (
 #
 CREATE TABLE `tt_custom_field_options` (
   `id` int(11) NOT NULL auto_increment,    # option id
+  `group_id` int(11) default NULL,         # group id
+  `org_id` int(11) default NULL,           # organization id
   `field_id` int(11) NOT NULL,             # custom field id
   `value` varchar(32) NOT NULL default '', # option value
+  `status` tinyint(4) default 1,           # option status
   PRIMARY KEY  (`id`)
 );
 
@@ -389,6 +399,8 @@ CREATE TABLE `tt_custom_field_options` (
 #
 CREATE TABLE `tt_custom_field_log` (
   `id` bigint NOT NULL auto_increment, # custom field log id
+  `group_id` int(11) default NULL,     # group id
+  `org_id` int(11) default NULL,       # organization id
   `log_id` bigint NOT NULL,            # id of a record in tt_log this record corresponds to
   `field_id` int(11) NOT NULL,         # custom field id
   `option_id` int(11) default NULL,    # Option id. Used for dropdown custom fields.
@@ -476,4 +488,4 @@ CREATE TABLE `tt_site_config` (
   PRIMARY KEY  (`param_name`)
 );
 
-INSERT INTO `tt_site_config` (`param_name`, `param_value`, `created`) VALUES ('version_db', '1.18.20', now()); # TODO: change when structure changes.
+INSERT INTO `tt_site_config` (`param_name`, `param_value`, `created`) VALUES ('version_db', '1.18.26', now()); # TODO: change when structure changes.