aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/db/sql/util.py
diff options
context:
space:
mode:
authorChristopher Allan Webber <cwebber@dustycloud.org>2012-01-01 16:02:14 -0600
committerChristopher Allan Webber <cwebber@dustycloud.org>2012-01-29 16:33:45 -0600
commit3635ccdf346ceea12358a410a39f6edb34255182 (patch)
tree80c77560f931f9dbdbf3ec38971f49a77ccad6b4 /mediagoblin/db/sql/util.py
parent4c86905789a4732af38c618ec0132d431f60b04d (diff)
downloadmediagoblin-3635ccdf346ceea12358a410a39f6edb34255182.tar.lz
mediagoblin-3635ccdf346ceea12358a410a39f6edb34255182.tar.xz
mediagoblin-3635ccdf346ceea12358a410a39f6edb34255182.zip
More work on SQL MigrationManager
Added methods: - migration_data - database_current_migration - migrations_to_run
Diffstat (limited to 'mediagoblin/db/sql/util.py')
-rw-r--r--mediagoblin/db/sql/util.py40
1 files changed, 25 insertions, 15 deletions
diff --git a/mediagoblin/db/sql/util.py b/mediagoblin/db/sql/util.py
index d4cbffea..db66776d 100644
--- a/mediagoblin/db/sql/util.py
+++ b/mediagoblin/db/sql/util.py
@@ -68,6 +68,17 @@ class MigrationManager(object):
return self._sorted_migrations
+ @property
+ def migration_data(self):
+ """
+ Get the migration row associated with this object, if any.
+ """
+ query = self.database.query(
+ self.migration_model).filter_by(name=self.name)[0]
+
+ if query.count():
+ return query[0]
+
def latest_migration(self):
"""
Return a migration number for the latest migration, or 0 if
@@ -83,32 +94,31 @@ class MigrationManager(object):
"""
Return the current migration in the database.
"""
- # TODO
+ return self.migration_data.version
def set_current_migration(self, migration_number):
"""
Set the migration in the database to migration_number
"""
- # TODO
- pass
+ self.migration_data = migration_number
+ self.database.commit()
def migrations_to_run(self):
"""
Get a list of migrations to run still, if any.
- Note that calling this will set your migration version to the
- latest version if it isn't installed to anything yet!
+ Note that this will fail if there's no migration record for
+ this class!
"""
- ## TODO
- # self._ensure_current_migration_record()
- #
- # db_current_migration = self.database_current_migration()
- #
- # return [
- # (migration_number, migration_func)
- # for migration_number, migration_func in self.sorted_migrations
- # if migration_number > db_current_migration]
- pass
+ assert self.database_current_migration is None
+
+ db_current_migration = self.database_current_migration()
+
+ return [
+ (migration_number, migration_func)
+ for migration_number, migration_func in self.sorted_migrations
+ if migration_number > db_current_migration]
+
def init_tables(self):
## TODO