StorageService Specification
From MacroDeckDevWiki
This is a draft document. It may change at any time.
StorageService will store files, directories, metadata, and searchable information (tags, etc.) in our database. Files will have the same capabilities as data items, such as permissions, owner/creators, and so on. Files and folders can be shared with users or groups in this manner.
Contents |
Features Exposed To Ruby
- Folder creation
- File creation
- Tagging
- Metadata modification
- Folder listing
- Standard file operations (delete, rename, etc.)
- Quotas
- Quota management (setting, unsetting, etc.)
Features Exposed Via XML-RPC/SOAP
- Folder creation
- File creation
- Tagging
- Metadata modification
- Folder listing
- Standard file operations (delete, rename, etc.)
- Quota enforcement
Widget-Specific Features
- Folder creation
- File creation
- Tagging
- Metadata modification
- Folder listing
- Standard file operations (delete, rename, etc.)
Application-Specific Features
This service is designed to be functionally similar on applications outside of MacroDeck as well as widgets on MacroDeck.
Synchronizable Data
- Files
- Folders
- Metadata
Interaction With Other Services
- UserService will be used to manage all of the different sets of data for users and groups.
- UserService will be used for permission verification
- UserService will be used for access control
Technical Data
UUIDs
No UUIDs are currently defined.
APIs
No APIs are currently defined.
Schema Information
StorageService will implement its own schema. Files will not be stored within DataService. This should be the only occurance of storing data outside of DataService. The schema will be very similar to that of DataService, except that instead of stringdata/integerdata/objectdata, we'll have only filedata (BLOB). We'll also nuke unneeded fields (datatype, for example), and add some others for MIME-Type, file length, and file name. In this manner, each file will have a UUID and a name. The name must be unique as well (view StorageService like a filesystem).
Front End
The official MacroDeck front end should be a controller (StorageController) that should be accessed at /user/name/files, /user/name/file/*path_info, and the same for /group. Access controls should be applied obviously.

