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;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 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"` }