Ignore:
Timestamp:
05/21/19 17:30:15 (5 years ago)
Author:
nanardon
Message:

Improve schema upgrade procedure

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql.pm

    r2236 r2243  
    1818our $VERSION = (q$Rev$ =~ /^Rev: (\d+) /)[0]; 
    1919 
    20 sub SCHEMA_VERSION { 31 }; 
     20sub SCHEMA_VERSION { 32 }; 
    2121 
    2222=head1 NAME 
     
    9595        $self->log(LA_DEBUG, 'New connection to DB'); 
    9696 
    97         { 
    98             my $sv = $self->get_global_value('schema_version') || 1; 
    99             if ($sv < SCHEMA_VERSION) { 
    100                 require LATMOS::Accounts::Bases::Sql::upgrade; 
    101                 if ($self->SchemaUpgrade()) { 
    102                     $self->commit; 
    103                 } else { 
    104                     $self->rollback; 
    105                     return; 
    106                 } 
    107             } 
    108         } 
    109  
    110         $self->{_db}->commit; 
    11197        return $self->{_db}; 
    11298    } 
    11399} 
    114100 
     101sub IsSchemaUpToDate { 
     102    my ($self) = @_; 
     103 
     104    my $sv = $self->get_global_value('schema_version') || 1; 
     105 
     106    return $sv == SCHEMA_VERSION; 
     107} 
     108 
     109sub SchemaUpgrade { 
     110    my ($self) = @_; 
     111 
     112    if (!$self->IsSchemaUpToDate) { 
     113        require LATMOS::Accounts::Bases::Sql::upgrade; 
     114        if ($self->_SchemaUpgrade()) { 
     115            $self->commit; 
     116        } else { 
     117            $self->rollback; 
     118            return; 
     119        } 
     120    } else { 
     121        return 1; 
     122    } 
     123} 
     124 
    115125=head2 load 
    116126 
     
    123133    if (!$self->db) { return 0 }; 
    124134 
    125     my $sv = $self->get_global_value('schema_version') || 1; 
    126     if ($sv < SCHEMA_VERSION) { 
    127         $self->log(LA_CRIT, 
    128             "Schema version %d found, %d is need, please update db using " . 
    129             "`la-sql-upgrade' tool for `%s' base", 
    130             $sv, 
    131             SCHEMA_VERSION, 
    132             $self->label, 
    133         ); 
    134         # return; 
    135     } 
     135    if (!$self->IsSchemaUpToDate) { 
     136        my $sv = $self->get_global_value('schema_version') || 1; 
     137        $self->log(LA_ERR, "Schema need update, please run `la-sql-upgrade -b %s'", $self->label);  
     138        return; 
     139    } 
     140 
    136141    if (!$self->_CreateInternalObjects) { 
    137142        $self->rollback; 
Note: See TracChangeset for help on using the changeset viewer.