Fix migrations when state is empty by adding skipping

This commit is contained in:
Kacper Donat 2020-01-28 22:02:01 +01:00
parent 519dc8de22
commit 759096b8c4

View File

@ -5,13 +5,15 @@ import * as uuid from "uuid";
type Migration = { type Migration = {
name: string, name: string,
key: string, key: string,
up: (state: any) => Promise<any>; skip?: (state: any) => boolean,
up: (state: any) => Promise<any>,
} }
const migrations: Migration[] = [ const migrations: Migration[] = [
{ {
name: "202001261540_full_stop_in_state", name: "202001261540_full_stop_in_state",
key: "vuex", key: "vuex",
skip: state => !state || !state.favourites || !state.favourites.favourites,
up: async state => { up: async state => {
const current = state.favourites.favourites; const current = state.favourites.favourites;
@ -46,6 +48,7 @@ export async function migrate(key: string) {
const result = await migrations const result = await migrations
.filter(migration => migration.key == key) .filter(migration => migration.key == key)
.filter(migration => !current.includes(migration.name)) .filter(migration => !current.includes(migration.name))
.filter(migration => !migration.skip || !migration.skip(state))
.reduce(async (state, migration) => { .reduce(async (state, migration) => {
current.push(migration.name); current.push(migration.name);
return await migration.up(state) return await migration.up(state)