I have still been thinking about this “fat posts” architectural change and even started exploring it in a branch. I thought it would be good to capture all the current fields in use across the various post types, so I took a moment to do that.
As I mentioned in the previous post, all my post types inherit from a base FeedItem
. The shared fields from that base model are at the top of the table.
Note | Article | Photo | Like | Repost | Bookmark | |
---|---|---|---|---|---|---|
created (datetime) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
updated (datetime) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
author (*:1 user) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
published (datetime) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
tags (*:* tag) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
syndications (1:* syndication) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
in_reply_to (url) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
content (text) | ✅ | ✅ | ✅ | |||
title (text) | ✅ | ✅ | ||||
summary (text) | ✅ | |||||
slug (slug) | ✅ | |||||
image (image) | ✅ | |||||
image_height (int) | ✅ | |||||
image_width (int) | ✅ | |||||
caption (text) | ✅ | |||||
alt (char) | ✅ | |||||
url (url) | ✅ | ✅ | ||||
source_name (text) | ✅ | |||||
source_author_name (text) | ✅ | |||||
source_author_url (url) | ✅ | |||||
commentary (text) | ✅ | |||||
quote (text) | ✅ |
Looking at the remaining fields, and in the context of collapsing these different models into one, I’m tempted to collapse some of these fields, but am worried about the loss of semantics.
I think Repost content might should actually be quote
, shared with Bookmark. Should Bookmark commentary
be content
? Should Photo caption
be content
? For Note and Article types, content
is The Content, but for Photo and Bookmark, caption
and commentary
are not part of a greater whole that is The Content. Is the loss of that nuance worth it for fewer fields?