All checks were successful
/ docker (push) Successful in 3m58s
Other software might use different IDs that aren't UUIDs, so shouldn't lock own IDs into UUID either
41 lines
1.7 KiB
Go
41 lines
1.7 KiB
Go
package models
|
|
|
|
import (
|
|
"database/sql"
|
|
"time"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// MediaMetadata contains metadata about some media file.
|
|
// These files are never stored directly by Linstrom.
|
|
// Instead, they are either stored on the remote server they originated from
|
|
// or an s3 bucket if uploaded to Linstrom.
|
|
type MediaMetadata struct {
|
|
ID string `gorm:"primarykey;default:gen_random_uuid()"` // The unique ID of this media file
|
|
CreatedAt time.Time // When this entry was created
|
|
UpdatedAt time.Time // When this entry was last updated
|
|
// When this entry was deleted (for soft deletions)
|
|
// Soft delete means that this entry still exists in the db, but gorm won't include it anymore unless specifically told to
|
|
// If not null, this entry is marked as deleted
|
|
DeletedAt gorm.DeletedAt `gorm:"index"`
|
|
// OwnedBy User
|
|
OwnedById sql.NullString // Account id this media belongs to
|
|
Remote bool // whether the attachment is a remote one
|
|
// Where the media is stored. Url
|
|
Location string
|
|
Type string // What media type this is following mime types, eg image/png
|
|
// Name of the file
|
|
// Could be <emote-name>.png, <server-name>.webp for example. Or the name the file was uploaded with
|
|
Name string
|
|
// Alternative description of the media file's content
|
|
AltText string
|
|
// Whether the media is to be blurred by default
|
|
Blurred bool
|
|
}
|
|
|
|
// TODO: Implement special handling for the linstrom URI type
|
|
// Linstrom URIs indicate resource either generated on the fly, like identicons,
|
|
// or embedded data, such as the default duck
|
|
// For external users, transform them into normal http URIs with a "special" path
|
|
const DefaultDuckLocationName = "linstrom://default-media"
|