From f40cdebc5e55cb0a209f7fd3e8c3858402c71f9f Mon Sep 17 00:00:00 2001 From: mark Date: Tue, 29 Mar 2011 01:04:31 +0000 Subject: [PATCH] primary key for areacode table --- FS/FS/Schema.pm | 5 +++-- FS/FS/areacode.pm | 22 ++++++++-------------- FS/bin/freeside-upgrade | 13 +++++++++++++ 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index 6d4fb03d9..25eafa345 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -3270,13 +3270,14 @@ sub tables_hashref { 'areacode' => { 'columns' => [ + 'areanum', 'serial', '', '', '', '', 'code', 'char', '', 3, '', '', 'country', 'char', 'NULL', 2, '', '', 'state', 'char', 'NULL', 2, '', '', 'description','varchar', 'NULL', 255, '', '', ], - 'primary_key' => 'code', - 'unique' => [], + 'primary_key' => 'areanum', + 'unique' => [ [ 'areanum' ] ], 'index' => [], }, diff --git a/FS/FS/areacode.pm b/FS/FS/areacode.pm index 58b498c09..b6defa2fc 100644 --- a/FS/FS/areacode.pm +++ b/FS/FS/areacode.pm @@ -25,27 +25,20 @@ FS::areacode - Object methods for areacode records =head1 DESCRIPTION -An FS::areacode object represents an example. FS::areacode inherits from +An FS::areacode object represents an area code. FS::areacode inherits from FS::Record. The following fields are currently supported: =over 4 -=item code +=item areanum - primary key -area code (primary key) +=item code - area code -=item country +=item country - two-letter country code -two-letter country code - -=item state - -two-letter state code, if appropriate - -=item description - -description (optional) +=item state - two-letter state code, if appropriate +=item description - description (optional) =back @@ -92,7 +85,8 @@ sub check { my $self = shift; my $error = - $self->ut_number('code') + $self->ut_numbern('areanum') + || $self->ut_number('code') || $self->ut_text('country') || $self->ut_textn('state') || $self->ut_textn('description') diff --git a/FS/bin/freeside-upgrade b/FS/bin/freeside-upgrade index aca545b84..e11a0a7fe 100755 --- a/FS/bin/freeside-upgrade +++ b/FS/bin/freeside-upgrade @@ -71,6 +71,19 @@ if ( dbdef->table('cgp_rule_condition') && } +if ( dbdef->table('areacode') and + dbdef->table('areacode')->primary_key eq 'code' ) +{ + if ( driver_name =~ /^mysql/i ) { + push @bugfix, + 'ALTER TABLE areacode DROP PRIMARY KEY', + 'ALTER TABLE areacode ADD COLUMN (areanum int auto_increment primary key)'; + } + else { + push @bugfix, 'ALTER TABLE areacode DROP CONSTRAINT areacode_pkey'; + } +} + # RT required field flag # for consistency with RT schema: mysql is in CamelCase, # pg is in lowercase, and they use different data types. -- 2.11.0