Soft delete would work, but eventually there has to be something to turn a soft delete into a hard delete for the purpose of GDPR and friends.
I'm weakly anti-_at
. As a name, I don't feel it adds anything; just "created" being an integer tells me what it means. (If this were Postgres, we'd have actual time types, which would be even…
My original plan was to use an FTS5 table for tags, but doing things that way, I couldn't find a straightforward way to look up the tags given an emote ID without either including IDs in the FTS…
BLOB was because at first I had UUIDv7 binary as the ID format, and then I switched to TEXT opaque encoding for it to try FTS5 for tag searching, then I gave up on FTS5 because it would be…
it is probably perfectly ok to simply not have emotes themselves expire, only drop off lists. even millions of emotes will be maybe a few dollars per month in storage.
could probably use exclusively avif for emote images. seems to be supported everywhere these days.
I feel like in the long run there would be a lot to gain from a custom CDN. By nature, we'll have extra information about what emotes are likely to be used, since we keep track of recency in order…
emote model:
- id (random string)
- name
- media links: list of format, scale, id (hash of content)
- tags
- uploader user id
- attributions: list of people credited for the work, external…