From: Peter Rabbitson Date: Sun, 24 May 2009 20:53:15 +0000 (+0000) Subject: Switch around inheritance of MSSQL drivers, remove some duplicate code X-Git-Tag: v0.08103~17 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=eb0323dfeabac3aa2d50e56e9f9a1c958ba9c534;p=dbsrgits%2FDBIx-Class.git Switch around inheritance of MSSQL drivers, remove some duplicate code --- diff --git a/lib/DBIx/Class/Storage/DBI/MSSQL.pm b/lib/DBIx/Class/Storage/DBI/MSSQL.pm index 51c4e02..40afe76 100644 --- a/lib/DBIx/Class/Storage/DBI/MSSQL.pm +++ b/lib/DBIx/Class/Storage/DBI/MSSQL.pm @@ -16,7 +16,19 @@ sub build_datetime_parser { my $type = "DateTime::Format::Strptime"; eval "use ${type}"; $self->throw_exception("Couldn't load ${type}: $@") if $@; - return $type->new( pattern => '%m/%d/%Y %H:%M:%S' ); + return $type->new( pattern => '%Y-%m-%d %H:%M:%S' ); # %F %T +} + +sub sqlt_type { 'SQLServer' } + +sub _sql_maker_opts { + my ( $self, $opts ) = @_; + + if ( $opts ) { + $self->{_sql_maker_opts} = { %$opts }; + } + + return { limit_dialect => 'Top', %{$self->{_sql_maker_opts}||{}} }; } 1; @@ -39,6 +51,17 @@ L. These classes will merge this class with a DBD-specific class to obtain fully correct behavior for your scenario. +=head1 METHODS + +=head2 last_insert_id + +=head2 sqlt_type + +=head2 build_datetime_parser + +The resulting parser handles the MSSQL C type, but is almost +certainly not sufficient for the other MSSQL 2008 date/time types. + =head1 AUTHORS Brian Cassidy diff --git a/lib/DBIx/Class/Storage/DBI/ODBC/Microsoft_SQL_Server.pm b/lib/DBIx/Class/Storage/DBI/ODBC/Microsoft_SQL_Server.pm index 108b8cf..3a464fd 100644 --- a/lib/DBIx/Class/Storage/DBI/ODBC/Microsoft_SQL_Server.pm +++ b/lib/DBIx/Class/Storage/DBI/ODBC/Microsoft_SQL_Server.pm @@ -2,7 +2,7 @@ package DBIx::Class::Storage::DBI::ODBC::Microsoft_SQL_Server; use strict; use warnings; -use base qw/DBIx::Class::Storage::DBI/; +use base qw/DBIx::Class::Storage::DBI::MSSQL/; sub _prep_for_execute { my $self = shift; @@ -29,26 +29,6 @@ sub _execute { sub last_insert_id { shift->{_scope_identity} } -sub sqlt_type { 'SQLServer' } - -sub _sql_maker_opts { - my ( $self, $opts ) = @_; - - if ( $opts ) { - $self->{_sql_maker_opts} = { %$opts }; - } - - return { limit_dialect => 'Top', %{$self->{_sql_maker_opts}||{}} }; -} - -sub build_datetime_parser { - my $self = shift; - my $type = "DateTime::Format::Strptime"; - eval "use ${type}"; - $self->throw_exception("Couldn't load ${type}: $@") if $@; - return $type->new( pattern => '%F %T' ); -} - 1; __END__ @@ -75,17 +55,6 @@ be called is the same execute statement, not just the same connection. So, this implementation appends a SELECT SCOPE_IDENTITY() statement onto each INSERT to accommodate that requirement. -=head1 METHODS - -=head2 last_insert_id - -=head2 sqlt_type - -=head2 build_datetime_parser - -The resulting parser handles the MSSQL C type, but is almost -certainly not sufficient for the other MSSQL 2008 date/time types. - =head1 AUTHORS Marc Mims C<< >> diff --git a/lib/DBIx/Class/Storage/DBI/Sybase/MSSQL.pm b/lib/DBIx/Class/Storage/DBI/Sybase/MSSQL.pm index 040fac2..dfd7a27 100644 --- a/lib/DBIx/Class/Storage/DBI/Sybase/MSSQL.pm +++ b/lib/DBIx/Class/Storage/DBI/Sybase/MSSQL.pm @@ -14,7 +14,7 @@ carp 'Setting of storage_type is redundant as connections through DBD::Sybase' .' ::DBI::Sybase::Microsoft_SQL_Server'; -use base qw/DBIx::Class::Storage::DBI::ODBC::Microsoft_SQL_Server DBIx::Class::Storage::DBI::Sybase/; +use base qw/DBIx::Class::Storage::DBI::Sybase::Microsoft_SQL_Server/; 1;