The system provides a generic database storage mechanism called the Keyvalue Storage.
The Keyvalue Storage consists of a database table and modules for inserting, retrieving, and deleting data from the table.
Data is organized into a 5-level hierarchy:
Scope -> Key Group -> Key -> Value name -> Value
The Keyvalue Storage database table has the following schema:
These modules are used in assemblies to interact with the Keyvalue Storage:
All Keyvalue Storage modules work with data in a defined scope. The scope determines the visibility of the data across different system entities.
Data stored in the "person" scope is global across all assemblies for the user's account. The Scope UUID field can be set to a person account UUID retrieved from the User Account Info module. If the Scope UUID field is empty, the currently signed-in user account is used instead.
Data stored in the "developer" scope is global across all assemblies owned by the developer. The Scope UUID field must be set to the developer's UUID, obtained by right-clicking on the Assembly Editor's background and selecting the Get Developer UUID context menu option.
Data stored in the "automation" scope is accessible across all trigger and action assemblies within an automation. The Scope UUID field is unused.
Data stored in the "assembly" scope is accessible across all created instances of the assembly. The Scope UUID field is unused.
Data stored in the "assembly instance" scope is accessible across all modules in a single instance of the assembly. The Scope UUID field is unused.
The "widget" and "widget instance" scopes should not be used, they are only for visual widgets built in the system.