As briefly explained in the project's main page, DataStore is a series of addons that intend to relieve client addons of repetitive tasks like scanning and storing data. At the time of writing (August 12th, 2009), the whole project is made of 1 main module (DataStore) and 15 optional modules (DataStore_Crafts, DataStore_Auctions, etc..), all of which have a dependency on the main module.
The obvious advantage of this approach is that client addons will talk to the same data abstraction layer, which translates into resource savings.
Unlike most addons, DataStore takes multiple accounts into consideration, which means that methods to export/import data are also part of the solution.
A few more words on the scope
Each optional module is responsible for one specific area (crafts, reputations, etc..), and in the current state, no interaction exists between modules. If a specific interaction is expected, it should be coded in the client addon. Also, the scope of each module should be tied to persistent data, meaning that if you thought about designing a real-time combat analysis tool and save the data into a DataStore module, it would clearly be out of scope.
An optional module is responsible for 3 tasks : scanning data, saving it into a db, and providing (if applicable) a few common features to client addons. This third task is rather flexible and will greatly vary among modules. For instance, DataStore_Crafts offers a lot of services (due the presence of LPT-TradeSkills) to client addons, whereas DataStore_Achievements offers practically none. Try to keep this in mind when submitting enhancements to existing modules or when developping new ones.
Client addons should assume the presence of DataStore in _G, a dependency on the main module is thus strongly advised for client addons.
DataStore's saved variables are intended to be used by external applications (like web-sites, or sync tools), its data is thus stored in a readable format (ie: uncompressed). Please keep this in my when developping new modules.
Although DataStore takes multiple accounts into consideration, the actual data transfer of an account's information to another is out of its scope. Such transfers imply a minimum of security that should be handled by client addons.
The existing modules will evolve as much as possible, especially in the service area. An example is DataStore_Mails which currently takes care of dropping mails into an alt's mailbox, so client addons offer this functionality without coding a single line. An extension of this functionality is to do the same into a guildmate's mailbox, which is a feature currenlty implemented in Altoholic, but that will go down into DataStore_Mails, so that other addons can benefit from it too.
One of the project's goals is to minimize the need to clean the saved variables, it is thus intended to implement database versioning at some point (help would be welcome on this). Until this happens, changes in the database structure should be avoided.
None of the modules has an actual UI, they do not need one, and they will never get one. However, if the need arises, they might require options that would be added to the Blizzard options UI.
More modules will come later, and if you have suggestions about anything, they are welcome.
Simply add this line into your addon's .toc file.
## Dependencies: DataStore
If you want to be more specific, you can also add a dependency on each specific module, but this is not mandatory.
.. And that's basically it, your addon is now ready to use DataStore.
- Date created
- Aug 12, 2009
- Last updated
- Aug 28, 2009