34 lines
1.8 KiB
Go
34 lines
1.8 KiB
Go
package models
|
|
|
|
import (
|
|
"time"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// A note describes some user generated text content.
|
|
type Note struct {
|
|
ID string `gorm:"primarykey;type:uuid;default:gen_random_uuid()"` // Make ID a string (uuid) for other implementations
|
|
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"`
|
|
Creator User // The user that created this note
|
|
CreatorId string // Id of the creator user
|
|
Remote bool // Whether the note is originally a remote one and just "cached"
|
|
// Raw content of the note. So without additional formatting applied
|
|
// Might already have formatting applied beforehand from the origin server
|
|
RawContent string
|
|
ContentWarning *string // Content warnings of the note, if it contains any
|
|
RepliesTo *string // Url of the message this replies to
|
|
Quotes *string // url of the message this note quotes
|
|
AccessLevel NoteAccessLevel // Where to send this message to (public, home, followers, dm)
|
|
OriginServer string // Url of the origin server. Also the primary key for those
|
|
|
|
AttachmentRelations []NoteToAttachment `gorm:"foreignKey:NoteId"` // Attachments added on to this note
|
|
EmoteRelations []NoteToEmote `gorm:"foreignKey:NoteId"` // Emotes used in this note
|
|
PingRelations []NoteToPing `gorm:"foreignKey:NoteId"` // Pings/mentions this note performs
|
|
Tags []NoteTag `gorm:"foreignKey:NoteId"` // Tags this note contains
|
|
}
|