Skip to content

Database

Joshua Schmidt edited this page Aug 29, 2018 · 2 revisions

Database Structure

Below is the structure of the main database for this application. Try deploying this application - a similar structure will be created when data is inputted, and it is viewable in the Firebase console.

database
├── access
│   ├── approval
│   |   └── <email-of-approver>
│   |       └── <response-id>
│   |           └── form-id: <form-id>
│   ├── forms
│   |   └── formsbyid
│   |       └── <form-id>
│   |           └── <user-id>
│   |               ├── access: <access-credentials [view or edit]>
│   |               ├── email: <user-email>
│   |               └── role: <access-role [ownder or friend]>
│   |   └── formsbyuser
│   |       └── <user-id>
│   |           └── <form-id>
│   |               ├── access: <access-credentials [view or edit]>
│   |               ├── email: <user-email>
│   |               └── role: <access-role [ownder or friend]>
│   └── workflows
│       ├── workflowsbyid
│       |   └── <workflow-id>
│       |       └── <user-id>
│       |           ├── access: <access-credentials [view or edit]>
│       |           ├── email: <user-email>
│       |           └── role: <access-role [ownder or friend]>
│       └── workflowsbyuser
│           └── <user-id>
│               └── <workflow-id>
│                   ├── access: <access-credentials [view or edit]>
│                   ├── email: <user-email>
│                   └── role: <access-role [ownder or friend]>
├── forms
│   └── <form-id>
│       |── form: <form-data-for-rendering>
│       |── name: <form-name>
│       |── sharing: <form-sharing [private or public]>
│       |── time: <time-form-created>
│       └── workflow: <linked-workflow-id>
├── responses
│   └── <form-id>
│       └── <response-id>
│           |── comment: <reject-comment-string>
│           |── currentWorkflow: <emails-for-current-workflow>
│           |── data
│           |   |── 0
│           |   |   |── name: <name-of-input-field>
│           |   |   └── value: <value-of-input-field-data>
│           |   |── 1
│           |   |   |── name: <name-of-input-field>
│           |   |   └── value: <value-of-input-field-data>
|           |   └── ...
│           |── files
│           |   |── fileids
│           |   |   |── 0: <file-id>
│           |   |   |── 1: <file-id>
|           |   |   └── ...
│           |   |── filenames
│           |   |   |── 0: <file-name>
│           |   |   |── 1: <file-name>
|           |   |   └── ...
│           |   └── fileids
│           |       |── 0: <input=field-name>
│           |       |── 1: <input=field-name>
|           |       └── ...
│           |── notificationstatus: <status-of-email-notification [sent or pending]>
│           |── status: <status-of-response [pending or approved or rejected]>
│           |── time: <time-of-response-submission>
│           |── userId: <userId-of-user-submission>
│           |── workflow: <workflow-id-of-connected-workflow>
│           └── workflowChain
│               |── 0
│               |   |── name: workflow
│               |   └── value: <comma-seperated list of emails in given workflow>
│               |── 1
│               |   |── name: workflow
│               |   └── value: <comma-seperated list of emails in given workflow>
│               └── ...
├── users
│   └── <user-id>
│       |── email: <user-email>
│       |── firstname: <user-first-name>
│       |── lastname: <user-last-name>
│       |── name: <user-full-name>
│       |── notificationsettings
│       |   └── emailon: <workflow notification email send setting [true or false]>
│       |── responses
│       |   └── <formid>
│       |       └── <responseid>
│       |           |── comment: <reject-comment-string>
│       |           |── rejectedBy: <reject-user-email>
│       |           |── status: <response-status [approved or rejected or pending]>
│       |           └── time: <time-submitted [UTC time in seconds since 1970]>
│       └── username: <user-username>
└── workflows
    └── <workflow-id>
        |── name: <workflow-name>
        |── sharing: <workflow-sharing [private or public]>
        |── time: <time-workflow-created>
        └── workflow
                |── 0
                |   |── name: workflow
                |   └── value: <comma-seperated list of emails in given workflow>
                |── 1
                |   |── name: workflow
                |   └── value: <comma-seperated list of emails in given workflow>
                └── ...

Clone this wiki locally