From 3879ca3845eea8b6154429c795364f7d79160483 Mon Sep 17 00:00:00 2001 From: Brandon Talbot Date: Sat, 2 Jul 2016 08:11:03 +0200 Subject: [PATCH] Major refactor: V0.1.1 * Added settings migration tool * Fixes crash when loading with outdated settings --- DJBags.toc | 2 +- src/lua/settings/settings.lua | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/DJBags.toc b/DJBags.toc index 917e6dc..7fecc7e 100644 --- a/DJBags.toc +++ b/DJBags.toc @@ -2,7 +2,7 @@ ## Title: DJBags ## Author: DarkJaguar91 ## Notes: BagAddon - BETA -## Version: 0.1.0 +## Version: 0.1.1 ## SavedVariables: DJBagsConfig src/manifest.xml \ No newline at end of file diff --git a/src/lua/settings/settings.lua b/src/lua/settings/settings.lua index a21e3e7..ed66a7c 100644 --- a/src/lua/settings/settings.lua +++ b/src/lua/settings/settings.lua @@ -1,5 +1,7 @@ local NAME, ADDON = ... +local DBVERSION = 1 + ADDON.settingsController = {} local settings = ADDON.settingsController settings.__index = settings @@ -37,7 +39,24 @@ function settings:GetCharacterSettings() local realm = GetRealmName() local player = UnitName("player") + ADDON.settings.version = DBVERSION if DJBagsConfig and DJBagsConfig[realm] and DJBagsConfig[realm][player] then + if not DJBagsConfig[realm][player].version or DJBagsConfig[realm][player].version < DBVERSION then + DJBagsConfig[realm][player] = self:migrateDb(DJBagsConfig[realm][player].version or 0, DJBagsConfig[realm][player]) + end ADDON.settings = DJBagsConfig[realm][player] end +end + +settings.migrateFunc = {} +settings.migrateFunc[1] = function () + return ADDON.settings +end + +function settings:migrateDb(version, old) + while version < DBVERSION do + version = version + 1 + old = self.migrateFunc[version](old) + end + return old end \ No newline at end of file -- 1.7.9.5