linstrom/storage-new/models/RemoteServer.go

26 lines
1.2 KiB
Go

package models
import (
"database/sql"
"time"
"gorm.io/gorm"
)
// RemoteServer describes an ActivityPub server
// This includes self too
type RemoteServer struct {
gorm.Model
// The software the server is based on (Mastodon+Glitch => Mastodon, Sharkey => Misskey, Akoma => Plemora, etc)
ServerType ServerSoftwareType
SpecificType string // Specific software name (Sharkey, Iceshrimp, Akoma, etc)
Version string
Domain string // `gorm:"primaryKey"` // Domain the server exists under. Additional primary key
Name string // What the server wants to be known as (usually same as url)
Icon *MediaMetadata // The icon used by the server. May be empty
IconId sql.NullString // ID of a media file
IsSelf bool // Whether this server is yours truly
Metadata []RemoteServerMetadata // Metadata a server provides in its nodeinfo
LastInteraction time.Time // The last time the server was seen (sucessful outbound request or inbound message)
IsDead bool // Whether to consider a server dead and not bother sending anything anymore
}