linstrom/storage-new/models/Note.go
mstar 8ffd6d0050
Some checks are pending
/ test (push) Waiting to run
Fix enum type migration and more relations
- Fixed bad SQL for creating sql enum types
- Noted more relations, mostly x to media
2025-03-27 15:55:40 +01:00

41 lines
1.8 KiB
Go

package models
import (
"time"
"gorm.io/gorm"
)
// User created content, containing some message, maybe attachments,
// tags, pings or other extra things
//
// Data defined in extra structs (links are included at the bottom):
// - Attachments: models.NoteToAttachment
// - Emotes: models.NoteToEmote
// - Pings: models.NoteToPing
// - Tags: models.NoteTag
type Note struct {
ID string `gorm:"primarykey"` // 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
CreatorId string
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"`
EmoteRelations []NoteToEmote `gorm:"foreignKey:NoteId"`
PingRelations []NoteToPing `gorm:"foreignKey:NoteId"`
Tags []NoteTag `gorm:"foreignKey:NoteId"`
}