X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FSchema.pm;h=3cc853f2088a3d99f8035a80747a8194ef0179da;hb=3e3c9fe57cd2b6dd0467b37b470892f0e448f300;hp=3c67fc733b47986a5d0db73ca32a1c0b5405799e;hpb=5485c9b2bb9450f658c8d688e79af9e4cb3cd3ab;p=freeside.git diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index 3c67fc733..3cc853f20 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' => { @@ -1283,6 +1298,7 @@ sub tables_hashref { 'pay_weight', 'real', 'NULL', '', '', '', 'credit_weight', 'real', 'NULL', '', '', '', 'agentnum', 'int', 'NULL', '', '', '', + 'fcc_ds0s', 'int', 'NULL', '', '', '', ], 'primary_key' => 'pkgpart', @@ -1353,8 +1369,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', @@ -1479,6 +1495,32 @@ sub tables_hashref { 'pbxsvc', 'int', 'NULL', '', '', '', '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, '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 + #XXX archive messages, 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 +#vacation message, redirect all mail, mail rules + #XXX RPOP settings ], 'primary_key' => 'svcnum', #'unique' => [ [ 'username', 'domsvc' ] ], @@ -1519,9 +1561,37 @@ sub tables_hashref { 'parent_svcnum', 'int', 'NULL', '', '', '', 'registrarnum', 'int', 'NULL', '', '', '', 'registrarkey', 'varchar', 'NULL', 512, '', '', - 'setup_date', @date_type, '', '', + 'setup_date', @date_type, '', '', 'renewal_interval', 'int', 'NULL', '', '', '', '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 + #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, '', '', + #XXX archive messages + #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, '', '', + #mail + #XXX rules, archive rule, spam foldering rule(s) ], 'primary_key' => 'svcnum', 'unique' => [ ], @@ -1552,6 +1622,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' => [], + 'index' => [ [ 'svcnum' ] ], + }, + + 'cgp_rule_condition' => { + 'columns' => [ + 'ruleconditionnum', 'serial', '', '', '', '', + 'condition', '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', '', '', '', '', @@ -1945,16 +2053,17 @@ sub tables_hashref { 'rate_detail' => { 'columns' => [ - 'ratedetailnum', 'serial', '', '', '', '', - 'ratenum', 'int', '', '', '', '', - 'orig_regionnum', 'int', 'NULL', '', '', '', - 'dest_regionnum', 'int', '', '', '', '', - 'min_included', 'int', '', '', '', '', - #'min_charge', @money_type, '', '', - 'min_charge', 'decimal', '', '10,5', '', '', - 'sec_granularity', 'int', '', '', '', '', + 'ratedetailnum', 'serial', '', '', '', '', + 'ratenum', 'int', '', '', '', '', + 'orig_regionnum', 'int', 'NULL', '', '', '', + 'dest_regionnum', 'int', '', '', '', '', + 'min_included', 'int', '', '', '', '', + 'conn_charge', @money_type, '0', '', #'decimal','','10,5','0','', + 'conn_sec', 'int', '', '', '0', '', + 'min_charge', 'decimal', '', '10,5', '', '', #@money_type, '', '', + 'sec_granularity', 'int', '', '', '', '', #time period (link to table of periods)? - 'classnum', 'int', 'NULL', '', '', '', + 'classnum', 'int', 'NULL', '', '', '', ], 'primary_key' => 'ratedetailnum', 'unique' => [ [ 'ratenum', 'orig_regionnum', 'dest_regionnum' ] ], @@ -2341,11 +2450,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' => { @@ -2414,10 +2524,14 @@ sub tables_hashref { 'sip_password', 'varchar', 'NULL', $char_d, '', '', 'phone_name', 'varchar', 'NULL', $char_d, '', '', 'pbxsvc', 'int', 'NULL', '', '', '', + 'domsvc', 'int', 'NULL', '', '', '', + 'locationnum', 'int', 'NULL', '', '', '', ], 'primary_key' => 'svcnum', 'unique' => [], - 'index' => [ [ 'countrycode', 'phonenum' ], ['pbxsvc'] ], + 'index' => [ ['countrycode', 'phonenum'], ['pbxsvc'], ['domsvc'], + ['locationnum'], + ], }, 'phone_device' => { @@ -2525,6 +2639,44 @@ sub tables_hashref { 'index' => [ [ 'id' ] ], }, + 'svc_mailinglist' => { #svc_group? + 'columns' => [ + 'svcnum', 'int', '', '', '', '', + 'username', 'varchar', '', $username_len, '', '', + 'domsvc', 'int', '', '', '', '', + 'listnum', 'int', '', '', '', '', + 'reply_to', 'char', 'NULL', 1, '', '',#SetReplyTo + 'remove_from', 'char', 'NULL', 1, '', '',#RemoveAuthor + 'reject_auto', 'char', 'NULL', 1, '', '',#RejectAuto + 'remove_to_and_cc', 'char', 'NULL', 1, '', '',#RemoveToAndCc + ], + 'primary_key' => 'svcnum', + 'unique' => [], + 'index' => [ ['username'], ['domsvc'], ['listnum'] ], + }, + + 'mailinglist' => { + 'columns' => [ + 'listnum', 'serial', '', '', '', '', + 'listname', 'varchar', '', $char_d, '', '', + ], + 'primary_key' => 'listnum', + 'unique' => [], + 'index' => [], + }, + + 'mailinglistmember' => { + 'columns' => [ + 'membernum', 'serial', '', '', '', '', + 'listnum', 'int', '', '', '', '', + 'svcnum', 'int', 'NULL', '', '', '', + 'email', 'varchar', 'NULL', 255, '', '', + ], + 'primary_key' => 'membernum', + 'unique' => [], + 'index' => [['listnum'],['svcnum'],['email']], + }, + # name type nullability length default local