X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FSchema.pm;h=fe6eb7e04338837ebb0e3c20b5a98ce945576b6a;hb=e646e27f94496d005f531de3eb525fd4d4161e9f;hp=8cadaa76c3c6602e9e4ac6a5b908e2a0dfa67ef4;hpb=f46056f1423db7b7daf4a43f11610e1d961823af;p=freeside.git diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index 8cadaa76c..fe6eb7e04 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -102,6 +102,10 @@ sub dbdef_dist { my %hash = map { $_ => shift @coldef } qw( name type null length default local ); + #can be removed once we depend on DBIx::DBSchema 0.39; + $hash{'type'} = 'LONGTEXT' + if $hash{'type'} =~ /^TEXT$/i && $datasrc =~ /^dbi:mysql/i; + unless ( defined $hash{'default'} ) { warn "$tablename:\n". join('', map "$_ => $hash{$_}\n", keys %hash) ;# $stop = ; @@ -113,7 +117,17 @@ sub dbdef_dist { #false laziness w/sub indices in DBIx::DBSchema::DBD (well, sorta) #and sub sql_create_table in DBIx::DBSchema::Table (slighty more?) my $unique = $tables_hashref->{$tablename}{'unique'}; - my $index = $tables_hashref->{$tablename}{'index'}; + my @index = @{ $tables_hashref->{$tablename}{'index'} }; + + # kludge to avoid avoid "BLOB/TEXT column 'statustext' used in key + # specification without a key length". + # better solution: teach DBIx::DBSchema to specify a default length for + # MySQL indices on text columns, or just to support an index length at all + # so we can pass something in. + # best solution: eliminate need for this index in cust_main::retry_realtime + @index = grep { @{$_}[0] ne 'statustext' } @index + if $datasrc =~ /^dbi:mysql/i; + my @indices = (); push @indices, map { DBIx::DBSchema::Index->new({ @@ -130,7 +144,7 @@ sub dbdef_dist { 'columns' => $_, }); } - @$index; + @index; DBIx::DBSchema::Table->new({ 'name' => $tablename, @@ -641,10 +655,11 @@ sub tables_hashref { 'addlinfo', 'text', 'NULL', '', '', '', 'closed', 'char', 'NULL', 1, '', '', 'pkgnum', 'int', 'NULL', '', '', '', #desired pkgnum for pkg-balances + 'eventnum', 'int', 'NULL', '', '', '', #triggering event for commission ], 'primary_key' => 'crednum', 'unique' => [], - 'index' => [ ['custnum'], ['_date'] ], + 'index' => [ ['custnum'], ['_date'], ['eventnum'] ], }, 'cust_credit_bill' => { @@ -938,6 +953,30 @@ sub tables_hashref { 'unique' => [], 'index' => [ [ 'data_vendor', 'geocode', 'disabled' ] ], }, + + 'cust_tag' => { + 'columns' => [ + 'custtagnum', 'serial', '', '', '', '', + 'custnum', 'int', '', '', '', '', + 'tagnum', 'int', '', '', '', '', + ], + 'primary_key' => 'custtagnum', + 'unique' => [ [ 'custnum', 'tagnum' ] ], + 'index' => [ [ 'custnum' ] ], + }, + + 'part_tag' => { + 'columns' => [ + 'tagnum', 'serial', '', '', '', '', + 'tagname', 'varchar', '', $char_d, '', '', + 'tagdesc', 'varchar', 'NULL', $char_d, '', '', + 'tagcolor', 'varchar', 'NULL', 6, '', '', + 'disabled', 'char', 'NULL', 1, '', '', + ], + 'primary_key' => 'tagnum', + 'unique' => [], #[ [ 'tagname' ] ], #? + 'index' => [ [ 'disabled' ] ], + }, 'cust_tax_location' => { 'columns' => [ @@ -1283,6 +1322,7 @@ sub tables_hashref { 'pay_weight', 'real', 'NULL', '', '', '', 'credit_weight', 'real', 'NULL', '', '', '', 'agentnum', 'int', 'NULL', '', '', '', + 'fcc_ds0s', 'int', 'NULL', '', '', '', ], 'primary_key' => 'pkgpart', @@ -1353,8 +1393,8 @@ sub tables_hashref { 'part_pkg_taxoverride' => { 'columns' => [ 'taxoverridenum', 'serial', '', '', '', '', - 'pkgpart', 'serial', '', '', '', '', - 'taxclassnum', 'serial', '', '', '', '', + 'pkgpart', 'int', '', '', '', '', + 'taxclassnum', 'int', '', '', '', '', 'usage_class', 'varchar', 'NULL', $char_d, '', '', ], 'primary_key' => 'taxoverridenum', @@ -1480,16 +1520,31 @@ sub tables_hashref { 'last_login', @date_type, '', '', 'last_logout', @date_type, '', '', #communigate pro fields (quota = MaxAccountSize) + 'cgp_aliases', 'varchar', 'NULL', 255, '', '', + #settings + 'cgp_type', 'varchar', 'NULL', $char_d, '', '', #AccountType 'file_quota', 'varchar', 'NULL', $char_d, '', '', #MaxWebSize 'file_maxnum', 'varchar', 'NULL', $char_d, '', '', #MaxWebFiles 'file_maxsize', 'varchar', 'NULL', $char_d, '', '', #MaxFileSize 'cgp_accessmodes', 'varchar', 'NULL', 255, '', '', #AccessModes 'password_selfchange','char', 'NULL', 1, '', '', #PWDAllowed - 'password_recover', 'char', 'NULL', 1, '', '', #PasswordRecovery - 'cgp_type', 'varchar', 'NULL', $char_d, '', '', #AccountType - 'cgp_aliases', 'varchar', 'NULL', 255, '', '', - 'cgp_deletemode', 'varchar', 'NULL', $char_d, '', '', #DeleteMode - 'cgp_emptytrash', 'varchar', 'NULL', $char_d, '', '', #EmptyTrash + 'password_recover', 'char', 'NULL', 1, 'Y','', #PasswordRecovery + 'cgp_rulesallowed','varchar', 'NULL', $char_d, '', '', #RulesAllowed + 'cgp_rpopallowed', 'char', 'NULL', 1, '', '', #RPOPAllowed + 'cgp_mailtoall', 'char', 'NULL', 1, '', '', #MailToAll + 'cgp_addmailtrailer', 'char', 'NULL', 1, '', '', #AddMailTrailer + 'cgp_archiveafter', 'int', 'NULL', '', '', '', #ArchiveMessagesAfter + #XXX mailing lists + #preferences + 'cgp_deletemode', 'varchar', 'NULL', $char_d, '', '',#DeleteMode + 'cgp_emptytrash', 'varchar', 'NULL', $char_d, '', '',#EmptyTrash + 'cgp_language', 'varchar', 'NULL', $char_d, '', '',#Language + 'cgp_timezone', 'varchar', 'NULL', $char_d, '', '',#TimeZone + 'cgp_skinname', 'varchar', 'NULL', $char_d, '', '',#SkinName + 'cgp_prontoskinname', 'varchar', 'NULL', $char_d, '', '',#ProntoSkinName + 'cgp_sendmdnmode', 'varchar', 'NULL', $char_d, '', '',#SendMDNMode + #mail + #XXX RPOP settings ], 'primary_key' => 'svcnum', #'unique' => [ [ 'username', 'domsvc' ] ], @@ -1535,17 +1590,30 @@ sub tables_hashref { 'expiration_date', @date_type, '', '', #communigate pro fields (quota = MaxAccountSize) 'max_accounts', 'int', 'NULL', '', '', '', + 'trailer', 'text', 'NULL', '', '', '', 'cgp_aliases', 'varchar', 'NULL', 255, '', '', 'cgp_accessmodes','varchar','NULL', 255, '', '', #DomainAccessModes - 'acct_def_password_selfchange','char', 'NULL', 1, '', '', - 'acct_def_password_recover', 'char', 'NULL', 1, '', '', - 'acct_def_cgp_accessmodes', 'varchar', 'NULL', 255, '', '', - 'acct_def_quota', 'varchar', 'NULL', $char_d, '', '', - 'acct_def_file_quota', 'varchar', 'NULL', $char_d, '', '', - 'acct_def_file_maxnum', 'varchar', 'NULL', $char_d, '', '', - 'acct_def_file_maxsize', 'varchar', 'NULL', $char_d, '', '', - 'acct_def_cgp_deletemode', 'varchar', 'NULL', $char_d, '', '', - 'acct_def_cgp_emptytrash', 'varchar', 'NULL', $char_d, '', '', + #settings + 'acct_def_password_selfchange', 'char', 'NULL', 1, '', '', + 'acct_def_password_recover', 'char', 'NULL', 1, 'Y', '', + 'acct_def_cgp_accessmodes', 'varchar', 'NULL', 255, '', '', + 'acct_def_quota', 'varchar', 'NULL', $char_d, '', '', + 'acct_def_file_quota', 'varchar', 'NULL', $char_d, '', '', + 'acct_def_file_maxnum', 'varchar', 'NULL', $char_d, '', '', + 'acct_def_file_maxsize', 'varchar', 'NULL', $char_d, '', '', + 'acct_def_cgp_rulesallowed', 'varchar', 'NULL', $char_d, '', '', + 'acct_def_cgp_rpopallowed', 'char', 'NULL', 1, '', '', + 'acct_def_cgp_mailtoall', 'char', 'NULL', 1, '', '', + 'acct_def_cgp_addmailtrailer', 'char', 'NULL', 1, '', '', + 'acct_def_cgp_archiveafter', 'int', 'NULL', '', '', '', + #preferences + 'acct_def_cgp_deletemode', 'varchar', 'NULL', $char_d, '', '', + 'acct_def_cgp_emptytrash', 'varchar', 'NULL', $char_d, '', '', + 'acct_def_cgp_language', 'varchar', 'NULL', $char_d, '', '', + 'acct_def_cgp_timezone', 'varchar', 'NULL', $char_d, '', '', + 'acct_def_cgp_skinname', 'varchar', 'NULL', $char_d, '', '', + 'acct_def_cgp_prontoskinname', 'varchar', 'NULL', $char_d, '', '', + 'acct_def_cgp_sendmdnmode', 'varchar', 'NULL', $char_d, '', '', ], 'primary_key' => 'svcnum', 'unique' => [ ], @@ -1560,6 +1628,7 @@ sub tables_hashref { 'recaf', 'char', '', 2, '', '', 'rectype', 'varchar', '', 5, '', '', 'recdata', 'varchar', '', 255, '', '', + 'ttl', 'int', 'NULL', '', '', '', ], 'primary_key' => 'recnum', 'unique' => [], @@ -1576,6 +1645,44 @@ sub tables_hashref { 'index' => [], }, + 'cgp_rule' => { + 'columns' => [ + 'rulenum', 'serial', '', '', '', '', + 'name', 'varchar', '', $char_d, '', '', + 'comment', 'varchar', 'NULL', $char_d, '', '', + 'svcnum', 'int', '', '', '', '', + 'priority', 'int', '', '', '', '', + ], + 'primary_key' => 'rulenum', + 'unique' => [ [ 'svcnum', 'name' ] ], + 'index' => [ [ 'svcnum' ] ], + }, + + 'cgp_rule_condition' => { + 'columns' => [ + 'ruleconditionnum', 'serial', '', '', '', '', + 'conditionname', 'varchar', '', $char_d, '', '', + 'op', 'varchar', 'NULL', $char_d, '', '', + 'params', 'varchar', 'NULL', 255, '', '', + 'rulenum', 'int', '', '', '', '', + ], + 'primary_key' => 'ruleconditionnum', + 'unique' => [], + 'index' => [ [ 'rulenum' ] ], + }, + + 'cgp_rule_action' => { + 'columns' => [ + 'ruleactionnum', 'serial', '', '', '', '', + 'action', 'varchar', '', $char_d, '', '', + 'params', 'varchar', 'NULL', 255, '', '', + 'rulenum', 'int', '', '', '', '', + ], + 'primary_key' => 'ruleactionnum', + 'unique' => [], + 'index' => [ [ 'rulenum' ] ], + }, + 'svc_forward' => { 'columns' => [ 'svcnum', 'int', '', '', '', '', @@ -1898,12 +2005,18 @@ sub tables_hashref { 'acct_snarf' => { 'columns' => [ - 'snarfnum', 'int', '', '', '', '', - 'svcnum', 'int', '', '', '', '', - 'machine', 'varchar', '', 255, '', '', - 'protocol', 'varchar', '', $char_d, '', '', - 'username', 'varchar', '', $char_d, '', '', - '_password', 'varchar', '', $char_d, '', '', + 'snarfnum', 'serial', '', '', '', '', + 'snarfname', 'varchar', 'NULL', $char_d, '', '', + 'svcnum', 'int', '', '', '', '', + 'machine', 'varchar', '', 255, '', '', + 'protocol', 'varchar', '', $char_d, '', '', + 'username', 'varchar', '', $char_d, '', '', + '_password', 'varchar', '', $char_d, '', '', + 'check_freq', 'int', 'NULL', '', '', '', + 'leavemail', 'char', 'NULL', 1, '', '', + 'apop', 'char', 'NULL', 1, '', '', + 'tls', 'char', 'NULL', 1, '', '', + 'mailbox', 'varchar', 'NULL', $char_d, '', '', ], 'primary_key' => 'snarfnum', 'unique' => [], @@ -2366,11 +2479,12 @@ sub tables_hashref { '_password', 'varchar', '', $char_d, '', '', 'last', 'varchar', '', $char_d, '', '', 'first', 'varchar', '', $char_d, '', '', + 'user_custnum', 'int', 'NULL', '', '', '', 'disabled', 'char', 'NULL', 1, '', '', ], 'primary_key' => 'usernum', 'unique' => [ [ 'username' ] ], - 'index' => [], + 'index' => [ [ 'user_custnum' ] ], }, 'access_user_pref' => { @@ -2585,12 +2699,27 @@ sub tables_hashref { 'membernum', 'serial', '', '', '', '', 'listnum', 'int', '', '', '', '', 'svcnum', 'int', 'NULL', '', '', '', - 'contactemailnum', 'int', 'NULL', '', '', '', 'email', 'varchar', 'NULL', 255, '', '', ], 'primary_key' => 'membernum', 'unique' => [], - 'index' => [['listnum'],['svcnum'],['contactemailnum'],['email']], + 'index' => [['listnum'],['svcnum'],['email']], + }, + + 'msg_template' => { + 'columns' => [ + 'msgnum', 'serial', '', '', '', '', + 'msgname', 'varchar', '', $char_d, '', '', + 'agentnum', 'int', 'NULL', '', '', '', + 'mime_type', 'varchar', '', $char_d, '', '', + 'body', 'blob', 'NULL', '', '', '', + 'disabled', 'char', 'NULL', 1, '', '', + 'from_addr', 'varchar', 'NULL', 255, '', '', + 'bcc_addr', 'varchar', 'NULL', 255, '', '', + ], + 'primary_key' => 'msgnum', + 'unique' => [ ['msgname', 'mime_type'] ], + 'index' => [ ['agentnum'], ] },