When the user clicks **save** in either the depicts or captions sections, we need to store a contribution in the database. The 'save' functions will later have the API calls added to actually make the Commons edits on behalf of the user.
Contributions table structure:
| id | user_id | campaign_id | file | edit_type | edit_content |
== user_id and campaign_id ==
Both foreign keys pointing to their respective tables.
== file ==
Common's filename which has been edited
== edit_type ==
either "depicts" or "caption".
== edit_content ==
We should store the edit_content as a JSON string.
**Depicts example**:
```
[
{ "value": "Q123", "action": "add"},
{ "value": "Q84", "action": "remove"},
{ "value": "Q84", "action": "add"},
]
```
**Caption example**:
Captions can be either added or edited (I can't see any reason why we need to support removing captions. If it's bad or incorrect it can be edited)
```
[
{ "lang": "en", text: "", "action": "add"},
{ "lang": "fr", "action": "edit"},
{ "lang": "de", "action": "add"},
]
```