Как вы проверяете, что миграция из титанового сплава будет работать?

#titanium #titanium-mobile #appcelerator #titanium-alloy

#титан #titanium-мобильный #ускоритель приложений #titanium-alloy

Вопрос:

Я собираюсь выпустить обновление приложения для iPhone, которое я написал на Titanium Alloy. Я добавил новый столбец в базу данных, поэтому я написал для него миграцию. Миграция вверх достаточно проста, просто изменяя таблицу, чтобы добавить новый столбец. Однако миграция вниз вызывает некоторые опасения, поскольку она включает в себя создание временной базы данных, хранение необходимых мне данных, а затем удаление существующей базы данных и создание новой с сохраненными данными, чтобы сохранить столбец remove.

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

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

 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;');
};
 

Комментарии:

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

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

Ответ №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();
};
 

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