Как сделать версию семян в Knex? - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть файл SQL, где я пишу предложения для запуска в выпуске, этот файл содержит такие предложения, как:

-- =======================2019-02-01=======================
UPDATE rating set stars = 3 where id = 6;
UPDATE users SET status = 'A' where last_login >= '2019-01-01';
INSERT INTO....
-- =======================2019-02-15=======================
UPDATE rating set stars = 3 where id = 6;
UPDATE users SET status = 'A' where last_login >= '2019-01-01';
INSERT INTO....

Я запускаю конкретные предложения в каждую дату выпуска, но я считаю, что это плохая практика и ее нельзя расширить.

Я пытаюсь изменить этот метод на семена Knex или миграцию. что было бы лучше всего сделать это?

Проблема с семенами связана с тем, что knex выполняет начальные числа каждый раз, когда я пишу команду knex seed:run, и отображаются некоторые ошибки.

1 Ответ

2 голосов
/ 13 апреля 2019

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

https://knexjs.org/#Installation-migrations

Программно вы можете выполнять миграции следующим образом:

knex({..config..}).migrate.latest({
  directory: 'migrations', // where the files are stored
  tableName: 'knex_migrations' // where knex saves its records
});

Пример файла миграции

exports.up = function(knex) {
  return knex.raw(`
   UPDATE rating set stars = 3 where id = 6;
   UPDATE users SET status = 'A' where last_login >= '2019-01-01';
   INSERT INTO....
  `)
};

Файлы будут выполнены в алфавитном порядке / отсортированы и не будут повторно выполняться для той же базы данных.

...