Documentation ¶
Overview ¶
Package gtsmodel contains types used *internally* by GoToSocial and added/removed/selected from the database. These types should never be serialized and/or sent out via public APIs, as they contain sensitive information. The annotation used on these structs is for handling them via the bun-db ORM. See here for more info on bun model annotations: https://bun.uptrace.dev/guide/models.html
Index ¶
- type Account
- type AdminAccountAction
- type AdminActionType
- type Application
- type Block
- type Client
- type DomainBlock
- type EmailDomainBlock
- type Emoji
- type Field
- type File
- type FileMeta
- type FileType
- type Focus
- type Follow
- type FollowRequest
- type Instance
- type MediaAttachment
- type Mention
- type Notification
- type NotificationType
- type Original
- type ParseMentionFunc
- type ProcessingStatus
- type Relationship
- type RouterSession
- type Small
- type Status
- type StatusBookmark
- type StatusFave
- type StatusMute
- type StatusToEmoji
- type StatusToTag
- type Tag
- type Thumbnail
- type Token
- type User
- type Visibility
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Account ¶
type Account struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated Username string `validate:"required" bun:",nullzero,notnull,unique:userdomain"` // Username of the account, should just be a string of [a-zA-Z0-9_]. Can be added to domain to create the full username in the form “[username]@[domain]“ eg., “user_96@example.org“. Username and domain should be unique *with* each other Domain string `validate:"omitempty,fqdn" bun:",nullzero,unique:userdomain"` // Domain of the account, will be null if this is a local account, otherwise something like “example.org“. Should be unique with username. AvatarMediaAttachmentID string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // Database ID of the media attachment, if present AvatarMediaAttachment *MediaAttachment `validate:"-" bun:"rel:belongs-to"` // MediaAttachment corresponding to avatarMediaAttachmentID AvatarRemoteURL string `validate:"omitempty,url" bun:",nullzero"` // For a non-local account, where can the header be fetched? HeaderMediaAttachmentID string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // Database ID of the media attachment, if present HeaderMediaAttachment *MediaAttachment `validate:"-" bun:"rel:belongs-to"` // MediaAttachment corresponding to headerMediaAttachmentID HeaderRemoteURL string `validate:"omitempty,url" bun:",nullzero"` // For a non-local account, where can the header be fetched? DisplayName string `validate:"-" bun:""` // DisplayName for this account. Can be empty, then just the Username will be used for display purposes. Fields []Field `validate:"-"` // a key/value map of fields that this account has added to their profile Note string `validate:"-" bun:""` // A note that this account has on their profile (ie., the account's bio/description of themselves) NoteRaw string `validate:"-" bun:""` // The raw contents of .Note without conversion to HTML, only available when requester = target Memorial *bool `validate:"-" bun:",default:false"` // Is this a memorial account, ie., has the user passed away? AlsoKnownAs string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // This account is associated with x account id (TODO: migrate to be AlsoKnownAsID) MovedToAccountID string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // This account has moved this account id in the database Bot *bool `validate:"-" bun:",default:false"` // Does this account identify itself as a bot? Reason string `validate:"-" bun:""` // What reason was given for signing up when this account was created? Locked *bool `validate:"-" bun:",default:true"` // Does this account need an approval for new followers? Discoverable *bool `validate:"-" bun:",default:false"` // Should this account be shown in the instance's profile directory? Privacy Visibility `validate:"required_without=Domain,omitempty,oneof=public unlocked followers_only mutuals_only direct" bun:",nullzero"` // Default post privacy for this account Sensitive *bool `validate:"-" bun:",default:false"` // Set posts from this account to sensitive by default? Language string `validate:"omitempty,bcp47_language_tag" bun:",nullzero,notnull,default:'en'"` // What language does this account post in? StatusFormat string `validate:"required_without=Domain,omitempty,oneof=plain markdown" bun:",nullzero"` // What is the default format for statuses posted by this account (only for local accounts). URI string `validate:"required,url" bun:",nullzero,notnull,unique"` // ActivityPub URI for this account. URL string `validate:"required_without=Domain,omitempty,url" bun:",nullzero,unique"` // Web URL for this account's profile LastWebfingeredAt time.Time `validate:"required_with=Domain" bun:"type:timestamptz,nullzero"` // Last time this account was refreshed/located with webfinger. InboxURI string `validate:"required_without=Domain,omitempty,url" bun:",nullzero,unique"` // Address of this account's ActivityPub inbox, for sending activity to OutboxURI string `validate:"required_without=Domain,omitempty,url" bun:",nullzero,unique"` // Address of this account's activitypub outbox FollowingURI string `validate:"required_without=Domain,omitempty,url" bun:",nullzero,unique"` // URI for getting the following list of this account FollowersURI string `validate:"required_without=Domain,omitempty,url" bun:",nullzero,unique"` // URI for getting the followers list of this account FeaturedCollectionURI string `validate:"required_without=Domain,omitempty,url" bun:",nullzero,unique"` // URL for getting the featured collection list of this account ActorType string `validate:"oneof=Application Group Organization Person Service" bun:",nullzero,notnull"` // What type of activitypub actor is this account? PrivateKey *rsa.PrivateKey `validate:"required_without=Domain"` // Privatekey for validating activitypub requests, will only be defined for local accounts PublicKey *rsa.PublicKey `validate:"required"` // Publickey for encoding activitypub requests, will be defined for both local and remote accounts PublicKeyURI string `validate:"required,url" bun:",nullzero,notnull,unique"` // Web-reachable location of this account's public key SensitizedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero"` // When was this account set to have all its media shown as sensitive? SilencedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero"` // When was this account silenced (eg., statuses only visible to followers, not public)? SuspendedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero"` // When was this account suspended (eg., don't allow it to log in/post, don't accept media/posts from this account) HideCollections *bool `validate:"-" bun:",default:false"` // Hide this account's collections SuspensionOrigin string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // id of the database entry that caused this account to become suspended -- can be an account ID or a domain block ID }
Account represents either a local or a remote fediverse account, gotosocial or otherwise (mastodon, pleroma, etc).
type AdminAccountAction ¶ added in v0.2.2
type AdminAccountAction struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated AccountID string `validate:"required,ulid" bun:"type:CHAR(26),notnull,nullzero"` // Who performed this admin action. Account *Account `validate:"-" bun:"rel:has-one"` // Account corresponding to accountID TargetAccountID string `validate:"required,ulid" bun:"type:CHAR(26),notnull,nullzero"` // Who is the target of this action TargetAccount *Account `validate:"-" bun:"rel:has-one"` // Account corresponding to targetAccountID Text string `validate:"-" bun:""` // text explaining why this action was taken Type AdminActionType `validate:"oneof=disable silence suspend" bun:",nullzero,notnull"` // type of action that was taken SendEmail bool `validate:"-" bun:""` // should an email be sent to the account owner to explain what happened ReportID string `validate:",omitempty,ulid" bun:"type:CHAR(26),nullzero"` // id of a report connected to this action, if it exists }
AdminAccountAction models an action taken by an instance administrator on an account.
type AdminActionType ¶ added in v0.2.2
type AdminActionType string
AdminActionType describes a type of action taken on an entity by an admin
const ( // AdminActionDisable -- the account or application etc has been disabled but not deleted. AdminActionDisable AdminActionType = "disable" // AdminActionSilence -- the account or application etc has been silenced. AdminActionSilence AdminActionType = "silence" // AdminActionSuspend -- the account or application etc has been deleted. AdminActionSuspend AdminActionType = "suspend" )
type Application ¶
type Application struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated Name string `validate:"required" bun:",notnull"` // name of the application given when it was created (eg., 'tusky') Website string `validate:"omitempty,url" bun:",nullzero"` // website for the application given when it was created (eg., 'https://tusky.app') RedirectURI string `validate:"required,uri" bun:",nullzero,notnull"` // redirect uri requested by the application for oauth2 flow ClientID string `validate:"required,ulid" bun:"type:CHAR(26),nullzero,notnull"` // id of the associated oauth client entity in the db ClientSecret string `validate:"required,uuid" bun:",nullzero,notnull"` // secret of the associated oauth client entity in the db Scopes string `validate:"required" bun:",notnull"` // scopes requested when this app was created }
Application represents an application that can perform actions on behalf of a user. It is used to authorize tokens etc, and is associated with an oauth client id in the database.
type Block ¶
type Block struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated URI string `validate:"required,url" bun:",notnull,nullzero,unique"` // ActivityPub uri of this block. AccountID string `validate:"required,ulid" bun:"type:CHAR(26),unique:blocksrctarget,notnull,nullzero"` // Who does this block originate from? Account *Account `validate:"-" bun:"rel:belongs-to"` // Account corresponding to accountID TargetAccountID string `validate:"required,ulid" bun:"type:CHAR(26),unique:blocksrctarget,notnull,nullzero"` // Who is the target of this block ? TargetAccount *Account `validate:"-" bun:"rel:belongs-to"` // Account corresponding to targetAccountID }
Block refers to the blocking of one account by another.
type Client ¶
type Client struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated Secret string `validate:"required,uuid" bun:",nullzero,notnull"` // secret generated when client was created Domain string `validate:"required,uri" bun:",nullzero,notnull"` // domain requested for client UserID string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // id of the user that this client acts on behalf of }
Client is a wrapper for OAuth client details.
type DomainBlock ¶
type DomainBlock struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated Domain string `validate:"required,fqdn" bun:",nullzero,notnull"` // domain to block. Eg. 'whatever.com' CreatedByAccountID string `validate:"required,ulid" bun:"type:CHAR(26),nullzero,notnull"` // Account ID of the creator of this block CreatedByAccount *Account `validate:"-" bun:"rel:belongs-to"` // Account corresponding to createdByAccountID PrivateComment string `validate:"-" bun:""` // Private comment on this block, viewable to admins PublicComment string `validate:"-" bun:""` // Public comment on this block, viewable (optionally) by everyone Obfuscate *bool `validate:"-" bun:",nullzero,notnull,default:false"` // whether the domain name should appear obfuscated when displaying it publicly SubscriptionID string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // if this block was created through a subscription, what's the subscription ID? }
DomainBlock represents a federation block against a particular domain
type EmailDomainBlock ¶
type EmailDomainBlock struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated Domain string `validate:"required,fqdn" bun:",nullzero,notnull"` // Email domain to block. Eg. 'gmail.com' or 'hotmail.com' CreatedByAccountID string `validate:"required,ulid" bun:"type:CHAR(26),nullzero,notnull"` // Account ID of the creator of this block CreatedByAccount *Account `validate:"-" bun:"rel:belongs-to"` // Account corresponding to createdByAccountID }
EmailDomainBlock represents a domain that the server should automatically reject sign-up requests from.
type Emoji ¶
type Emoji struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated Shortcode string `validate:"required" bun:",nullzero,notnull,unique:shortcodedomain"` // String shortcode for this emoji -- the part that's between colons. This should be lowercase a-z_ eg., 'blob_hug' 'purple_heart' Must be unique with domain. Domain string `validate:"omitempty,fqdn" bun:",notnull,default:'',unique:shortcodedomain"` // Origin domain of this emoji, eg 'example.org', 'queer.party'. empty string for local emojis. ImageRemoteURL string `validate:"required_without=ImageURL,omitempty,url" bun:",nullzero"` // Where can this emoji be retrieved remotely? Null for local emojis. ImageStaticRemoteURL string `validate:"required_without=ImageStaticURL,omitempty,url" bun:",nullzero"` // Where can a static / non-animated version of this emoji be retrieved remotely? Null for local emojis. ImageURL string `validate:"required_without=ImageRemoteURL,required_without=Domain,omitempty,url" bun:",nullzero"` // Where can this emoji be retrieved from the local server? Null for remote emojis. ImageStaticURL string `validate:"required_without=ImageStaticRemoteURL,required_without=Domain,omitempty,url" bun:",nullzero"` // Where can a static version of this emoji be retrieved from the local server? Null for remote emojis. ImagePath string `validate:"required,file" bun:",nullzero,notnull"` // Path of the emoji image in the server storage system. ImageStaticPath string `validate:"required,file" bun:",nullzero,notnull"` // Path of a static version of the emoji image in the server storage system ImageContentType string `validate:"required" bun:",nullzero,notnull"` // MIME content type of the emoji image ImageStaticContentType string `validate:"required" bun:",nullzero,notnull"` // MIME content type of the static version of the emoji image. ImageFileSize int `validate:"required,min=1" bun:",nullzero,notnull"` // Size of the emoji image file in bytes, for serving purposes. ImageStaticFileSize int `validate:"required,min=1" bun:",nullzero,notnull"` // Size of the static version of the emoji image file in bytes, for serving purposes. ImageUpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // When was the emoji image last updated? Disabled *bool `validate:"-" bun:",nullzero,notnull,default:false"` // Has a moderation action disabled this emoji from being shown? URI string `validate:"url" bun:",nullzero,notnull,unique"` // ActivityPub uri of this emoji. Something like 'https://example.org/emojis/1234' VisibleInPicker *bool `validate:"-" bun:",nullzero,notnull,default:true"` // Is this emoji visible in the admin emoji picker? CategoryID string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // In which emoji category is this emoji visible? }
Emoji represents a custom emoji that's been uploaded through the admin UI, and is useable by instance denizens.
type Field ¶
type Field struct { Name string `validate:"required"` // Name of this field. Value string `validate:"required"` // Value of this field. VerifiedAt time.Time `validate:"-" bun:",nullzero"` // This field was verified at (optional). }
Field represents a key value field on an account, for things like pronouns, website, etc. VerifiedAt is optional, to be used only if Value is a URL to a webpage that contains the username of the user.
type File ¶
type File struct { Path string `validate:"required,file" bun:",nullzero,notnull"` // Path of the file in storage. ContentType string `validate:"required" bun:",nullzero,notnull"` // MIME content type of the file. FileSize int `validate:"required" bun:",notnull"` // File size in bytes UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // When was the file last updated. }
File refers to the metadata for the whole file
type FileMeta ¶
type FileMeta struct { Original Original `validate:"required" bun:"embed:original_"` Small Small `bun:"embed:small_"` Focus Focus `bun:"embed:focus_"` }
FileMeta describes metadata about the actual contents of the file.
type FileType ¶
type FileType string
FileType refers to the file type of the media attaachment.
const ( FileTypeImage FileType = "Image" // FileTypeImage is for jpegs and pngs FileTypeGif FileType = "Gif" // FileTypeGif is for native gifs and soundless videos that have been converted to gifs FileTypeAudio FileType = "Audio" // FileTypeAudio is for audio-only files (no video) FileTypeVideo FileType = "Video" // FileTypeVideo is for files with audio + visual FileTypeUnknown FileType = "Unknown" // FileTypeUnknown is for unknown file types (surprise surprise!) )
MediaAttachment file types.
type Focus ¶
type Focus struct { X float32 `validate:"omitempty,max=1,min=-1"` Y float32 `validate:"omitempty,max=1,min=-1"` }
Focus describes the 'center' of the image for display purposes. X and Y should each be between -1 and 1
type Follow ¶
type Follow struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated URI string `validate:"required,url" bun:",notnull,nullzero,unique"` // ActivityPub uri of this follow. AccountID string `validate:"required,ulid" bun:"type:CHAR(26),unique:srctarget,notnull,nullzero"` // Who does this follow originate from? Account *Account `validate:"-" bun:"rel:belongs-to"` // Account corresponding to accountID TargetAccountID string `validate:"required,ulid" bun:"type:CHAR(26),unique:srctarget,notnull,nullzero"` // Who is the target of this follow ? TargetAccount *Account `validate:"-" bun:"rel:belongs-to"` // Account corresponding to targetAccountID ShowReblogs *bool `validate:"-" bun:",nullzero,notnull,default:true"` // Does this follow also want to see reblogs and not just posts? Notify *bool `validate:"-" bun:",nullzero,notnull,default:false"` // does the following account want to be notified when the followed account posts? }
Follow represents one account following another, and the metadata around that follow.
type FollowRequest ¶
type FollowRequest struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated URI string `validate:"required,url" bun:",notnull,nullzero,unique"` // ActivityPub uri of this follow (request). AccountID string `validate:"required,ulid" bun:"type:CHAR(26),unique:frsrctarget,notnull,nullzero"` // Who does this follow request originate from? Account *Account `validate:"-" bun:"rel:belongs-to"` // Account corresponding to accountID TargetAccountID string `validate:"required,ulid" bun:"type:CHAR(26),unique:frsrctarget,notnull,nullzero"` // Who is the target of this follow request? TargetAccount *Account `validate:"-" bun:"rel:belongs-to"` // Account corresponding to targetAccountID ShowReblogs *bool `validate:"-" bun:",nullzero,notnull,default:true"` // Does this follow also want to see reblogs and not just posts? Notify *bool `validate:"-" bun:",nullzero,notnull,default:false"` // does the following account want to be notified when the followed account posts? }
FollowRequest represents one account requesting to follow another, and the metadata around that request.
type Instance ¶
type Instance struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated Domain string `validate:"required,fqdn" bun:",nullzero,notnull,unique"` // Instance domain eg example.org Title string `validate:"-" bun:""` // Title of this instance as it would like to be displayed. URI string `validate:"required,url" bun:",nullzero,notnull,unique"` // base URI of this instance eg https://example.org SuspendedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero"` // When was this instance suspended, if at all? DomainBlockID string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // ID of any existing domain block for this instance in the database DomainBlock *DomainBlock `validate:"-" bun:"rel:belongs-to"` // Domain block corresponding to domainBlockID ShortDescription string `validate:"-" bun:""` // Short description of this instance Description string `validate:"-" bun:""` // Longer description of this instance Terms string `validate:"-" bun:""` // Terms and conditions of this instance ContactEmail string `validate:"omitempty,email" bun:""` // Contact email address for this instance ContactAccountUsername string `validate:"required_with=ContactAccountID" bun:",nullzero"` // Username of the contact account for this instance ContactAccountID string `validate:"required_with=ContactAccountUsername,omitempty,ulid" bun:"type:CHAR(26),nullzero"` // Contact account ID in the database for this instance ContactAccount *Account `validate:"-" bun:"rel:belongs-to"` // account corresponding to contactAccountID Reputation int64 `validate:"-" bun:",notnull,default:0"` // Reputation score of this instance Version string `validate:"-" bun:",nullzero"` // Version of the software used on this instance }
Instance represents a federated instance, either local or remote.
type MediaAttachment ¶
type MediaAttachment struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated StatusID string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // ID of the status to which this is attached URL string `validate:"required_without=RemoteURL,omitempty,url" bun:",nullzero"` // Where can the attachment be retrieved on *this* server RemoteURL string `validate:"required_without=URL,omitempty,url" bun:",nullzero"` // Where can the attachment be retrieved on a remote server (empty for local media) Type FileType `validate:"oneof=Image Gif Audio Video Unknown" bun:",nullzero,notnull"` // Type of file (image/gif/audio/video) FileMeta FileMeta `validate:"required" bun:",embed:filemeta_,nullzero,notnull"` // Metadata about the file AccountID string `validate:"required,ulid" bun:"type:CHAR(26),nullzero,notnull"` // To which account does this attachment belong Account *Account `validate:"-" bun:"rel:belongs-to,join:account_id=id"` // Account corresponding to accountID Description string `validate:"-" bun:""` // Description of the attachment (for screenreaders) ScheduledStatusID string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // To which scheduled status does this attachment belong Blurhash string `validate:"required_if=Type Image,required_if=Type Gif,required_if=Type Video" bun:",nullzero"` // What is the generated blurhash of this attachment Processing ProcessingStatus `validate:"oneof=0 1 2 666" bun:",notnull,default:2"` // What is the processing status of this attachment File File `validate:"required" bun:",embed:file_,notnull,nullzero"` // metadata for the whole file Thumbnail Thumbnail `validate:"required" bun:",embed:thumbnail_,notnull,nullzero"` // small image thumbnail derived from a larger image, video, or audio file. Avatar *bool `validate:"-" bun:",nullzero,notnull,default:false"` // Is this attachment being used as an avatar? Header *bool `validate:"-" bun:",nullzero,notnull,default:false"` // Is this attachment being used as a header? Cached *bool `validate:"-" bun:",nullzero,notnull,default:false"` // Is this attachment currently cached by our instance? }
MediaAttachment represents a user-uploaded media attachment: an image/video/audio/gif that is somewhere in storage and that can be retrieved and served by the router.
type Mention ¶
type Mention struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated StatusID string `validate:"required,ulid" bun:"type:CHAR(26),nullzero,notnull"` // ID of the status this mention originates from Status *Status `validate:"-" bun:"rel:belongs-to"` // status referred to by statusID OriginAccountID string `validate:"required,ulid" bun:"type:CHAR(26),nullzero,notnull"` // ID of the mention creator account OriginAccountURI string `validate:"url" bun:",nullzero,notnull"` // ActivityPub URI of the originator/creator of the mention OriginAccount *Account `validate:"-" bun:"rel:belongs-to"` // account referred to by originAccountID TargetAccountID string `validate:"required,ulid" bun:"type:CHAR(26),nullzero,notnull"` // Mention target/receiver account ID TargetAccount *Account `validate:"-" bun:"rel:belongs-to"` // account referred to by targetAccountID Silent *bool `validate:"-" bun:",nullzero,notnull,default:false"` // Prevent this mention from generating a notification? // NameString is for putting in the namestring of the mentioned user // before the mention is dereferenced. Should be in a form along the lines of: // @whatever_username@example.org // // This will not be put in the database, it's just for convenience. NameString string `validate:"-" bun:"-"` // TargetAccountURI is the AP ID (uri) of the user mentioned. // // This will not be put in the database, it's just for convenience. TargetAccountURI string `validate:"-" bun:"-"` // TargetAccountURL is the web url of the user mentioned. // // This will not be put in the database, it's just for convenience. TargetAccountURL string `validate:"-" bun:"-"` }
Mention refers to the 'tagging' or 'mention' of a user within a status.
type Notification ¶
type Notification struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated // when was item created NotificationType NotificationType `validate:"oneof=follow follow_request mention reblog favourite poll status" bun:",nullzero,notnull"` // Type of this notification TargetAccountID string `validate:"ulid" bun:"type:CHAR(26),nullzero,notnull"` // Which account does this notification target (ie., who will receive the notification?) TargetAccount *Account `validate:"-" bun:"rel:belongs-to"` // Which account performed the action that created this notification? OriginAccountID string `validate:"ulid" bun:"type:CHAR(26),nullzero,notnull"` // ID of the account that performed the action that created the notification. OriginAccount *Account `validate:"-" bun:"rel:belongs-to"` // Account corresponding to originAccountID StatusID string `` // If the notification pertains to a status, what is the database ID of that status? /* 202-byte string literal not displayed */ Status *Status `validate:"-" bun:"rel:belongs-to"` // Status corresponding to statusID Read *bool `validate:"-" bun:",nullzero,notnull,default:false"` // Notification has been seen/read }
Notification models an alert/notification sent to an account about something like a reblog, like, new follow request, etc.
type NotificationType ¶
type NotificationType string
NotificationType describes the reason/type of this notification.
const ( NotificationFollow NotificationType = "follow" // NotificationFollow -- someone followed you NotificationFollowRequest NotificationType = "follow_request" // NotificationFollowRequest -- someone requested to follow you NotificationMention NotificationType = "mention" // NotificationMention -- someone mentioned you in their status NotificationReblog NotificationType = "reblog" // NotificationReblog -- someone boosted one of your statuses NotificationFave NotificationType = "favourite" // NotificationFave -- someone faved/liked one of your statuses NotificationPoll NotificationType = "poll" // NotificationPoll -- a poll you voted in or created has ended NotificationStatus NotificationType = "status" // NotificationStatus -- someone you enabled notifications for has posted a status. )
Notification Types
type Original ¶
type Original struct { Width int `validate:"required_with=Height Size Aspect"` // width in pixels Height int `validate:"required_with=Width Size Aspect"` // height in pixels Size int `validate:"required_with=Width Height Aspect"` // size in pixels (width * height) Aspect float64 `validate:"required_with=Widhth Height Size"` // aspect ratio (width / height) }
Original can be used for original metadata for any media type
type ParseMentionFunc ¶ added in v0.2.2
type ParseMentionFunc func(ctx context.Context, targetAccount string, originAccountID string, statusID string) (*Mention, error)
ParseMentionFunc describes a function that takes a lowercase account name in the form "@test@whatever.example.org" for a remote account, or "@test" for a local account, and returns a fully populated mention for that account, with the given origin status ID and origin account ID.
If the account is remote and not yet found in the database, then ParseMentionFunc will try to webfinger the remote account and put it in the database before returning.
Mentions generated by this function are not put in the database, that's still up to the caller to do.
type ProcessingStatus ¶
type ProcessingStatus int
ProcessingStatus refers to how far along in the processing stage the attachment is.
const ( ProcessingStatusReceived ProcessingStatus = 0 // ProcessingStatusReceived indicates the attachment has been received and is awaiting processing. No thumbnail available yet. ProcessingStatusProcessing ProcessingStatus = 1 // ProcessingStatusProcessing indicates the attachment is currently being processed. Thumbnail is available but full media is not. ProcessingStatusProcessed ProcessingStatus = 2 // ProcessingStatusProcessed indicates the attachment has been fully processed and is ready to be served. ProcessingStatusError ProcessingStatus = 666 // ProcessingStatusError indicates something went wrong processing the attachment and it won't be tried again--these can be deleted. )
MediaAttachment processing states.
type Relationship ¶
type Relationship struct { ID string // The account id. Following bool // Are you following this user? ShowingReblogs bool // Are you receiving this user's boosts in your home timeline? Notifying bool // Have you enabled notifications for this user? FollowedBy bool // Are you followed by this user? Blocking bool // Are you blocking this user? BlockedBy bool // Is this user blocking you? Muting bool // Are you muting this user? MutingNotifications bool // Are you muting notifications from this user? Requested bool // Do you have a pending follow request for this user? DomainBlocking bool // Are you blocking this user's domain? Endorsed bool // Are you featuring this user on your profile? Note string // Your note on this account. }
Relationship describes a requester's relationship with another account.
type RouterSession ¶
type RouterSession struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated Auth []byte `validate:"required,len=32" bun:"type:bytea,notnull,nullzero"` Crypt []byte `validate:"required,len=32" bun:"type:bytea,notnull,nullzero"` }
RouterSession is used to store and retrieve settings for a router session.
type Small ¶
type Small struct { Width int `validate:"required_with=Height Size Aspect"` // width in pixels Height int `validate:"required_with=Width Size Aspect"` // height in pixels Size int `validate:"required_with=Width Height Aspect"` // size in pixels (width * height) Aspect float64 `validate:"required_with=Widhth Height Size"` // aspect ratio (width / height) }
Small can be used for a thumbnail of any media type
type Status ¶
type Status struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated URI string `validate:"required,url" bun:",unique,nullzero,notnull"` // activitypub URI of this status URL string `validate:"url" bun:",nullzero"` // web url for viewing this status Content string `validate:"-" bun:""` // content of this status; likely html-formatted but not guaranteed AttachmentIDs []string `validate:"dive,ulid" bun:"attachments,array"` // Database IDs of any media attachments associated with this status Attachments []*MediaAttachment `validate:"-" bun:"attached_media,rel:has-many"` // Attachments corresponding to attachmentIDs TagIDs []string `validate:"dive,ulid" bun:"tags,array"` // Database IDs of any tags used in this status Tags []*Tag `validate:"-" bun:"attached_tags,m2m:status_to_tags"` // Tags corresponding to tagIDs. https://bun.uptrace.dev/guide/relations.html#many-to-many-relation MentionIDs []string `validate:"dive,ulid" bun:"mentions,array"` // Database IDs of any mentions in this status Mentions []*Mention `validate:"-" bun:"attached_mentions,rel:has-many"` // Mentions corresponding to mentionIDs EmojiIDs []string `validate:"dive,ulid" bun:"emojis,array"` // Database IDs of any emojis used in this status Emojis []*Emoji `validate:"-" bun:"attached_emojis,m2m:status_to_emojis"` // Emojis corresponding to emojiIDs. https://bun.uptrace.dev/guide/relations.html#many-to-many-relation Local *bool `validate:"-" bun:",nullzero,notnull,default:false"` // is this status from a local account? AccountID string `validate:"required,ulid" bun:"type:CHAR(26),nullzero,notnull"` // which account posted this status? Account *Account `validate:"-" bun:"rel:belongs-to"` // account corresponding to accountID AccountURI string `validate:"required,url" bun:",nullzero,notnull"` // activitypub uri of the owner of this status InReplyToID string `validate:"required_with=InReplyToURI InReplyToAccountID,omitempty,ulid" bun:"type:CHAR(26),nullzero"` // id of the status this status replies to InReplyToURI string `validate:"required_with=InReplyToID InReplyToAccountID,omitempty,url" bun:",nullzero"` // activitypub uri of the status this status is a reply to InReplyToAccountID string `validate:"required_with=InReplyToID InReplyToURI,omitempty,ulid" bun:"type:CHAR(26),nullzero"` // id of the account that this status replies to InReplyTo *Status `validate:"-" bun:"-"` // status corresponding to inReplyToID InReplyToAccount *Account `validate:"-" bun:"rel:belongs-to"` // account corresponding to inReplyToAccountID BoostOfID string `validate:"required_with=BoostOfAccountID,omitempty,ulid" bun:"type:CHAR(26),nullzero"` // id of the status this status is a boost of BoostOfAccountID string `validate:"required_with=BoostOfID,omitempty,ulid" bun:"type:CHAR(26),nullzero"` // id of the account that owns the boosted status BoostOf *Status `validate:"-" bun:"-"` // status that corresponds to boostOfID BoostOfAccount *Account `validate:"-" bun:"rel:belongs-to"` // account that corresponds to boostOfAccountID ContentWarning string `validate:"-" bun:",nullzero"` // cw string for this status Visibility Visibility `validate:"oneof=public unlocked followers_only mutuals_only direct" bun:",nullzero,notnull"` // visibility entry for this status Sensitive *bool `validate:"-" bun:",nullzero,notnull,default:false"` // mark the status as sensitive? Language string `validate:"-" bun:",nullzero"` // what language is this status written in? CreatedWithApplicationID string `validate:"required_if=Local true,omitempty,ulid" bun:"type:CHAR(26),nullzero"` // Which application was used to create this status? CreatedWithApplication *Application `validate:"-" bun:"rel:belongs-to"` // application corresponding to createdWithApplicationID ActivityStreamsType string `validate:"required" bun:",nullzero,notnull"` // What is the activitystreams type of this status? See: https://www.w3.org/TR/activitystreams-vocabulary/#object-types. Will probably almost always be Note but who knows!. Text string `validate:"-" bun:""` // Original text of the status without formatting Pinned *bool `validate:"-" bun:",nullzero,notnull,default:false"` // Has this status been pinned by its owner? Federated *bool `validate:"-" bun:",notnull"` // This status will be federated beyond the local timeline(s) Boostable *bool `validate:"-" bun:",notnull"` // This status can be boosted/reblogged Replyable *bool `validate:"-" bun:",notnull"` // This status can be replied to Likeable *bool `validate:"-" bun:",notnull"` // This status can be liked/faved }
Status represents a user-created 'post' or 'status' in the database, either remote or local
func (*Status) GetAccountID ¶ added in v0.2.0
func (*Status) GetBoostOfAccountID ¶ added in v0.2.0
func (*Status) GetBoostOfID ¶ added in v0.2.0
type StatusBookmark ¶
type StatusBookmark struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated AccountID string `validate:"required,ulid" bun:"type:CHAR(26),nullzero,notnull"` // id of the account that created ('did') the bookmark Account *Account `validate:"-" bun:"rel:belongs-to"` // account that created the bookmark TargetAccountID string `validate:"required,ulid" bun:"type:CHAR(26),nullzero,notnull"` // id the account owning the bookmarked status TargetAccount *Account `validate:"-" bun:"rel:belongs-to"` // account owning the bookmarked status StatusID string `validate:"required,ulid" bun:"type:CHAR(26),nullzero,notnull"` // database id of the status that has been bookmarked Status *Status `validate:"-" bun:"rel:belongs-to"` // the bookmarked status }
StatusBookmark refers to one account having a 'bookmark' of the status of another account.
type StatusFave ¶
type StatusFave struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated AccountID string `validate:"required,ulid" bun:"type:CHAR(26),nullzero,notnull"` // id of the account that created ('did') the fave Account *Account `validate:"-" bun:"rel:belongs-to"` // account that created the fave TargetAccountID string `validate:"required,ulid" bun:"type:CHAR(26),nullzero,notnull"` // id the account owning the faved status TargetAccount *Account `validate:"-" bun:"rel:belongs-to"` // account owning the faved status StatusID string `validate:"required,ulid" bun:"type:CHAR(26),nullzero,notnull"` // database id of the status that has been 'faved' Status *Status `validate:"-" bun:"rel:belongs-to"` // the faved status URI string `validate:"required,url" bun:",nullzero,notnull"` // ActivityPub URI of this fave }
StatusFave refers to a 'fave' or 'like' in the database, from one account, targeting the status of another account
type StatusMute ¶
type StatusMute struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated AccountID string `validate:"required,ulid" bun:"type:CHAR(26),nullzero,notnull"` // id of the account that created ('did') the mute Account *Account `validate:"-" bun:"rel:belongs-to"` // pointer to the account specified by accountID TargetAccountID string `validate:"required,ulid" bun:"type:CHAR(26),nullzero,notnull"` // id the account owning the muted status (can be the same as accountID) TargetAccount *Account `validate:"-" bun:"rel:belongs-to"` // pointer to the account specified by targetAccountID StatusID string `validate:"required,ulid" bun:"type:CHAR(26),nullzero,notnull"` // database id of the status that has been muted Status *Status `validate:"-" bun:"rel:belongs-to"` // pointer to the muted status specified by statusID }
StatusMute refers to one account having muted the status of another account or its own.
type StatusToEmoji ¶
type StatusToEmoji struct { StatusID string `validate:"ulid,required" bun:"type:CHAR(26),unique:statusemoji,nullzero,notnull"` Status *Status `validate:"-" bun:"rel:belongs-to"` EmojiID string `validate:"ulid,required" bun:"type:CHAR(26),unique:statusemoji,nullzero,notnull"` Emoji *Emoji `validate:"-" bun:"rel:belongs-to"` }
StatusToEmoji is an intermediate struct to facilitate the many2many relationship between a status and one or more emojis.
type StatusToTag ¶
type StatusToTag struct { StatusID string `validate:"ulid,required" bun:"type:CHAR(26),unique:statustag,nullzero,notnull"` Status *Status `validate:"-" bun:"rel:belongs-to"` TagID string `validate:"ulid,required" bun:"type:CHAR(26),unique:statustag,nullzero,notnull"` Tag *Tag `validate:"-" bun:"rel:belongs-to"` }
StatusToTag is an intermediate struct to facilitate the many2many relationship between a status and one or more tags.
type Tag ¶
type Tag struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated URL string `validate:"required,url" bun:",nullzero,notnull"` // Href/web address of this tag, eg https://example.org/tags/somehashtag Name string `validate:"required" bun:",unique,nullzero,notnull"` // name of this tag -- the tag without the hash part FirstSeenFromAccountID string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // Which account ID is the first one we saw using this tag? Useable *bool `validate:"-" bun:",nullzero,notnull,default:true"` // can our instance users use this tag? Listable *bool `validate:"-" bun:",nullzero,notnull,default:true"` // can our instance users look up this tag? LastStatusAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was this tag last used? }
Tag represents a hashtag for gathering public statuses together.
type Thumbnail ¶
type Thumbnail struct { Path string `validate:"required,file" bun:",nullzero,notnull"` // Path of the file in storage. ContentType string `validate:"required" bun:",nullzero,notnull"` // MIME content type of the file. FileSize int `validate:"required" bun:",notnull"` // File size in bytes UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // When was the file last updated. URL string `validate:"required_without=RemoteURL,omitempty,url" bun:",nullzero"` // What is the URL of the thumbnail on the local server RemoteURL string `validate:"required_without=URL,omitempty,url" bun:",nullzero"` // What is the remote URL of the thumbnail (empty for local media) }
Thumbnail refers to a small image thumbnail derived from a larger image, video, or audio file.
type Token ¶
type Token struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated ClientID string `validate:"required,ulid" bun:"type:CHAR(26),nullzero,notnull"` // ID of the client who owns this token UserID string `validate:"required,ulid" bun:"type:CHAR(26),nullzero"` // ID of the user who owns this token RedirectURI string `validate:"required,uri" bun:",nullzero,notnull"` // Oauth redirect URI for this token Scope string `validate:"required" bun:",notnull"` // Oauth scope Code string `validate:"-" bun:",pk,nullzero,notnull,default:''"` // Code, if present CodeChallenge string `validate:"-" bun:",nullzero"` // Code challenge, if code present CodeChallengeMethod string `validate:"-" bun:",nullzero"` // Code challenge method, if code present CodeCreateAt time.Time `validate:"required_with=Code" bun:"type:timestamptz,nullzero"` // Code created time, if code present CodeExpiresAt time.Time `validate:"-" bun:"type:timestamptz,nullzero"` // Code expires at -- null means the code never expires Access string `validate:"-" bun:",pk,nullzero,notnull,default:''"` // User level access token, if present AccessCreateAt time.Time `validate:"required_with=Access" bun:"type:timestamptz,nullzero"` // User level access token created time, if access present AccessExpiresAt time.Time `validate:"-" bun:"type:timestamptz,nullzero"` // User level access token expires at -- null means the token never expires Refresh string `validate:"-" bun:",pk,nullzero,notnull,default:''"` // Refresh token, if present RefreshCreateAt time.Time `validate:"required_with=Refresh" bun:"type:timestamptz,nullzero"` // Refresh created at, if refresh present RefreshExpiresAt time.Time `validate:"-" bun:"type:timestamptz,nullzero"` // Refresh expires at -- null means the refresh token never expires }
Token is a translation of the gotosocial token with the ExpiresIn fields replaced with ExpiresAt.
type User ¶
type User struct { ID string `validate:"required,ulid" bun:"type:CHAR(26),pk,nullzero,notnull,unique"` // id of this item in the database CreatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item created UpdatedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero,notnull,default:current_timestamp"` // when was item last updated Email string `validate:"required_with=ConfirmedAt" bun:",nullzero,unique"` // confirmed email address for this user, this should be unique -- only one email address registered per instance, multiple users per email are not supported AccountID string `validate:"required,ulid" bun:"type:CHAR(26),nullzero,notnull,unique"` // The id of the local gtsmodel.Account entry for this user. Account *Account `validate:"-" bun:"rel:belongs-to"` // Pointer to the account of this user that corresponds to AccountID. EncryptedPassword string `validate:"required" bun:",nullzero,notnull"` // The encrypted password of this user, generated using https://pkg.go.dev/golang.org/x/crypto/bcrypt#GenerateFromPassword. A salt is included so we're safe against 🌈 tables. SignUpIP net.IP `validate:"-" bun:",nullzero"` // From what IP was this user created? CurrentSignInAt time.Time `validate:"-" bun:"type:timestamptz,nullzero"` // When did the user sign in with their current session. CurrentSignInIP net.IP `validate:"-" bun:",nullzero"` // What's the most recent IP of this user LastSignInAt time.Time `validate:"-" bun:"type:timestamptz,nullzero"` // When did this user last sign in? LastSignInIP net.IP `validate:"-" bun:",nullzero"` // What's the previous IP of this user? SignInCount int `validate:"min=0" bun:",notnull,default:0"` // How many times has this user signed in? InviteID string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // id of the user who invited this user (who let this joker in?) ChosenLanguages []string `validate:"-" bun:",nullzero"` // What languages does this user want to see? FilteredLanguages []string `validate:"-" bun:",nullzero"` // What languages does this user not want to see? Locale string `validate:"-" bun:",nullzero"` // In what timezone/locale is this user located? CreatedByApplicationID string `validate:"omitempty,ulid" bun:"type:CHAR(26),nullzero"` // Which application id created this user? See gtsmodel.Application CreatedByApplication *Application `validate:"-" bun:"rel:belongs-to"` // Pointer to the application corresponding to createdbyapplicationID. LastEmailedAt time.Time `validate:"-" bun:"type:timestamptz,nullzero"` // When was this user last contacted by email. ConfirmationToken string `validate:"required_with=ConfirmationSentAt" bun:",nullzero"` // What confirmation token did we send this user/what are we expecting back? ConfirmationSentAt time.Time `validate:"required_with=ConfirmationToken" bun:"type:timestamptz,nullzero"` // When did we send email confirmation to this user? ConfirmedAt time.Time `validate:"required_with=Email" bun:"type:timestamptz,nullzero"` // When did the user confirm their email address UnconfirmedEmail string `validate:"required_without=Email" bun:",nullzero"` // Email address that hasn't yet been confirmed Moderator *bool `validate:"-" bun:",nullzero,notnull,default:false"` // Is this user a moderator? Admin *bool `validate:"-" bun:",nullzero,notnull,default:false"` // Is this user an admin? Disabled *bool `validate:"-" bun:",nullzero,notnull,default:false"` // Is this user disabled from posting? Approved *bool `validate:"-" bun:",nullzero,notnull,default:false"` // Has this user been approved by a moderator? ResetPasswordToken string `validate:"required_with=ResetPasswordSentAt" bun:",nullzero"` // The generated token that the user can use to reset their password ResetPasswordSentAt time.Time `validate:"required_with=ResetPasswordToken" bun:"type:timestamptz,nullzero"` // When did we email the user their reset-password email? }
User represents an actual human user of gotosocial. Note, this is a LOCAL gotosocial user, not a remote account. To cross reference this local user with their account (which can be local or remote), use the AccountID field.
type Visibility ¶
type Visibility string
Visibility represents the visibility granularity of a status.
const ( // VisibilityPublic means this status will be visible to everyone on all timelines. VisibilityPublic Visibility = "public" // VisibilityUnlocked means this status will be visible to everyone, but will only show on home timeline to followers, and in lists. VisibilityUnlocked Visibility = "unlocked" // VisibilityFollowersOnly means this status is viewable to followers only. VisibilityFollowersOnly Visibility = "followers_only" // VisibilityMutualsOnly means this status is visible to mutual followers only. VisibilityMutualsOnly Visibility = "mutuals_only" // VisibilityDirect means this status is visible only to mentioned recipients. VisibilityDirect Visibility = "direct" // VisibilityDefault is used when no other setting can be found. VisibilityDefault Visibility = VisibilityUnlocked )