cvsuser     03/06/13 10:28:59

  Modified:    App-Repository/lib/App/Repository DBI.pm MySQL2.pm
  Log:
  supplied the missing _next_id() method
  
  Revision  Changes    Path
  1.7       +2 -21     p5ee/App-Repository/lib/App/Repository/DBI.pm
  
  Index: DBI.pm
  ===================================================================
  RCS file: /cvs/public/p5ee/App-Repository/lib/App/Repository/DBI.pm,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -w -r1.6 -r1.7
  --- DBI.pm    12 Jun 2003 18:46:04 -0000      1.6
  +++ DBI.pm    13 Jun 2003 17:28:59 -0000      1.7
  @@ -1,13 +1,13 @@
   
   ######################################################################
  -## File: $Id: DBI.pm,v 1.6 2003/06/12 18:46:04 spadkins Exp $
  +## File: $Id: DBI.pm,v 1.7 2003/06/13 17:28:59 spadkins Exp $
   ######################################################################
   
   use App;
   use App::Repository;
   
   package App::Repository::DBI;
  -$VERSION = do { my @r=(q$Revision: 1.6 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
  +$VERSION = do { my @r=(q$Revision: 1.7 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
   
   @ISA = ( "App::Repository" );
   
  @@ -2453,23 +2453,4 @@
   }
   
   1;
  -
  -__END__
  -
  -sub _next_id {
  -    my ($self, $table, $last_id) = @_;
  -    return ($last_id + 1) if ($last_id);
  -
  -    my ($tabledef, $upper_bound, $where_upper_bound, $id, $pk_column);
  -    $tabledef = $self->{table}{$table};
  -    $pk_column = "";
  -    $pk_column = $tabledef->{primary_key}[0] if ($tabledef->{primary_key});
  -    $upper_bound = $tabledef->{column}{$pk_column}{auto_id_upper_bound};
  -    $where_upper_bound = $upper_bound ? " where $pk_column < $upper_bound" : "";
  -    $id = $self->{dbh}->selectrow_array("select max($pk_column) from 
$table$where_upper_bound");
  -    $id = 0 if (!$id);
  -    $id ++;
  -
  -    return $id;
  -}
   
  
  
  
  1.3       +22 -4     p5ee/App-Repository/lib/App/Repository/MySQL2.pm
  
  Index: MySQL2.pm
  ===================================================================
  RCS file: /cvs/public/p5ee/App-Repository/lib/App/Repository/MySQL2.pm,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -w -r1.2 -r1.3
  --- MySQL2.pm 13 Jun 2003 16:20:49 -0000      1.2
  +++ MySQL2.pm 13 Jun 2003 17:28:59 -0000      1.3
  @@ -1,12 +1,12 @@
   
   ######################################################################
  -## File: $Id: MySQL2.pm,v 1.2 2003/06/13 16:20:49 spadkins Exp $
  +## File: $Id: MySQL2.pm,v 1.3 2003/06/13 17:28:59 spadkins Exp $
   ######################################################################
   
   use App::Repository::MySQL;
   
   package App::Repository::MySQL2;
  -$VERSION = do { my @r=(q$Revision: 1.2 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
  +$VERSION = do { my @r=(q$Revision: 1.3 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
   
   @ISA = ( "App::Repository::MySQL" );
   
  @@ -40,9 +40,9 @@
       $pk_column = $tabledef->{primary_key};
       if ($pk_column) {
           if (!ref($pk_column)) {
  -            $pk_column = [ $pk_column ];
  +            $auto_id = $tabledef->{column}{$pk_column}{auto_id};
           }
  -        if ($#$pk_column eq 0) {
  +        elsif ($#$pk_column eq 0) {
               $pk_column = $pk_column->[0];
               $auto_id = $tabledef->{column}{$pk_column}{auto_id};
           }
  @@ -462,6 +462,24 @@
       $self->{numrows} = $nrows;
       &App::sub_exit() if ($App::trace_subs);
       return($nrows);
  +}
  +
  +sub _next_id {
  +    my ($self, $table, $last_id) = @_;
  +    return ($last_id + 1) if ($last_id);
  +
  +    my ($tabledef, $upper_bound, $where_upper_bound, $id, $pk_column);
  +    $tabledef = $self->{table}{$table};
  +    $pk_column = "";
  +    $pk_column = $tabledef->{primary_key};
  +    $pk_column = $pk_column->[0] if ($pk_column && ref($pk_column) eq "ARRAY");
  +    $upper_bound = $pk_column ? 
$tabledef->{column}{$pk_column}{auto_id_upper_bound} : 0;
  +    $where_upper_bound = $upper_bound ? " where $pk_column < $upper_bound" : "";
  +    $id = $self->{dbh}->selectrow_array("select max($pk_column) from 
$table$where_upper_bound");
  +    $id = 0 if (!$id);
  +    $id ++;
  +
  +    return $id;
   }
   
   1;
  
  
  

Reply via email to