Changeset 304
- Timestamp:
- 05/20/06 11:07:13 (6 years ago)
- Location:
- wiki-toolkit/trunk
- Files:
-
- 1 added
- 3 modified
-
Changes (modified) (1 diff)
-
MANIFEST (modified) (1 diff)
-
lib/Wiki/Toolkit/Store/Database.pm (modified) (3 diffs)
-
t/026_schema_current.t (added)
Legend:
- Unmodified
- Added
- Removed
-
wiki-toolkit/trunk/Changes
r301 r304 1 1 0.69_04 2 2 Feed code being refactored. 3 Check that the database schema is up-to-date when initializing the 4 store and abort otherwise. 3 5 4 6 0.69_03 13 May 2006 -
wiki-toolkit/trunk/MANIFEST
r303 r304 57 57 t/022_list_unmoderated.t 58 58 t/025_list_node_all_versions.t 59 t/026_schema_current.t 59 60 t/040_rename.t 60 61 t/050_mysql_store.t -
wiki-toolkit/trunk/lib/Wiki/Toolkit/Store/Database.pm
r302 r304 13 13 14 14 $VERSION = '0.27'; 15 my $SCHEMA_VER = 9; 15 16 16 17 # first, detect if Encode is available - it's not under 5.6. If we _are_ … … 113 114 or croak "Can't connect to database $dbname using $dsn: " 114 115 . DBI->errstr; 116 } 117 118 my ($cur_ver, $db_ver) = $self->schema_current; 119 if ($db_ver < $cur_ver) { 120 croak "Database schema version $db_ver is too old (need $cur_ver)"; 121 } elsif ($db_ver > $cur_ver) { 122 croak "Database schema version $db_ver is too new (need $cur_ver)"; 115 123 } 116 124 … … 1648 1656 } 1649 1657 1658 =item B<schema_current> 1659 1660 my ($code_version, $db_version) = $store->schema_current; 1661 if ($code_version == $db_version) 1662 # Do stuff 1663 } else { 1664 # Bail 1665 } 1666 1667 =cut 1668 1669 sub schema_current { 1670 my $self = shift; 1671 my $dbh = $self->dbh; 1672 my $sth; 1673 eval { $sth = $dbh->prepare("SELECT version FROM schema_info") }; 1674 if ($@) { 1675 return ($SCHEMA_VER, 0); 1676 } 1677 eval { $sth->execute }; 1678 if ($@) { 1679 return ($SCHEMA_VER, 0); 1680 } 1681 my $version; 1682 eval { $version = $sth->fetchrow_array }; 1683 if ($@) { 1684 return ($SCHEMA_VER, 0); 1685 } else { 1686 return ($SCHEMA_VER, $version); 1687 } 1688 } 1689 1690 1650 1691 =item B<dbh> 1651 1692
