comparison LibModuleDBShare-1.0/LibModuleDBShare-1.0.lua @ 23:91ae8cfc63f2

Added OnDatabaseShutdown callbacks to all member DBs. Corrected character-specific DB field from 'character' to 'char.'
author Andrew Knoll <andrewtknoll@gmail.com>
date Fri, 15 Mar 2013 21:09:34 -0400
parents 4f5fba631b99
children efdeebcef96e
comparison
equal deleted inserted replaced
22:4f5fba631b99 23:91ae8cfc63f2
64 for i, profile in pairs(initialDB:GetProfiles()) do 64 for i, profile in pairs(initialDB:GetProfiles()) do
65 group.syncDB:SetProfile(profile); 65 group.syncDB:SetProfile(profile);
66 end 66 end
67 group.syncDB:SetProfile(initialDB:GetCurrentProfile()); 67 group.syncDB:SetProfile(initialDB:GetCurrentProfile());
68 group.members[initialDB] = true; 68 group.members[initialDB] = true;
69 if type(initialDB.character.logoutTimestamp) == "number" then 69 if type(initialDB.char.logoutTimestamp) == "number" then
70 group.profileTimestamp = initialDB.character.logoutTimestamp; 70 group.profileTimestamp = initialDB.char.logoutTimestamp;
71 else 71 else
72 group.profileTimestamp = 0; 72 group.profileTimestamp = 0;
73 end 73 end
74 -- add methods and callbacks 74 -- add methods and callbacks
75 for k, v in pairs(DBGroup) do 75 for k, v in pairs(DBGroup) do
77 end 77 end
78 group.syncDB.RegisterCallback(group, "OnProfileChanged", "OnProfileChanged"); 78 group.syncDB.RegisterCallback(group, "OnProfileChanged", "OnProfileChanged");
79 group.syncDB.RegisterCallback(group, "OnProfileDeleted", "OnProfileDeleted"); 79 group.syncDB.RegisterCallback(group, "OnProfileDeleted", "OnProfileDeleted");
80 group.syncDB.RegisterCallback(group, "OnProfileCopied", "OnProfileCopied"); 80 group.syncDB.RegisterCallback(group, "OnProfileCopied", "OnProfileCopied");
81 group.syncDB.RegisterCallback(group, "OnProfileReset", "OnProfileReset"); 81 group.syncDB.RegisterCallback(group, "OnProfileReset", "OnProfileReset");
82 initialDB.RegisterCallback(group, "OnDatabaseShutdown", "OnDatabaseShutdown");
82 group.squelchCallbacks = false; 83 group.squelchCallbacks = false;
83 LibModuleDBShare.groups[groupName] = group; 84 LibModuleDBShare.groups[groupName] = group;
84 return group; 85 return group;
85 end 86 end
86 87
108 self.squelchCallbacks = true; 109 self.squelchCallbacks = true;
109 for i, profile in pairs(newDB:GetProfiles()) do 110 for i, profile in pairs(newDB:GetProfiles()) do
110 self.syncDB:SetProfile(profile); 111 self.syncDB:SetProfile(profile);
111 end 112 end
112 -- set current profile based on timestamps 113 -- set current profile based on timestamps
113 if type(newDB.character.logoutTimestamp) == "number" and newDB.character.logoutTimestamp > self.profileTimestamp then 114 if type(newDB.char.logoutTimestamp) == "number" and newDB.char.logoutTimestamp > self.profileTimestamp then
114 self.squelchCallbacks = false; 115 self.squelchCallbacks = false;
115 self.syncDB:SetProfile(newDB:GetCurrentProfile()); 116 self.syncDB:SetProfile(newDB:GetCurrentProfile());
116 self.profileTimestamp = newDB.character.logoutTimestamp; 117 self.profileTimestamp = newDB.character.logoutTimestamp;
117 else 118 else
118 self.syncDB:SetProfile(syncProfile); 119 self.syncDB:SetProfile(syncProfile);
119 newDB:SetProfile(syncProfile); 120 newDB:SetProfile(syncProfile);
120 self.squelchCallbacks = false; 121 self.squelchCallbacks = false;
121 end 122 end
122 -- add to members list 123 -- add to members list
123 self.members[newDB] = true; 124 self.members[newDB] = true;
125 newDB.RegisterCallback(self, "OnDatabaseShutdown", "OnDatabaseShutdown");
124 end 126 end
125 127
126 -- callback handlers (new profiles are handled by OnProfileChanged) 128 -- callback handlers (new profiles are handled by OnProfileChanged)
127 129
128 function DBGroup:OnProfileChanged(callback, db, profile) 130 function DBGroup:OnProfileChanged(callback, db, profile)
148 150
149 function DBGroup:OnProfileReset(callback, db) 151 function DBGroup:OnProfileReset(callback, db)
150 print("Profile Reset"); 152 print("Profile Reset");
151 print(self.name); 153 print(self.name);
152 end 154 end
155
156 function DBGroup:OnDatabaseShutdown(callback, db)
157 print("Database Shutdown");
158 end