2014-06-26 4 views
0

Я собираюсь выпустить обновление приложения iPhone, которое я написал в титановом сплаве. Я добавил новый столбец в базу данных, поэтому я написал для него миграцию. Перемещение вверх достаточно просто, просто изменив таблицу, чтобы добавить новый столбец. Тем не менее, миграция вниз немного беспокоит, поскольку она связана с созданием временной базы данных, хранением необходимых мне данных, а затем сбрасыванием существующей базы данных и созданием новой с сохраненными данными для сохранения удаления столбца.Как вы можете проверить, что миграция титанового сплава будет работать?

Как я могу проверить, что этот код верен и будет работать?

Вот мои Миграции:

migration.up = function(migrator) { 
    migrator.db.execute('ALTER TABLE ' + migrator.table + ' ADD COLUMN is_sample BOOLEAN;'); 
}; 

migration.down = function(migrator) { 
    var db = migrator.db; 
    var table = migrator.table; 
    db.execute('CREATE TEMPORARY TABLE beers_backup(alloy_id,name,brewery,rating,percent,establishment,location,notes,date,date_string,beer_image,latitude,longitude,favourite);'); 
    db.execute('INSERT INTO beers_backup SELECT alloy_id,name,brewery,rating,percent,establishment,location,notes,date,date_string,beer_image,latitude,longitude,favourite FROM ' + table + ';'); 
    migrator.dropTable(); 
    migrator.createTable({ 
     columns: { 
      "name": "text", 
      "brewery": "text", 
      "rating": "integer", 
      "percent": "integer", 
      "establishment": "text", 
      "location": "text", 
      "notes": "text", 
      "date": "text", 
      "date_string": "text", 
      "beer_image": "text", 
      "latitude": "integer", 
      "longitude": "integer", 
      "favourite": "boolean" 
     }, 
    }); 
    db.execute('INSERT INTO ' + table + ' SELECT alloy_id,name,brewery,rating,percent,establishment,location,notes,date,date_string,beer_image,latitude,longitude,favourite FROM beers_backup;'); 
    db.execute('DROP TABLE beers_backup;'); 
}; 
+0

Я предполагаю, что у вас нет предыдущей сборки приложения? –

+0

К сожалению, нет, но я могу отбросить приложение с помощью управления версиями и создать сборку, если это то, что мне нужно сделать? – shrewdbeans

ответ

1

Вы должны быть хорошо до тех пор, как ваш первый миграционный файл (тот, который вы создали, когда вы создали модель) совпадает с нисходящей миграции здесь.

Как это:

migration.up = function(migrator){ 
migrator.createTable({ 
    columns: { 
    "name": "text", 
    "brewery": "text", 
    "rating": "integer", 
    "percent": "integer", 
    "establishment": "text", 
    "location": "text", 
    "notes": "text", 
    "date": "text", 
    "date_string": "text", 
    "beer_image": "text", 
    "latitude": "integer", 
    "longitude": "integer", 
    "favourite": "boolean" 
    } 
}); 
}; 

migration.down = function(migrator) { 
migrator.droptTable(); 
}; 

Миграция файл должен иметь метку, которая меньше, чем тот, который был указан в оригинальный вопрос.

Смежные вопросы