store.lua
The "original" store module: Allows you to store key/value pairs in a persistent storage mechanism. We recommend using the new store2 module instead.
We strongly recommend using newer the store2.lua module rather than the legacy store.lua module.
The store.lua module contains a simple interface to store key/value pairs in a persistent storage mechanism. Simply put, if you want to store and/or retrieve information across interfaces cross-message; this might be the module to do it.
Under the hood this module creates a SQLite database called ‘store.db’ in the Iguana working directory, which has a table called “store”, which has the name=value pairs. However you don’t need to know this, just create a store module (using the code above) and it will all work automatically.
Note: You can use the store.init()
function specify using a different database than ‘store.db’.
How to use store.lua:
- Add it to your shared modules in any Translator project.
- Add
store = require 'store.lua'
at the top of your script. - Use
store.init()
to specify the database to use to store data. - Use store.put() and store.get() to store and get information respectively.
Example:
-- This is the original store module. It retains the original interface -- for 100% backward compatability. -- A lot of interfaces have been written using this module so we maintain -- it out of respect for our customers. For new interfaces we recommend -- the store2 module which has the ability to allow one translator instance -- have multiple stores. -- Under the hood this module creates a SQLite database by default called ‘store.db’ in the Iguana working directory. -- This has a table called “store”, which has the name=value pairs. However you don’t need to know this, -- just create a store module (using the code above) and it will all work automatically. -- It is good practice to use the store.init function. This function changes the store module to use another database -- file instead of the default one. This is valuable when you have multiple channels using the store module and you want -- to guarantee independence or you want the freedom to clear the store. The store2 module is even better in this regard. local store = require 'store' function ShowStore() -- It's best practice to use the init function to -- create different name spaces for different uses of -- the store module. This prevents one use of the store -- module in one channel interfering with another. store.init('mystore.db') local Message = "Using: "..iguana.workingDir()..store.name() trace(Message) trace(store) -- Store a value store.put('Iguana', 'awesome') -- Get a value local Value = store.get('Iguana') trace('Iguana is '..Value) -- Clear the store store.resetTableState() -- Now the Iguana value will be nil trace(store.get('Iguana')) -- Store multiple values store.put('Larry', 'The ') store.put('Curly', 'three') store.put('Moe', 'Stooges') -- check state - returns all stored data store.getTableState() --> table node tree with 3 rows end