|
|
|
# Store
|
|
|
|
|
|
|
|
The Store is the central point of the application. It is responsible for
|
|
|
|
keeping all the information sent by Capturers and providing a search/list
|
|
|
|
functionality for Viewers.
|
|
|
|
|
|
|
|
## Configuration
|
|
|
|
|
|
|
|
We would need, at least (probably in envvars):
|
|
|
|
|
|
|
|
- `IP`: Binding IP for the server.
|
|
|
|
- `PORT`: Binding port for the server.
|
|
|
|
|
|
|
|
## Internals
|
|
|
|
|
|
|
|
We would probably need a design like:
|
|
|
|
|
|
|
|
### Entry
|
|
|
|
|
|
|
|
| Field | Description |
|
|
|
|
| ------- | --------------------------------------------------- |
|
|
|
|
| id | UUID of the record. |
|
|
|
|
| title | String, produced by a Capturer. |
|
|
|
|
| content | Text, produced by a Capturer. It's always Markdown. |
|
|
|
|
| source | Capturer name. |
|
|
|
|
|
|
|
|
### Meta
|
|
|
|
|
|
|
|
Meta contains the meta information of the entry, used by a Capturer. A view may
|
|
|
|
or may not display those fields.
|
|
|
|
|
|
|
|
| Field | Description |
|
|
|
|
| ------- | --------------------------------------------------- |
|
|
|
|
| id | UUID of the record. |
|
|
|
|
| entry | ForeignKey of the entry. |
|
|
|
|
| name | Meta field name. |
|
|
|
|
| value | Meta field value. |
|
|
|
|
|
|
|
|
### Attachments
|
|
|
|
|
|
|
|
Attachments are not meta information, but something related to the entry -- for
|
|
|
|
example, if the content contains any images, those are added as attachments.
|
|
|
|
|
|
|
|
| Field | Description |
|
|
|
|
| ------------- | --------------------------------------------------- |
|
|
|
|
| id | UUID of the record. |
|
|
|
|
| entry | ForeignKey of the entry. |
|
|
|
|
| content\_type | Type of the content. |
|
|
|
|
| content | Attachment content, in Base64. |
|