gotosocial/internal/gtsmodel
kim 21bb324156
[chore] media and emoji refactoring (#3000)
* start updating media manager interface ready for storing attachments / emoji right away

* store emoji and media as uncached immediately, then (re-)cache on Processing{}.Load()

* remove now unused media workers

* fix tests and issues

* fix another test!

* fix emoji activitypub uri setting behaviour, fix remainder of test compilation issues

* fix more tests

* fix (most of) remaining tests, add debouncing to repeatedly failing media / emojis

* whoops, rebase issue

* remove kim's whacky experiments

* do some reshuffling, ensure emoji uri gets set

* ensure marked as not cached on cleanup

* tweaks to media / emoji processing to handle context canceled better

* ensure newly fetched emojis actually get set in returned slice

* use different varnames to be a bit more obvious

* move emoji refresh rate limiting to dereferencer

* add exported dereferencer functions for remote media, use these for recaching in processor

* add check for nil attachment in updateAttachment()

* remove unused emoji and media fields + columns

* see previous commit

* fix old migrations expecting image_updated_at to exists (from copies of old models)

* remove freshness checking code (seems to be broken...)

* fix error arg causing nil ptr exception

* finish documentating functions with comments, slight tweaks to media / emoji deref error logic

* remove some extra unneeded boolean checking

* finish writing documentation (code comments) for exported media manager methods

* undo changes to migration snapshot gtsmodels, updated failing migration to have its own snapshot

* move doesColumnExist() to util.go in migrations package
2024-06-26 16:01:16 +01:00
..
account.go
accountnote.go
accountsettings.go
accountstats.go
adminaction.go
application.go
block.go
client.go
domainallow.go
domainblock.go
domainpermission.go
emaildomainblock.go
emoji.go [chore] media and emoji refactoring (#3000) 2024-06-26 16:01:16 +01:00
emojicategory.go
filter.go [bugfix] Filter fixes (#2971) 2024-06-06 20:16:20 +02:00
follow.go
followrequest.go
headerfilter.go
instance.go
list.go
marker.go
mediaattachment.go [chore] media and emoji refactoring (#3000) 2024-06-26 16:01:16 +01:00
mention.go
move.go
notification.go
poll.go
README.md
report.go
routersession.go
rule.go
status.go
statusbookmark.go
statusfave.go
statusmute.go
tag.go
thread.go
threadmute.go
token.go
tombstone.go
user.go
usermute.go [feature] User muting (#2960) 2024-06-06 16:38:02 +00:00
workertask.go [feature] add worker task serialization logic (#2989) 2024-06-20 17:06:20 +00:00

A note on when we should set data structures linked to objects in the database to use the bun nullzero tag -- this should only be done if the member type is a pointer, or if the this primitive type is literally invalid with an empty value (e.g. media IDs which when empty signifies a null database value, compared to say an account note which when empty could mean either an empty note OR null database value).

Obviously it is a little more complex than this in practice, but keep it in mind!