mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-11-23 22:43:33 -06:00
[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
This commit is contained in:
parent
fa710057c8
commit
21bb324156
48 changed files with 2578 additions and 1926 deletions
|
|
@ -30,19 +30,18 @@ type Emoji struct {
|
|||
ImageStaticRemoteURL string `bun:",nullzero"` // Where can a static / non-animated version of this emoji be retrieved remotely? Null for local emojis.
|
||||
ImageURL string `bun:",nullzero"` // Where can this emoji be retrieved from the local server? Null for remote emojis.
|
||||
ImageStaticURL string `bun:",nullzero"` // Where can a static version of this emoji be retrieved from the local server? Null for remote emojis.
|
||||
ImagePath string `bun:",nullzero,notnull"` // Path of the emoji image in the server storage system.
|
||||
ImageStaticPath string `bun:",nullzero,notnull"` // Path of a static version of the emoji image in the server storage system
|
||||
ImageContentType string `bun:",nullzero,notnull"` // MIME content type of the emoji image
|
||||
ImageStaticContentType string `bun:",nullzero,notnull"` // MIME content type of the static version of the emoji image.
|
||||
ImageFileSize int `bun:",nullzero,notnull"` // Size of the emoji image file in bytes, for serving purposes.
|
||||
ImageStaticFileSize int `bun:",nullzero,notnull"` // Size of the static version of the emoji image file in bytes, for serving purposes.
|
||||
ImageUpdatedAt time.Time `bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // When was the emoji image last updated?
|
||||
ImagePath string `bun:",notnull"` // Path of the emoji image in the server storage system.
|
||||
ImageStaticPath string `bun:",notnull"` // Path of a static version of the emoji image in the server storage system
|
||||
ImageContentType string `bun:",notnull"` // MIME content type of the emoji image
|
||||
ImageStaticContentType string `bun:",notnull"` // MIME content type of the static version of the emoji image.
|
||||
ImageFileSize int `bun:",notnull"` // Size of the emoji image file in bytes, for serving purposes.
|
||||
ImageStaticFileSize int `bun:",notnull"` // Size of the static version of the emoji image file in bytes, for serving purposes.
|
||||
Disabled *bool `bun:",nullzero,notnull,default:false"` // Has a moderation action disabled this emoji from being shown?
|
||||
URI string `bun:",nullzero,notnull,unique"` // ActivityPub uri of this emoji. Something like 'https://example.org/emojis/1234'
|
||||
VisibleInPicker *bool `bun:",nullzero,notnull,default:true"` // Is this emoji visible in the admin emoji picker?
|
||||
Category *EmojiCategory `bun:"rel:belongs-to"` // In which emoji category is this emoji visible?
|
||||
CategoryID string `bun:"type:CHAR(26),nullzero"` // ID of the category this emoji belongs to.
|
||||
Cached *bool `bun:",nullzero,notnull,default:false"`
|
||||
Cached *bool `bun:",nullzero,notnull,default:false"` // whether emoji is cached in locally in gotosocial storage.
|
||||
}
|
||||
|
||||
// IsLocal returns true if the emoji is
|
||||
|
|
|
|||
|
|
@ -30,8 +30,8 @@ type MediaAttachment struct {
|
|||
StatusID string `bun:"type:CHAR(26),nullzero"` // ID of the status to which this is attached
|
||||
URL string `bun:",nullzero"` // Where can the attachment be retrieved on *this* server
|
||||
RemoteURL string `bun:",nullzero"` // Where can the attachment be retrieved on a remote server (empty for local media)
|
||||
Type FileType `bun:",nullzero,notnull"` // Type of file (image/gifv/audio/video/unknown)
|
||||
FileMeta FileMeta `bun:",embed:,nullzero,notnull"` // Metadata about the file
|
||||
Type FileType `bun:",notnull"` // Type of file (image/gifv/audio/video/unknown)
|
||||
FileMeta FileMeta `bun:",embed:,notnull"` // Metadata about the file
|
||||
AccountID string `bun:"type:CHAR(26),nullzero,notnull"` // To which account does this attachment belong
|
||||
Description string `bun:""` // Description of the attachment (for screenreaders)
|
||||
ScheduledStatusID string `bun:"type:CHAR(26),nullzero"` // To which scheduled status does this attachment belong
|
||||
|
|
@ -44,22 +44,30 @@ type MediaAttachment struct {
|
|||
Cached *bool `bun:",nullzero,notnull,default:false"` // Is this attachment currently cached by our instance?
|
||||
}
|
||||
|
||||
// IsLocal returns whether media attachment is local.
|
||||
func (m *MediaAttachment) IsLocal() bool {
|
||||
return m.RemoteURL == ""
|
||||
}
|
||||
|
||||
// IsRemote returns whether media attachment is remote.
|
||||
func (m *MediaAttachment) IsRemote() bool {
|
||||
return m.RemoteURL != ""
|
||||
}
|
||||
|
||||
// File refers to the metadata for the whole file
|
||||
type File struct {
|
||||
Path string `bun:",nullzero,notnull"` // Path of the file in storage.
|
||||
ContentType string `bun:",nullzero,notnull"` // MIME content type of the file.
|
||||
FileSize int `bun:",notnull"` // File size in bytes
|
||||
UpdatedAt time.Time `bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // When was the file last updated.
|
||||
Path string `bun:",notnull"` // Path of the file in storage.
|
||||
ContentType string `bun:",notnull"` // MIME content type of the file.
|
||||
FileSize int `bun:",notnull"` // File size in bytes
|
||||
}
|
||||
|
||||
// Thumbnail refers to a small image thumbnail derived from a larger image, video, or audio file.
|
||||
type Thumbnail struct {
|
||||
Path string `bun:",nullzero,notnull"` // Path of the file in storage.
|
||||
ContentType string `bun:",nullzero,notnull"` // MIME content type of the file.
|
||||
FileSize int `bun:",notnull"` // File size in bytes
|
||||
UpdatedAt time.Time `bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // When was the file last updated.
|
||||
URL string `bun:",nullzero"` // What is the URL of the thumbnail on the local server
|
||||
RemoteURL string `bun:",nullzero"` // What is the remote URL of the thumbnail (empty for local media)
|
||||
Path string `bun:",notnull"` // Path of the file in storage.
|
||||
ContentType string `bun:",notnull"` // MIME content type of the file.
|
||||
FileSize int `bun:",notnull"` // File size in bytes
|
||||
URL string `bun:",nullzero"` // What is the URL of the thumbnail on the local server
|
||||
RemoteURL string `bun:",nullzero"` // What is the remote URL of the thumbnail (empty for local media)
|
||||
}
|
||||
|
||||
// ProcessingStatus refers to how far along in the processing stage the attachment is.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue