StorageService Specification

From MacroDeckDevWiki

(Redirected from StorageService)
Jump to: navigation, search

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.

Personal tools