bugzilla-4intranet/extensions/testopia/code/db_schema-abstract_schema.pl

1102 lines
34 KiB
Perl

#!/usr/bin/perl -wT
use strict;
my $schema = Bugzilla->hook_args->{schema};
$schema->{test_attachments} = {
FIELDS => [
attachment_id => { TYPE => 'INTSERIAL', PRIMARYKEY => 1, NOTNULL => 1 },
submitter_id => {
TYPE => 'INT3',
NOTNULL => 1,
REFERENCES => {
TABLE => 'profiles',
COLUMN => 'userid'
}
},
description => { TYPE => 'MEDIUMTEXT' },
filename => { TYPE => 'MEDIUMTEXT' },
creation_ts => { TYPE => 'DATETIME', NOTNULL => 1 },
mime_type => { TYPE => 'varchar(100)', NOTNULL => 1 },
],
INDEXES => [ test_attachments_submitter_idx => ['submitter_id'], ],
},
$schema->{test_case_attachments} = {
FIELDS => [
attachment_id => {
TYPE => 'INT4',
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_attachments',
COLUMN => 'attachment_id',
DELETE => 'CASCADE'
}
},
case_id => {
TYPE => 'INT4',
NOTNULL => 1,
UNSIGNED => 1,
REFERENCES => {
TABLE => 'test_cases',
COLUMN => 'case_id',
DELETE => 'CASCADE'
}
},
case_run_id => {
TYPE => 'INT4',
UNSIGNED => 1,
REFERENCES => {
TABLE => 'test_case_runs',
COLUMN => 'case_run_id',
DELETE => 'CASCADE'
}
},
],
INDEXES => [
test_case_attachments_primary_idx => ['attachment_id'],
attachment_case_id_idx => ['case_id'],
attachment_caserun_id_idx => ['case_run_id'],
],
},
$schema->{test_plan_attachments} = {
FIELDS => [
attachment_id => {
TYPE => 'INT4',
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_attachments',
COLUMN => 'attachment_id',
DELETE => 'CASCADE'
}
},
plan_id => {
TYPE => 'INT4',
NOTNULL => 1,
UNSIGNED => 1,
REFERENCES => {
TABLE => 'test_plans',
COLUMN => 'plan_id',
DELETE => 'CASCADE'
}
},
],
INDEXES => [
test_plan_attachments_primary_idx => ['attachment_id'],
attachment_plan_id_idx => ['plan_id'],
],
},
$schema->{test_case_categories} = {
FIELDS => [
category_id => { TYPE => 'SMALLSERIAL', PRIMARYKEY => 1, NOTNULL => 1 },
product_id => {
TYPE => 'INT2',
NOTNULL => 1,
REFERENCES => {
TABLE => 'products',
COLUMN => 'id',
DELETE => 'CASCADE'
}
},
name => { TYPE => 'varchar(240)', NOTNULL => 1 },
description => { TYPE => 'MEDIUMTEXT' },
],
INDEXES => [
category_product_id_name_idx => { FIELDS => [qw(product_id name)], TYPE => 'UNIQUE' },
category_product_idx => { FIELDS => [qw(category_id product_id)], TYPE => 'UNIQUE' },
category_name_idx_v2 => ['name'],
],
},
$schema->{test_cases} = {
FIELDS => [
case_id => { TYPE => 'INTSERIAL', PRIMARYKEY => 1, NOTNULL => 1 },
case_status_id => {
TYPE => 'INT2',
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_case_status',
COLUMN => 'case_status_id',
DELETE => 'CASCADE'
}
},
category_id => {
TYPE => 'INT2',
NOTNULL => 1,
UNSIGNED => 1,
REFERENCES => {
TABLE => 'test_case_categories',
COLUMN => 'category_id',
DELETE => 'CASCADE'
}
},
priority_id => {
TYPE => 'INT2',
REFERENCES => {
TABLE => 'priority',
COLUMN => 'id',
DELETE => 'CASCADE'
}
},
author_id => {
TYPE => 'INT3',
NOTNULL => 1,
REFERENCES => {
TABLE => 'profiles',
COLUMN => 'userid',
}
},
default_tester_id => {
TYPE => 'INT3',
},
creation_date => { TYPE => 'DATETIME', NOTNULL => 1 },
estimated_time => { TYPE => 'TIME' },
isautomated => { TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => '0' },
sortkey => { TYPE => 'INT4' },
script => { TYPE => 'MEDIUMTEXT' },
arguments => { TYPE => 'MEDIUMTEXT' },
summary => { TYPE => 'varchar(255)' },
requirement => { TYPE => 'varchar(255)' },
alias => { TYPE => 'varchar(255)' },
],
INDEXES => [
test_case_category_idx => ['category_id'],
test_case_author_idx => ['author_id'],
test_case_creation_date_idx => ['creation_date'],
test_case_sortkey_idx => ['sortkey'],
test_case_shortname_idx => ['alias'],
test_case_requirement_idx => ['requirement'],
test_case_status_idx => ['case_status_id'],
test_case_tester_idx => ['default_tester_id'],
],
},
$schema->{test_case_bugs} = {
FIELDS => [
bug_id => {
TYPE => 'INT3',
NOTNULL => 1,
REFERENCES => {
TABLE => 'bugs',
COLUMN => 'bug_id',
DELETE => 'CASCADE'
}
},
case_run_id => {
TYPE => 'INT4',
UNSIGNED => 1,
REFERENCES => {
TABLE => 'test_case_runs',
COLUMN => 'case_run_id',
DELETE => 'CASCADE'
}
},
case_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_cases',
COLUMN => 'case_id',
DELETE => 'CASCADE'
}
},
],
INDEXES => [
case_bugs_bug_id_idx => ['bug_id'],
case_bugs_case_id_idx => ['case_id'],
case_bugs_case_run_id_idx => ['case_run_id'],
],
},
$schema->{test_case_runs} = {
FIELDS => [
case_run_id => { TYPE => 'INTSERIAL', PRIMARYKEY => 1, NOTNULL => 1 },
run_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_runs',
COLUMN => 'run_id',
DELETE => 'CASCADE'
}
},
case_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_cases',
COLUMN => 'case_id',
DELETE => 'CASCADE'
}
},
assignee => {
TYPE => 'INT3'
},
testedby => {
TYPE => 'INT3'
},
case_run_status_id => {
TYPE => 'INT2',
NOTNULL => 1,
UNSIGNED => 1,
REFERENCES => {
TABLE => 'test_case_run_status',
COLUMN => 'case_run_status_id',
DELETE => 'CASCADE'
}
},
case_text_version => { TYPE => 'INT3', NOTNULL => 1 },
build_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_builds',
COLUMN => 'build_id',
DELETE => 'CASCADE'
}
},
running_date => { TYPE => 'DATETIME' },
close_date => { TYPE => 'DATETIME' },
notes => { TYPE => 'TEXT' },
iscurrent => { TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => '0' },
sortkey => { TYPE => 'INT4' },
environment_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_environments',
COLUMN => 'environment_id',
DELETE => 'CASCADE'
}
},
],
INDEXES => [
case_run_case_id_idx => ['case_id'],
case_run_assignee_idx => ['assignee'],
case_run_testedby_idx => ['testedby'],
case_run_close_date_idx => ['close_date'],
case_run_build_env_idx => {
FIELDS => [qw(run_id case_id build_id environment_id)],
TYPE => 'UNIQUE'
},
case_run_status_idx => ['case_run_status_id'],
case_run_text_ver_idx => ['case_text_version'],
case_run_build_idx_v2 => ['build_id'],
case_run_env_idx_v2 => ['environment_id'],
],
},
$schema->{test_case_texts} = {
FIELDS => [
case_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_cases',
COLUMN => 'case_id',
DELETE => 'CASCADE'
}
},
case_text_version => { TYPE => 'INT3', NOTNULL => 1 },
who => {
TYPE => 'INT3',
NOTNULL => 1,
},
creation_ts => { TYPE => 'DATETIME', NOTNULL => 1 },
action => { TYPE => 'MEDIUMTEXT' },
effect => { TYPE => 'MEDIUMTEXT' },
setup => { TYPE => 'MEDIUMTEXT' },
breakdown => { TYPE => 'MEDIUMTEXT' },
],
INDEXES => [
case_versions_idx => {
FIELDS => [qw(case_id case_text_version)],
TYPE => 'UNIQUE'
},
case_versions_who_idx => ['who'],
case_versions_creation_ts_idx => ['creation_ts'],
],
},
$schema->{test_tags} = {
FIELDS => [
tag_id => { TYPE => 'INTSERIAL', PRIMARYKEY => 1, NOTNULL => 1 },
tag_name => { TYPE => 'varchar(255)', NOTNULL => 1 },
],
INDEXES => [ test_tag_name_idx_v2 => [qw(tag_name)] ],
},
$schema->{test_case_tags} = {
FIELDS => [
tag_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_tags',
COLUMN => 'tag_id',
DELETE => 'CASCADE'
}
},
case_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_cases',
COLUMN => 'case_id',
DELETE => 'CASCADE'
}
},
userid => {
TYPE => 'INT3',
NOTNULL => 1,
},
],
INDEXES => [
case_tags_primary_idx => { FIELDS => [qw(tag_id case_id userid)], TYPE => 'UNIQUE' },
case_tags_secondary_idx => { FIELDS => [qw(tag_id case_id)], TYPE => 'UNIQUE' },
case_tags_case_id_idx_v3 => [qw(case_id)],
case_tags_userid_idx => [qw(userid)],
],
},
$schema->{test_run_tags} = {
FIELDS => [
tag_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_tags',
COLUMN => 'tag_id',
DELETE => 'CASCADE'
}
},
run_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_runs',
COLUMN => 'run_id',
DELETE => 'CASCADE'
}
},
userid => {
TYPE => 'INT3',
NOTNULL => 1,
},
],
INDEXES => [
run_tags_primary_idx => { FIELDS => [qw(tag_id run_id userid)], TYPE => 'UNIQUE' },
run_tags_secondary_idx => { FIELDS => [qw(tag_id run_id)], TYPE => 'UNIQUE' },
run_tags_run_id_idx => [qw(run_id)],
run_tags_userid_idx => [qw(userid)],
],
},
$schema->{test_plan_tags} = {
FIELDS => [
tag_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_tags',
COLUMN => 'tag_id',
DELETE => 'CASCADE'
}
},
plan_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_plans',
COLUMN => 'plan_id',
DELETE => 'CASCADE'
}
},
userid => {
TYPE => 'INT3',
NOTNULL => 1,
},
],
INDEXES => [
plan_tags_primary_idx => { FIELDS => [qw(tag_id plan_id userid)], TYPE => 'UNIQUE' },
plan_tags_secondary_idx => { FIELDS => [qw(tag_id plan_id)], TYPE => 'UNIQUE' },
plan_tags_plan_id_idx => [qw(plan_id)],
plan_tags_userid_idx => [qw(userid)],
],
},
$schema->{test_plans} = {
FIELDS => [
plan_id => { TYPE => 'INTSERIAL', PRIMARYKEY => 1, NOTNULL => 1 },
product_id => {
TYPE => 'INT2',
NOTNULL => 1,
REFERENCES => {
TABLE => 'products',
COLUMN => 'id',
DELETE => 'CASCADE'
}
},
author_id => {
TYPE => 'INT3',
NOTNULL => 1,
},
type_id => {
TYPE => 'INT2',
NOTNULL => 1,
UNSIGNED => 1,
REFERENCES => {
TABLE => 'test_plan_types',
COLUMN => 'type_id',
DELETE => 'CASCADE'
}
},
default_product_version => { TYPE => 'MEDIUMTEXT', NOTNULL => 1 },
name => { TYPE => 'varchar(255)', NOTNULL => 1 },
wiki => { TYPE => 'varchar(255)', NOTNULL => 1 },
creation_date => { TYPE => 'DATETIME', NOTNULL => 1 },
isactive => { TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => '1' },
],
INDEXES => [
plan_product_plan_id_idx => [qw(product_id plan_id)],
plan_author_idx => ['author_id'],
plan_type_idx => ['type_id'],
plan_isactive_idx => ['isactive'],
plan_name_idx => ['name'],
],
},
$schema->{test_plan_permissions} = {
FIELDS => [
userid => {
TYPE => 'INT3',
NOTNULL => 1,
REFERENCES => {
TABLE => 'profiles',
COLUMN => 'userid',
DELETE => 'CASCADE'
}
},
plan_id => {
TYPE => 'INT4',
NOTNULL => 1,
UNSIGNED => 1,
REFERENCES => {
TABLE => 'test_plans',
COLUMN => 'plan_id',
DELETE => 'CASCADE'
}
},
permissions => { TYPE => 'INT1', NOTNULL => 1 },
grant_type => { TYPE => 'INT1', NOTNULL => 1 },
],
INDEXES => [
testers_plan_user_idx => { FIELDS => [qw(userid plan_id grant_type)], TYPE => 'UNIQUE' },
testers_plan_user_plan_idx => ['plan_id'],
testers_plan_grant_idx => ['grant_type'],
],
},
$schema->{test_plan_permissions_regexp} = {
FIELDS => [
plan_id => {
TYPE => 'INT4',
NOTNULL => 1,
UNSIGNED => 1,
REFERENCES => {
TABLE => 'test_plans',
COLUMN => 'plan_id',
DELETE => 'CASCADE'
}
},
user_regexp => { TYPE => 'TEXT', NOTNULL => 1 },
permissions => { TYPE => 'INT1', NOTNULL => 1 },
],
INDEXES => [ testers_plan_regexp_idx => { FIELDS => [qw(plan_id)], TYPE => 'UNIQUE' }, ],
},
$schema->{test_plan_texts} = {
FIELDS => [
plan_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_plans',
COLUMN => 'plan_id',
DELETE => 'CASCADE'
}
},
plan_text_version => { TYPE => 'INT4', NOTNULL => 1 },
who => {
TYPE => 'INT3',
NOTNULL => 1,
},
creation_ts => { TYPE => 'DATETIME', NOTNULL => 1 },
plan_text => { TYPE => 'MEDIUMTEXT' },
],
INDEXES => [
test_plan_text_version_idx => [qw(plan_id plan_text_version)],
test_plan_text_who_idx => ['who'],
],
},
# Tiny table -- don't add keys besides primary key.
$schema->{test_plan_types} = {
FIELDS => [
type_id => { TYPE => 'SMALLSERIAL', PRIMARYKEY => 1, NOTNULL => 1 },
name => { TYPE => 'varchar(64)', NOTNULL => 1 },
description => { TYPE => 'MEDIUMTEXT' },
],
},
$schema->{test_runs} = {
FIELDS => [
run_id => { TYPE => 'INTSERIAL', PRIMARYKEY => 1, NOTNULL => 1 },
plan_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_plans',
COLUMN => 'plan_id',
DELETE => 'CASCADE'
}
},
environment_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_environments',
COLUMN => 'environment_id',
DELETE => 'CASCADE'
}
},
product_version => { TYPE => 'MEDIUMTEXT' },
build_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_builds',
COLUMN => 'build_id',
DELETE => 'CASCADE'
}
},
plan_text_version => { TYPE => 'INT4', NOTNULL => 1 },
manager_id => {
TYPE => 'INT3',
NOTNULL => 1,
REFERENCES => {
TABLE => 'profiles',
COLUMN => 'userid',
DELETE => 'CASCADE'
}
},
default_tester_id => {
TYPE => 'INT3',
REFERENCES => {
TABLE => 'profiles',
COLUMN => 'userid',
DELETE => 'CASCADE'
}
},
start_date => { TYPE => 'DATETIME', NOTNULL => 1 },
stop_date => { TYPE => 'DATETIME' },
summary => { TYPE => 'TINYTEXT', NOTNULL => 1 },
notes => { TYPE => 'MEDIUMTEXT' },
target_pass => { TYPE => 'INT1' },
target_completion => { TYPE => 'INT1' },
],
INDEXES => [
test_run_plan_id_run_id_idx => [qw(plan_id run_id)],
test_run_manager_idx => ['manager_id'],
test_run_start_date_idx => ['start_date'],
test_run_stop_date_idx => ['stop_date'],
test_run_env_idx => ['environment_id'],
test_run_build_idx => ['build_id'],
test_run_plan_ver_idx => ['plan_text_version'],
test_run_tester_idx => ['default_tester_id'],
],
},
$schema->{test_case_plans} = {
FIELDS => [
plan_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_plans',
COLUMN => 'plan_id',
DELETE => 'CASCADE'
}
},
case_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_cases',
COLUMN => 'case_id',
DELETE => 'CASCADE'
}
},
],
INDEXES => [
test_case_plans_primary_idx => { FIELDS => [qw(plan_id case_id)], TYPE => 'UNIQUE' },
test_case_plans_case_idx => [qw(case_id)],
],
},
$schema->{test_case_activity} = {
FIELDS => [
case_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_cases',
COLUMN => 'case_id',
DELETE => 'CASCADE'
}
},
fieldid => {
TYPE => 'INT2',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_fielddefs',
COLUMN => 'fieldid',
DELETE => 'CASCADE'
}
},
who => {
TYPE => 'INT3',
NOTNULL => 1,
REFERENCES => {
TABLE => 'profiles',
COLUMN => 'userid',
}
},
changed => { TYPE => 'DATETIME', NOTNULL => 1 },
oldvalue => { TYPE => 'MEDIUMTEXT' },
newvalue => { TYPE => 'MEDIUMTEXT' },
],
INDEXES => [
case_activity_case_id_idx => ['case_id'],
case_activity_who_idx => ['who'],
case_activity_when_idx => ['changed'],
case_activity_field_idx => ['fieldid'],
],
},
# Tiny table -- don't add keys besides primary key.
$schema->{test_fielddefs} = {
FIELDS => [
fieldid => { TYPE => 'SMALLSERIAL', PRIMARYKEY => 1, NOTNULL => 1 },
name => { TYPE => 'varchar(100)', NOTNULL => 1 },
description => { TYPE => 'MEDIUMTEXT' },
table_name => { TYPE => 'varchar(100)', NOTNULL => 1 },
],
},
$schema->{test_plan_activity} = {
FIELDS => [
plan_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_plans',
COLUMN => 'plan_id',
DELETE => 'CASCADE'
}
},
fieldid => {
TYPE => 'INT2',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_fielddefs',
COLUMN => 'fieldid',
DELETE => 'CASCADE'
}
},
who => {
TYPE => 'INT3',
NOTNULL => 1,
REFERENCES => {
TABLE => 'profiles',
COLUMN => 'userid',
}
},
changed => { TYPE => 'DATETIME', NOTNULL => 1 },
oldvalue => { TYPE => 'MEDIUMTEXT' },
newvalue => { TYPE => 'MEDIUMTEXT' },
],
INDEXES => [
plan_activity_primary_idx => ['plan_id'],
plan_activity_field_idx => ['fieldid'],
plan_activity_who_idx => ['who'],
plan_activity_changed_idx => ['changed'],
],
},
$schema->{test_case_components} = {
FIELDS => [
case_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_cases',
COLUMN => 'case_id',
DELETE => 'CASCADE'
}
},
component_id => {
TYPE => 'INT2',
NOTNULL => 1,
REFERENCES => {
TABLE => 'components',
COLUMN => 'id',
DELETE => 'CASCADE'
}
},
],
INDEXES => [
components_case_id_idx => { FIELDS => [qw(case_id component_id)], TYPE => 'UNIQUE' },
components_component_id_idx => ['component_id'],
],
},
$schema->{test_run_activity} = {
FIELDS => [
run_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_runs',
COLUMN => 'run_id',
DELETE => 'CASCADE'
}
},
fieldid => {
TYPE => 'INT2',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_fielddefs',
COLUMN => 'fieldid',
DELETE => 'CASCADE'
}
},
who => {
TYPE => 'INT3',
NOTNULL => 1,
REFERENCES => {
TABLE => 'profiles',
COLUMN => 'userid',
}
},
changed => { TYPE => 'DATETIME', NOTNULL => 1 },
oldvalue => { TYPE => 'MEDIUMTEXT' },
newvalue => { TYPE => 'MEDIUMTEXT' },
],
INDEXES => [
run_activity_run_id_idx => ['run_id'],
run_activity_field_idx => ['fieldid'],
run_activity_who_idx => ['who'],
run_activity_when_idx => ['changed'],
],
},
$schema->{test_run_cc} = {
FIELDS => [
run_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_runs',
COLUMN => 'run_id',
DELETE => 'CASCADE'
}
},
who => {
TYPE => 'INT3',
NOTNULL => 1,
REFERENCES => {
TABLE => 'profiles',
COLUMN => 'userid',
DELETE => 'CASCADE'
}
},
],
INDEXES => [
test_run_cc_primary_idx => { FIELDS => [qw(run_id who)], TYPE => 'UNIQUE' },
test_run_cc_who_idx => [qw(who)],
],
},
$schema->{test_email_settings} = {
FIELDS => [
userid => {
TYPE => 'INT3',
NOTNULL => 1,
REFERENCES => {
TABLE => 'profiles',
COLUMN => 'userid',
}
},
eventid => {
TYPE => 'INT1',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_events',
COLUMN => 'eventid',
DELETE => 'CASCADE'
}
},
relationship_id => {
TYPE => 'INT1',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_relationships',
COLUMN => 'relationship_id',
DELETE => 'CASCADE'
}
},
],
INDEXES => [
test_email_setting_user_id_idx => {
FIELDS => [qw(userid relationship_id eventid)],
TYPE => 'UNIQUE'
},
],
},
$schema->{test_events} = {
FIELDS => [
eventid => { TYPE => 'INT1', UNSIGNED => 1, PRIMARYKEY => 1, NOTNULL => 1 },
name => { TYPE => 'varchar(50)' },
],
INDEXES => [ test_event_name_idx => ['name'], ],
},
$schema->{test_relationships} = {
FIELDS => [
relationship_id => { TYPE => 'INT1', UNSIGNED => 1, PRIMARYKEY => 1, NOTNULL => 1 },
name => { TYPE => 'varchar(50)' },
],
},
# Tiny table -- don't add keys besides primary key.
$schema->{test_case_run_status} = {
FIELDS => [
case_run_status_id => { TYPE => 'SMALLSERIAL', PRIMARYKEY => 1, NOTNULL => 1 },
name => { TYPE => 'varchar(20)' },
sortkey => { TYPE => 'INT4' },
description => { TYPE => 'TEXT' },
],
},
# Tiny table -- don't add keys besides primary key.
$schema->{test_case_status} = {
FIELDS => [
case_status_id => { TYPE => 'SMALLSERIAL', PRIMARYKEY => 1, NOTNULL => 1 },
name => { TYPE => 'varchar(255)', NOTNULL => 1 },
description => { TYPE => 'TEXT' },
],
},
$schema->{test_case_dependencies} = {
FIELDS => [
dependson => { TYPE => 'INT4', UNSIGNED => 1, NOTNULL => 1 },
blocked => { TYPE => 'INT4', UNSIGNED => 1, NOTNULL => 1 },
],
INDEXES => [
case_dependencies_primary_idx => { FIELDS => [qw(dependson blocked)], TYPE => 'UNIQUE' },
case_dependencies_blocked_idx => ['blocked'],
],
},
$schema->{test_environments} = {
FIELDS => [
environment_id => { TYPE => 'INTSERIAL', PRIMARYKEY => 1, NOTNULL => 1 },
product_id => {
TYPE => 'INT2',
NOTNULL => 1,
REFERENCES => {
TABLE => 'products',
COLUMN => 'id',
DELETE => 'CASCADE'
}
},
name => { TYPE => 'varchar(255)' },
isactive => { TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => '1' },
],
INDEXES => [
test_environments_key1 => { FIELDS => [qw(environment_id product_id)], TYPE => 'UNIQUE' },
test_environments_key2 => { FIELDS => [qw(product_id name)], TYPE => 'UNIQUE' },
environment_name_idx_v2 => ['name'],
],
},
$schema->{test_builds} = {
FIELDS => [
build_id => { TYPE => 'INTSERIAL', PRIMARYKEY => 1, NOTNULL => 1 },
product_id => {
TYPE => 'INT2',
NOTNULL => 1,
REFERENCES => {
TABLE => 'products',
COLUMN => 'id',
DELETE => 'CASCADE'
}
},
milestone => { TYPE => 'varchar(20)' },
name => { TYPE => 'varchar(255)' },
description => { TYPE => 'TEXT' },
isactive => { TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => '1' },
],
INDEXES => [
build_name_idx => ['name'],
build_milestone_idx => ['milestone'],
build_product_id_name_idx => { FIELDS => [qw(product_id name)], TYPE => 'UNIQUE' },
build_prod_idx => { FIELDS => [qw(build_id product_id)], TYPE => 'UNIQUE' },
],
},
$schema->{test_attachment_data} = {
FIELDS => [
attachment_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_attachments',
COLUMN => 'attachment_id',
DELETE => 'CASCADE'
}
},
contents => { TYPE => 'LONGBLOB' },
],
INDEXES => [ test_attachment_data_primary_idx => ['attachment_id'], ],
},
$schema->{test_named_queries} = {
FIELDS => [
userid => {
TYPE => 'INT3',
NOTNULL => 1,
REFERENCES => {
TABLE => 'profiles',
COLUMN => 'userid',
DELETE => 'CASCADE'
}
},
name => { TYPE => 'varchar(64)', NOTNULL => 1 },
isvisible => { TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 1 },
query => { TYPE => 'MEDIUMTEXT', NOTNULL => 1 },
type => { TYPE => 'INT3', NOTNULL => 1, DEFAULT => 0 },
],
INDEXES => [
test_namedquery_primary_idx => { FIELDS => [qw(userid name)], TYPE => 'UNIQUE' },
test_namedquery_name_idx => ['name'],
],
},
$schema->{test_environment_map} = {
FIELDS => [
environment_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_environments',
COLUMN => 'environment_id',
DELETE => 'CASCADE'
}
},
property_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_environment_property',
COLUMN => 'property_id',
DELETE => 'CASCADE'
}
},
element_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_environment_element',
COLUMN => 'element_id',
DELETE => 'CASCADE'
}
},
value_selected => { TYPE => 'TINYTEXT' },
],
INDEXES => [
env_map_env_element_idx => [qw(environment_id element_id)],
env_map_property_idx => [qw(environment_id property_id)],
test_environment_map_key3 => { FIELDS => [qw(environment_id element_id property_id)], TYPE => 'UNIQUE' },
],
},
$schema->{test_environment_element} = {
FIELDS => [
element_id => { TYPE => 'INTSERIAL', PRIMARYKEY => 1, NOTNULL => 1 },
env_category_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_environment_category',
COLUMN => 'env_category_id',
DELETE => 'CASCADE'
}
},
name => { TYPE => 'varchar(255)' },
parent_id => { TYPE => 'INT4', UNSIGNED => 1 },
isprivate => { TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 0 },
],
INDEXES => [
test_environment_element_key1 => { FIELDS => [qw(element_id env_category_id)], TYPE => 'UNIQUE' },
test_environment_element_key2 => { FIELDS => [qw(env_category_id name)], TYPE => 'UNIQUE' },
],
},
$schema->{test_environment_category} = {
FIELDS => [
env_category_id => { TYPE => 'INTSERIAL', PRIMARYKEY => 1, NOTNULL => 1 },
product_id => {
TYPE => 'INT2',
NOTNULL => 1,
},
name => { TYPE => 'varchar(255)' },
],
INDEXES => [
test_environment_category_key1 => { FIELDS => [qw(env_category_id product_id)], TYPE => 'UNIQUE' },
test_environment_category_key2 => { FIELDS => [qw(product_id name)], TYPE => 'UNIQUE' },
],
},
$schema->{test_environment_property} = {
FIELDS => [
property_id => { TYPE => 'INTSERIAL', PRIMARYKEY => 1, NOTNULL => 1 },
element_id => {
TYPE => 'INT4',
UNSIGNED => 1,
NOTNULL => 1,
REFERENCES => {
TABLE => 'test_environment_element',
COLUMN => 'element_id',
DELETE => 'CASCADE'
}
},
name => { TYPE => 'varchar(255)' },
validexp => { TYPE => 'TEXT' },
],
INDEXES => [
test_environment_property_key1 => { FIELDS => [qw(property_id element_id)], TYPE => 'UNIQUE' },
test_environment_property_key2 => { FIELDS => [qw(element_id name)], TYPE => 'UNIQUE' },
],
},