package storage import ( "time" "gorm.io/gorm" ) 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 string // Id of the author in the db, not the handle 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 Attachments []string `gorm:"serializer:json"` // Links to attachments Emotes []string `gorm:"serializer:json"` // Emotes used in that message RepliesTo *string // Url of the message this replies to Quotes *string // url of the message this note quotes Target NoteTarget // Where to send this message to (public, home, followers, dm) Pings []string `gorm:"serializer:json"` // Who is being tagged in this message. Also serves as DM targets OriginServer string // Url of the origin server. Also the primary key for those Tags []string `gorm:"serializer:json"` // Hashtags } func (s *Storage) FindNoteById(id string) (*Note, error) { // TODO: Implement me panic("not implemented") } func (s *Storage) FindNotesByFuzzyContent(fuzzyContent string) ([]Note, error) { // TODO: Implement me panic("not implemented") } func (s *Storage) FindNotesByAuthorHandle(handle string) ([]Note, error) { // TODO: Implement me panic("not implemented") } func (s *Storage) FindNotesByAuthorId(id string) ([]Note, error) { // TODO: Implement me panic("not implemented") } // Update, create, delete