+
+ 'svc_pbx' => {
+ 'columns' => [
+ 'svcnum', 'int', '', '', '', '',
+ 'id', 'int', 'NULL', '', '', '',
+ 'title', 'varchar', 'NULL', $char_d, '', '',
+ 'max_extensions', 'int', 'NULL', '', '', '',
+ 'max_simultaneous', 'int', 'NULL', '', '', '',
+ ],
+ 'primary_key' => 'svcnum',
+ 'unique' => [],
+ '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', '', '', '',
+ 'contactemailnum', 'int', 'NULL', '', '', '',
+ 'email', 'varchar', 'NULL', 255, '', '',
+ ],
+ 'primary_key' => 'membernum',
+ 'unique' => [],
+ 'index' => [['listnum'],['svcnum'],['contactemailnum'],['email']],
+ },
+
+ 'bill_batch' => {
+ 'columns' => [
+ 'batchnum', 'serial', '', '', '', '',
+ 'agentnum', 'int', 'NULL', '', '', '',
+ 'status', 'char', 'NULL', '1', '', '',
+ 'pdf', 'blob', 'NULL', '', '', '',
+ ],
+ 'primary_key' => 'batchnum',
+ 'unique' => [],
+ 'index' => [ ['agentnum'] ],
+ },
+
+ 'cust_bill_batch' => {
+ 'columns' => [
+ 'billbatchnum', 'serial', '', '', '', '',
+ 'batchnum', 'int', '', '', '', '',
+ 'invnum', 'int', '', '', '', '',
+ ],
+ 'primary_key' => 'billbatchnum',
+ 'unique' => [],
+ 'index' => [ [ 'batchnum' ], [ 'invnum' ] ],
+ },
+
+ 'cust_bill_batch_option' => {
+ 'columns' => [
+ 'optionnum', 'serial', '', '', '', '',
+ 'billbatchnum', 'int', '', '', '', '',
+ 'optionname', 'varchar', '', $char_d, '', '',
+ 'optionvalue', 'text', 'NULL', '', '', '',
+ ],
+ 'primary_key' => 'optionnum',
+ 'unique' => [],
+ 'index' => [ [ 'billbatchnum' ], [ 'optionname' ] ],
+ },
+
+ 'msg_template' => {
+ 'columns' => [
+ 'msgnum', 'serial', '', '', '', '',
+ 'msgname', 'varchar', '', $char_d, '', '',
+ 'agentnum', 'int', 'NULL', '', '', '',
+ 'subject', 'varchar', 'NULL', 512, '', '',
+ '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' => [ ],
+ 'index' => [ ['agentnum'], ],
+ },
+
+ 'template_content' => {
+ 'columns' => [
+ 'contentnum', 'serial', '', '', '', '',
+ 'msgnum', 'int', '', '', '', '',
+ 'locale', 'varchar', 'NULL', 16, '', '',
+ 'subject', 'varchar', 'NULL', 512, '', '',
+ 'body', 'text', 'NULL', '', '', '',
+ ],
+ 'primary_key' => 'contentnum',
+ 'unique' => [ ['msgnum', 'locale'] ],
+ 'index' => [ ],
+ },
+
+ 'cust_msg' => {
+ 'columns' => [
+ 'custmsgnum', 'serial', '', '', '', '',
+ 'custnum', 'int', '', '', '', '',
+ 'msgnum', 'int', 'NULL', '', '', '',
+ '_date', @date_type, '', '',
+ 'env_from', 'varchar', 'NULL', 255, '', '',
+ 'env_to', 'varchar', 'NULL', 255, '', '',
+ 'header', 'blob', 'NULL', '', '', '',
+ 'body', 'blob', 'NULL', '', '', '',
+ 'error', 'varchar', 'NULL', 255, '', '',
+ 'status', 'varchar', '',$char_d, '', '',
+ ],
+ 'primary_key' => 'custmsgnum',
+ 'unique' => [ ],
+ 'index' => [ ['custnum'], ],
+ },
+
+ 'svc_cert' => {
+ 'columns' => [
+ 'svcnum', 'int', '', '', '', '',
+ 'recnum', 'int', 'NULL', '', '', '',
+ 'privatekey', 'text', 'NULL', '', '', '',
+ 'csr', 'text', 'NULL', '', '', '',
+ 'certificate', 'text', 'NULL', '', '', '',
+ 'cacert', 'text', 'NULL', '', '', '',
+ 'common_name', 'varchar', 'NULL', $char_d, '', '',
+ 'organization', 'varchar', 'NULL', $char_d, '', '',
+ 'organization_unit', 'varchar', 'NULL', $char_d, '', '',
+ 'city', 'varchar', 'NULL', $char_d, '', '',
+ 'state', 'varchar', 'NULL', $char_d, '', '',
+ 'country', 'char', 'NULL', 2, '', '',
+ 'cert_contact', 'varchar', 'NULL', $char_d, '', '',
+ ],
+ 'primary_key' => 'svcnum',
+ 'unique' => [],
+ 'index' => [], #recnum
+ },
+
+ 'svc_port' => {
+ 'columns' => [
+ 'svcnum', 'int', '', '', '', '',
+ 'serviceid', 'varchar', '', 64, '', '', #srvexport / reportfields
+ ],
+ 'primary_key' => 'svcnum',
+ 'unique' => [],
+ 'index' => [], #recnum
+ },
+
+ 'areacode' => {
+ 'columns' => [
+ 'areanum', 'serial', '', '', '', '',
+ 'code', 'char', '', 3, '', '',
+ 'country', 'char', 'NULL', 2, '', '',
+ 'state', 'char', 'NULL', 2, '', '',
+ 'description','varchar', 'NULL', 255, '', '',
+ ],
+ 'primary_key' => 'areanum',
+ 'unique' => [ [ 'areanum' ] ],
+ 'index' => [],
+ },
+
+ %{ tables_hashref_torrus() },
+
+ # tables of ours for doing torrus virtual port combining
+ 'torrus_srvderive' => {
+ 'columns' => [
+ 'derivenum', 'serial', '', '', '', '',
+ 'serviceid', 'varchar', '', 64, '', '', #srvexport / reportfields
+ 'last_srv_date', 'date', 'NULL', '', '', '',
+ ],
+ 'primary_key' => 'derivenum',
+ 'unique' => [ ['serviceid'] ],
+ 'index' => [],
+ },
+
+ 'torrus_srvderive_component' => {
+ 'columns' => [
+ 'componentnum', 'serial', '', '', '', '',
+ 'derivenum', 'int', '', '', '', '',
+ 'serviceid', 'varchar', '', 64, '', '', #srvexport / reportfields
+ ],
+ 'primary_key' => 'componentnum',
+ 'unique' => [ [ 'derivenum', 'serviceid' ], ],
+ 'index' => [ [ 'derivenum', ], ],
+ },
+
+