From 5648f47110efb42c1ce1e2c009a8c486453ff3c7 Mon Sep 17 00:00:00 2001 From: Matt Button Date: Fri, 21 Jan 2011 01:18:08 +0000 Subject: [PATCH] Ensure the migrations table exists before running migrations, fixes #9 --- classes/minion/task/db/migrate.php | 3 +++ classes/model/minion/migration.php | 18 ++++++++++++++++++ minion_schema.sql | 3 --- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/classes/minion/task/db/migrate.php b/classes/minion/task/db/migrate.php index 75af87b..da785de 100644 --- a/classes/minion/task/db/migrate.php +++ b/classes/minion/task/db/migrate.php @@ -83,6 +83,9 @@ class Minion_Task_Db_Migrate extends Minion_Task $db = Database::instance(); $model = new Model_Minion_Migration($db); + + $model->ensure_table_exists(); + $manager = new Minion_Migration_Manager($db, $model); $manager diff --git a/classes/model/minion/migration.php b/classes/model/minion/migration.php index 858e4ae..26368a3 100644 --- a/classes/model/minion/migration.php +++ b/classes/model/minion/migration.php @@ -40,6 +40,24 @@ class Model_Minion_Migration extends Model return Minion_Migration_Util::compile_migrations_from_files($files); } + /** + * Checks to see if the minion migrations table exists and attempts to + * create it if it doesn't + * + * @return boolean + */ + public function ensure_table_exists() + { + $query = $this->_db->query(Database::SELECT, "SHOW TABLES like '".$this->_table."'"); + + if( ! count($query)) + { + $sql = file_get_contents(Kohana::find_file('', 'minion_schema', 'sql')); + + $this->_db->query(NULL, $sql); + } + } + /** * Gets the status of all locations, whether they're in the db or not. * diff --git a/minion_schema.sql b/minion_schema.sql index b970e77..dd32b9c 100644 --- a/minion_schema.sql +++ b/minion_schema.sql @@ -1,5 +1,3 @@ -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; CREATE TABLE `minion_migrations` ( `timestamp` varchar(14) NOT NULL, `description` varchar(100) NOT NULL, @@ -8,4 +6,3 @@ CREATE TABLE `minion_migrations` ( PRIMARY KEY (`timestamp`,`location`), UNIQUE KEY `MIGRATION_ID` (`timestamp`,`description`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */;