Documentation ¶
Index ¶
- Constants
- Variables
- func ToNamedValues(args []driver.Value) []driver.NamedValue
- type Account
- type Admin
- type AdvancedMigration
- type Application
- type Basic
- type Conversation
- type DB
- type Domain
- type Emoji
- type Filter
- type HeaderFilter
- type Instance
- type Interaction
- type List
- type Marker
- type Media
- type Mention
- type Move
- type Notification
- type Poll
- type Relationship
- type Report
- type Rule
- type Search
- type Session
- type SinBinStatus
- type Status
- type StatusBookmark
- type StatusFave
- type Tag
- type Thread
- type Timeline
- type Tombstone
- type User
- type Where
- type WorkerTask
Constants ¶
const ( // DBTypePostgres represents an underlying POSTGRES database type. DBTypePostgres string = "POSTGRES" )
const EmojiAllDomains string = "all"
EmojiAllDomains can be used as the `domain` value in a GetEmojis query to indicate that emojis from all domains should be returned.
Variables ¶
var ( // ErrNoEntries is a direct ptr to sql.ErrNoRows since that is returned regardless // of DB dialect. It is returned when no rows (entries) can be found for a query. ErrNoEntries = sql.ErrNoRows // ErrAlreadyExists is returned when a conflict was encountered in the db when doing an insert. ErrAlreadyExists = errors.New("already exists") )
Functions ¶
func ToNamedValues ¶ added in v0.16.0
func ToNamedValues(args []driver.Value) []driver.NamedValue
ToNamedValues converts older driver.Value types to driver.NamedValue types.
Types ¶
type Account ¶
type Account interface { // GetAccountByID returns one account with the given ID, or an error if something goes wrong. GetAccountByID(ctx context.Context, id string) (*gtsmodel.Account, error) // GetAccountsByIDs returns accounts corresponding to given IDs. GetAccountsByIDs(ctx context.Context, ids []string) ([]*gtsmodel.Account, error) // GetAccountByURI returns one account with the given URI, or an error if something goes wrong. GetAccountByURI(ctx context.Context, uri string) (*gtsmodel.Account, error) // GetAccountByURL returns one account with the given URL, or an error if something goes wrong. GetAccountByURL(ctx context.Context, uri string) (*gtsmodel.Account, error) // GetAccountByUsernameDomain returns one account with the given username and domain, or an error if something goes wrong. GetAccountByUsernameDomain(ctx context.Context, username string, domain string) (*gtsmodel.Account, error) // GetAccountByPubkeyID returns one account with the given public key URI (ID), or an error if something goes wrong. GetAccountByPubkeyID(ctx context.Context, id string) (*gtsmodel.Account, error) // GetAccountByInboxURI returns one account with the given inbox_uri, or an error if something goes wrong. GetAccountByInboxURI(ctx context.Context, uri string) (*gtsmodel.Account, error) // GetAccountByOutboxURI returns one account with the given outbox_uri, or an error if something goes wrong. GetAccountByOutboxURI(ctx context.Context, uri string) (*gtsmodel.Account, error) // GetAccountByFollowingURI returns one account with the given following_uri, or an error if something goes wrong. GetAccountByFollowingURI(ctx context.Context, uri string) (*gtsmodel.Account, error) // GetAccountByFollowersURI returns one account with the given followers_uri, or an error if something goes wrong. GetAccountByFollowersURI(ctx context.Context, uri string) (*gtsmodel.Account, error) // GetAccountByMovedToURI returns any accounts with given moved_to_uri set. GetAccountsByMovedToURI(ctx context.Context, uri string) ([]*gtsmodel.Account, error) // GetAccounts returns accounts // with the given parameters. GetAccounts( ctx context.Context, origin string, status string, mods bool, invitedBy string, username string, displayName string, domain string, email string, ip netip.Addr, page *paging.Page, ) ( []*gtsmodel.Account, error, ) // PopulateAccount ensures that all sub-models of an account are populated (e.g. avatar, header etc). PopulateAccount(ctx context.Context, account *gtsmodel.Account) error // PutAccount puts one account in the database. PutAccount(ctx context.Context, account *gtsmodel.Account) error // UpdateAccount updates one account by ID. UpdateAccount(ctx context.Context, account *gtsmodel.Account, columns ...string) error // DeleteAccount deletes one account from the database by its ID. // DO NOT USE THIS WHEN SUSPENDING ACCOUNTS! In that case you should mark the // account as suspended instead, rather than deleting from the db entirely. DeleteAccount(ctx context.Context, id string) error // GetAccountCustomCSSByUsername returns the custom css of an account on this instance with the given username. GetAccountCustomCSSByUsername(ctx context.Context, username string) (string, error) // GetAccountFaves fetches faves/likes created by the target accountID. GetAccountFaves(ctx context.Context, accountID string) ([]*gtsmodel.StatusFave, error) // GetAccountsUsingEmoji fetches all account models using emoji with given ID stored in their 'emojis' column. GetAccountsUsingEmoji(ctx context.Context, emojiID string) ([]*gtsmodel.Account, error) // GetAccountStatuses is a shortcut for getting the most recent statuses. accountID is optional, if not provided // then all statuses will be returned. If limit is set to 0, the size of the returned slice will not be limited. This can // be very memory intensive so you probably shouldn't do this! // // In the case of no statuses, this function will return db.ErrNoEntries. GetAccountStatuses(ctx context.Context, accountID string, limit int, excludeReplies bool, excludeReblogs bool, maxID string, minID string, mediaOnly bool, publicOnly bool) ([]*gtsmodel.Status, error) // GetAccountPinnedStatuses returns ONLY statuses owned by the give accountID for which a corresponding StatusPin // exists in the database. Statuses which are not pinned will not be returned by this function. // // Statuses will be returned in the order in which they were pinned, from latest pinned to oldest pinned (descending). // // In the case of no statuses, this function will return db.ErrNoEntries. GetAccountPinnedStatuses(ctx context.Context, accountID string) ([]*gtsmodel.Status, error) // GetAccountWebStatuses is similar to GetAccountStatuses, but it's specifically for // returning statuses that should be visible via the web view of a *LOCAL* account. // // In the case of no statuses, this function will return db.ErrNoEntries. GetAccountWebStatuses(ctx context.Context, account *gtsmodel.Account, limit int, maxID string) ([]*gtsmodel.Status, error) // GetInstanceAccount returns the instance account for the given domain. // If domain is empty, this instance account will be returned. GetInstanceAccount(ctx context.Context, domain string) (*gtsmodel.Account, error) // Get local account settings with the given ID. GetAccountSettings(ctx context.Context, id string) (*gtsmodel.AccountSettings, error) // Store local account settings. PutAccountSettings(ctx context.Context, settings *gtsmodel.AccountSettings) error // Update local account settings. UpdateAccountSettings(ctx context.Context, settings *gtsmodel.AccountSettings, columns ...string) error // PopulateAccountStats either creates account stats for the given // account by performing COUNT(*) database queries, or retrieves // existing stats from the database, and attaches stats to account. // // If account is local and stats were last regenerated > 48 hours ago, // stats will always be regenerated using COUNT(*) queries, to prevent drift. PopulateAccountStats(ctx context.Context, account *gtsmodel.Account) error // StubAccountStats creates zeroed account stats for the given account, // skipping COUNT(*) queries, upserts them in the DB, and attaches them // to the account model. // // Useful following fresh dereference of a remote account, or fresh // creation of a local account, when you know all COUNT(*) queries // would return 0 anyway. StubAccountStats(ctx context.Context, account *gtsmodel.Account) error // RegenerateAccountStats creates, upserts, and returns stats // for the given account, and attaches them to the account model. // // Unlike GetAccountStats, it will always get the database stats fresh. // This can be used to "refresh" stats. // // Because this involves database calls that can be expensive (on Postgres // specifically), callers should prefer GetAccountStats in 99% of cases. RegenerateAccountStats(ctx context.Context, account *gtsmodel.Account) error // Update account stats. UpdateAccountStats(ctx context.Context, stats *gtsmodel.AccountStats, columns ...string) error // DeleteAccountStats deletes the accountStats entry for the given accountID. DeleteAccountStats(ctx context.Context, accountID string) error }
Account contains functions related to account getting/setting/creation.
type Admin ¶
type Admin interface { // IsUsernameAvailable checks whether a given username is available on our domain. // Returns an error if the username is already taken, or something went wrong in the db. IsUsernameAvailable(ctx context.Context, username string) (bool, error) // IsEmailAvailable checks whether a given email address for a new account is available to be used on our domain. // Return an error if: // A) the email is already associated with an account // B) we block signups from this email domain // C) something went wrong in the db IsEmailAvailable(ctx context.Context, email string) (bool, error) // NewSignup creates a new user + account in the database with the given parameters. // By the time this function is called, it should be assumed that all the parameters have passed validation! NewSignup(ctx context.Context, newSignup gtsmodel.NewSignup) (*gtsmodel.User, error) // CreateInstanceAccount creates an account in the database with the same username as the instance host value. // Ie., if the instance is hosted at 'example.org' the instance user will have a username of 'example.org'. // This is needed for things like serving files that belong to the instance and not an individual user/account. CreateInstanceAccount(ctx context.Context) error // CreateInstanceInstance creates an instance in the database with the same domain as the instance host value. // Ie., if the instance is hosted at 'example.org' the instance will have a domain of 'example.org'. // This is needed for things like serving instance information through /api/v1/instance CreateInstanceInstance(ctx context.Context) error // CreateInstanceApplication creates an application in the database // for use in processing signups etc through the sign-up form. CreateInstanceApplication(ctx context.Context) error // GetInstanceApplication gets the instance application // (ie., the application owned by the instance account). GetInstanceApplication(ctx context.Context) (*gtsmodel.Application, error) // CountApprovedSignupsSince counts the number of new account // sign-ups approved on this instance since the given time. CountApprovedSignupsSince(ctx context.Context, since time.Time) (int, error) // CountUnhandledSignups counts the number of account sign-ups // that have not yet been approved or denied. In other words, // the number of pending sign-ups sitting in the backlog. CountUnhandledSignups(ctx context.Context) (int, error) // GetAdminAction returns the admin action with the given ID. GetAdminAction(ctx context.Context, id string) (*gtsmodel.AdminAction, error) // GetAdminActions gets all admin actions from the database. GetAdminActions(ctx context.Context) ([]*gtsmodel.AdminAction, error) // PutAdminAction puts one admin action in the database. PutAdminAction(ctx context.Context, action *gtsmodel.AdminAction) error // UpdateAdminAction updates one admin action by its ID. UpdateAdminAction(ctx context.Context, action *gtsmodel.AdminAction, columns ...string) error // DeleteAdminAction deletes admin action with the given ID. DeleteAdminAction(ctx context.Context, id string) error }
Admin contains functions related to instance administration (new signups etc).
type AdvancedMigration ¶ added in v0.17.0
type Application ¶ added in v0.11.0
type Application interface { // GetApplicationByID fetches the application from the database with corresponding ID value. GetApplicationByID(ctx context.Context, id string) (*gtsmodel.Application, error) // GetApplicationByClientID fetches the application from the database with corresponding client_id value. GetApplicationByClientID(ctx context.Context, clientID string) (*gtsmodel.Application, error) // PutApplication places the new application in the database, erroring on non-unique ID or client_id. PutApplication(ctx context.Context, app *gtsmodel.Application) error // DeleteApplicationByClientID deletes the application with corresponding client_id value from the database. DeleteApplicationByClientID(ctx context.Context, clientID string) error // GetClientByID ... GetClientByID(ctx context.Context, id string) (*gtsmodel.Client, error) // PutClient ... PutClient(ctx context.Context, client *gtsmodel.Client) error // DeleteClientByID ... DeleteClientByID(ctx context.Context, id string) error // GetAllTokens ... GetAllTokens(ctx context.Context) ([]*gtsmodel.Token, error) // GetTokenByCode ... GetTokenByCode(ctx context.Context, code string) (*gtsmodel.Token, error) // GetTokenByAccess ... GetTokenByAccess(ctx context.Context, access string) (*gtsmodel.Token, error) // GetTokenByRefresh ... GetTokenByRefresh(ctx context.Context, refresh string) (*gtsmodel.Token, error) // PutToken ... PutToken(ctx context.Context, token *gtsmodel.Token) error // DeleteTokenByID ... DeleteTokenByID(ctx context.Context, id string) error // DeleteTokenByCode ... DeleteTokenByCode(ctx context.Context, code string) error // DeleteTokenByAccess ... DeleteTokenByAccess(ctx context.Context, access string) error // DeleteTokenByRefresh ... DeleteTokenByRefresh(ctx context.Context, refresh string) error }
type Basic ¶
type Basic interface { // CreateTable creates a table for the given interface. // For implementations that don't use tables, this can just return nil. CreateTable(ctx context.Context, i interface{}) error // DropTable drops the table for the given interface. // For implementations that don't use tables, this can just return nil. DropTable(ctx context.Context, i interface{}) error // Close should stop and close the database connection cleanly, returning an error if this is not possible. // If the database implementation doesn't need to be stopped, this can just return nil. Close() error // Ready returns nil if the database connection is ready, or an error if not. Ready(ctx context.Context) error // GetByID gets one entry by its id. In a database like postgres, this might be the 'id' field of the entry, // for other implementations (for example, in-memory) it might just be the key of a map. // The given interface i will be set to the result of the query, whatever it is. Use a pointer or a slice. // In case of no entries, a 'no entries' error will be returned GetByID(ctx context.Context, id string, i interface{}) error // GetWhere gets one entry where key = value. This is similar to GetByID but allows the caller to specify the // name of the key to select from. // The given interface i will be set to the result of the query, whatever it is. Use a pointer or a slice. // In case of no entries, a 'no entries' error will be returned GetWhere(ctx context.Context, where []Where, i interface{}) error // GetAll will try to get all entries of type i. // The given interface i will be set to the result of the query, whatever it is. Use a pointer or a slice. // In case of no entries, a 'no entries' error will be returned GetAll(ctx context.Context, i interface{}) error // Put simply stores i. It is up to the implementation to figure out how to store it, and using what key. // The given interface i will be set to the result of the query, whatever it is. Use a pointer or a slice. Put(ctx context.Context, i interface{}) error // UpdateByID updates values of i based on its id. // If any columns are specified, these will be updated exclusively. // Otherwise, the whole model will be updated. // The given interface i will be set to the result of the query, whatever it is. Use a pointer or a slice. UpdateByID(ctx context.Context, i interface{}, id string, columns ...string) error // UpdateWhere updates column key of interface i with the given value, where the given parameters apply. UpdateWhere(ctx context.Context, where []Where, key string, value interface{}, i interface{}) error // DeleteByID removes i with id id. // If i didn't exist anyway, then no error should be returned. DeleteByID(ctx context.Context, id string, i interface{}) error // DeleteWhere deletes i where key = value // If i didn't exist anyway, then no error should be returned. DeleteWhere(ctx context.Context, where []Where, i interface{}) error }
Basic wraps basic database functionality.
type Conversation ¶ added in v0.17.0
type Conversation interface { // GetConversationByID gets a single conversation by ID. GetConversationByID(ctx context.Context, id string) (*gtsmodel.Conversation, error) // GetConversationByThreadAndAccountIDs retrieves a conversation by thread ID and participant account IDs, if it exists. GetConversationByThreadAndAccountIDs(ctx context.Context, threadID string, accountID string, otherAccountIDs []string) (*gtsmodel.Conversation, error) // GetConversationsByOwnerAccountID gets all conversations owned by the given account, // with optional paging based on last status ID. GetConversationsByOwnerAccountID(ctx context.Context, accountID string, page *paging.Page) ([]*gtsmodel.Conversation, error) // UpsertConversation creates or updates a conversation. UpsertConversation(ctx context.Context, conversation *gtsmodel.Conversation, columns ...string) error // LinkConversationToStatus creates a conversation-to-status link. LinkConversationToStatus(ctx context.Context, statusID string, conversationID string) error // DeleteConversationByID deletes a conversation, removing it from the owning account's conversation list. DeleteConversationByID(ctx context.Context, id string) error // DeleteConversationsByOwnerAccountID deletes all conversations owned by the given account. DeleteConversationsByOwnerAccountID(ctx context.Context, accountID string) error // DeleteStatusFromConversations handles when a status is deleted by updating or deleting conversations for which it was the last status. DeleteStatusFromConversations(ctx context.Context, statusID string) error }
type DB ¶
type DB interface { Account Admin AdvancedMigration Application Basic Conversation Domain Emoji HeaderFilter Instance Interaction Filter List Marker Media Mention Move Notification Poll Relationship Report Rule Search Session SinBinStatus Status StatusBookmark StatusFave Tag Thread Timeline User Tombstone WorkerTask }
DB provides methods for interacting with an underlying database or other storage mechanism.
type Domain ¶
type Domain interface { // CreateDomainAllow puts the given instance-level domain allow into the database. CreateDomainAllow(ctx context.Context, allow *gtsmodel.DomainAllow) error // GetDomainAllow returns one instance-level domain allow with the given domain, if it exists. GetDomainAllow(ctx context.Context, domain string) (*gtsmodel.DomainAllow, error) // GetDomainAllowByID returns one instance-level domain allow with the given id, if it exists. GetDomainAllowByID(ctx context.Context, id string) (*gtsmodel.DomainAllow, error) // GetDomainAllows returns all instance-level domain allows currently enforced by this instance. GetDomainAllows(ctx context.Context) ([]*gtsmodel.DomainAllow, error) // DeleteDomainAllow deletes an instance-level domain allow with the given domain, if it exists. DeleteDomainAllow(ctx context.Context, domain string) error // CreateDomainBlock puts the given instance-level domain block into the database. CreateDomainBlock(ctx context.Context, block *gtsmodel.DomainBlock) error // GetDomainBlock returns one instance-level domain block with the given domain, if it exists. GetDomainBlock(ctx context.Context, domain string) (*gtsmodel.DomainBlock, error) // GetDomainBlockByID returns one instance-level domain block with the given id, if it exists. GetDomainBlockByID(ctx context.Context, id string) (*gtsmodel.DomainBlock, error) // GetDomainBlocks returns all instance-level domain blocks currently enforced by this instance. GetDomainBlocks(ctx context.Context) ([]*gtsmodel.DomainBlock, error) // DeleteDomainBlock deletes an instance-level domain block with the given domain, if it exists. DeleteDomainBlock(ctx context.Context, domain string) error // IsDomainBlocked checks if domain is blocked, accounting for both explicit allows and blocks. // Will check allows first, so an allowed domain will always return false, even if it's also blocked. IsDomainBlocked(ctx context.Context, domain string) (bool, error) // AreDomainsBlocked calls IsDomainBlocked for each domain. // Will return true if even one of the given domains is blocked. AreDomainsBlocked(ctx context.Context, domains []string) (bool, error) // IsURIBlocked calls IsDomainBlocked for the host of the given URI. IsURIBlocked(ctx context.Context, uri *url.URL) (bool, error) // AreURIsBlocked calls IsURIBlocked for each URI. // Will return true if even one of the given URIs is blocked. AreURIsBlocked(ctx context.Context, uris []*url.URL) (bool, error) }
Domain contains DB functions related to domains and domain blocks.
type Emoji ¶ added in v0.3.4
type Emoji interface { // PutEmoji puts one emoji in the database. PutEmoji(ctx context.Context, emoji *gtsmodel.Emoji) error // UpdateEmoji updates the given columns of one emoji. // If no columns are specified, every column is updated. UpdateEmoji(ctx context.Context, emoji *gtsmodel.Emoji, columns ...string) error // DeleteEmojiByID deletes one emoji by its database ID. DeleteEmojiByID(ctx context.Context, id string) error // GetEmojisByIDs gets emojis for the given IDs. GetEmojisByIDs(ctx context.Context, ids []string) ([]*gtsmodel.Emoji, error) // GetUseableEmojis gets all emojis which are useable by accounts on this instance. GetUseableEmojis(ctx context.Context) ([]*gtsmodel.Emoji, error) // GetEmojis fetches all emojis with IDs less than 'maxID', up to a maximum of 'limit' emojis. GetEmojis(ctx context.Context, page *paging.Page) ([]*gtsmodel.Emoji, error) // GetRemoteEmojis fetches all remote emojis with IDs less than 'maxID', up to a maximum of 'limit' emojis. GetRemoteEmojis(ctx context.Context, page *paging.Page) ([]*gtsmodel.Emoji, error) // GetCachedEmojisOlderThan fetches all cached remote emojis with 'updated_at' greater than 'olderThan', up to a maximum of 'limit' emojis. GetCachedEmojisOlderThan(ctx context.Context, olderThan time.Time, limit int) ([]*gtsmodel.Emoji, error) // GetEmojisBy gets emojis based on given parameters. Useful for admin actions. GetEmojisBy(ctx context.Context, domain string, includeDisabled bool, includeEnabled bool, shortcode string, maxShortcodeDomain string, minShortcodeDomain string, limit int) ([]*gtsmodel.Emoji, error) // GetEmojiByID gets a specific emoji by its database ID. GetEmojiByID(ctx context.Context, id string) (*gtsmodel.Emoji, error) // PopulateEmoji populates the struct pointers on the given emoji. PopulateEmoji(ctx context.Context, emoji *gtsmodel.Emoji) error // GetEmojiByShortcodeDomain gets an emoji based on its shortcode and domain. // For local emoji, domain should be an empty string. GetEmojiByShortcodeDomain(ctx context.Context, shortcode string, domain string) (*gtsmodel.Emoji, error) // GetEmojiByURI returns one emoji based on its ActivityPub URI. GetEmojiByURI(ctx context.Context, uri string) (*gtsmodel.Emoji, error) // GetEmojiByStaticURL gets an emoji using the URL of the static version of the emoji image. GetEmojiByStaticURL(ctx context.Context, imageStaticURL string) (*gtsmodel.Emoji, error) // PutEmojiCategory puts one new emoji category in the database. PutEmojiCategory(ctx context.Context, emojiCategory *gtsmodel.EmojiCategory) error // GetEmojiCategoriesByIDs gets emoji categories for given IDs. GetEmojiCategoriesByIDs(ctx context.Context, ids []string) ([]*gtsmodel.EmojiCategory, error) // GetEmojiCategories gets a slice of the names of all existing emoji categories. GetEmojiCategories(ctx context.Context) ([]*gtsmodel.EmojiCategory, error) // GetEmojiCategory gets one emoji category by its id. GetEmojiCategory(ctx context.Context, id string) (*gtsmodel.EmojiCategory, error) // GetEmojiCategoryByName gets one emoji category by its name. GetEmojiCategoryByName(ctx context.Context, name string) (*gtsmodel.EmojiCategory, error) }
Emoji contains functions for getting emoji in the database.
type Filter ¶ added in v0.15.0
type Filter interface { // GetFilterByID gets one filter with the given id. GetFilterByID(ctx context.Context, id string) (*gtsmodel.Filter, error) // GetFiltersForAccountID gets all filters owned by the given accountID. GetFiltersForAccountID(ctx context.Context, accountID string) ([]*gtsmodel.Filter, error) // PutFilter puts a new filter in the database, adding any attached keywords or statuses. // It uses a transaction to ensure no partial updates. PutFilter(ctx context.Context, filter *gtsmodel.Filter) error // UpdateFilter updates the given filter, // upserts any attached keywords and inserts any new statuses (existing statuses cannot be updated), // and deletes indicated filter keywords and statuses by ID. // It uses a transaction to ensure no partial updates. // The column lists are optional; if not specified, all columns will be updated. // The filter keyword columns list is *per keyword*. // To update all keyword columns, provide a list where every element is an empty list. UpdateFilter( ctx context.Context, filter *gtsmodel.Filter, filterColumns []string, filterKeywordColumns [][]string, deleteFilterKeywordIDs []string, deleteFilterStatusIDs []string, ) error // DeleteFilterByID deletes one filter with the given ID. // It uses a transaction to ensure no partial updates. DeleteFilterByID(ctx context.Context, id string) error // GetFilterKeywordByID gets one filter keyword with the given ID. GetFilterKeywordByID(ctx context.Context, id string) (*gtsmodel.FilterKeyword, error) // GetFilterKeywordsForFilterID gets filter keywords from the given filterID. GetFilterKeywordsForFilterID(ctx context.Context, filterID string) ([]*gtsmodel.FilterKeyword, error) // GetFilterKeywordsForAccountID gets filter keywords from the given accountID. GetFilterKeywordsForAccountID(ctx context.Context, accountID string) ([]*gtsmodel.FilterKeyword, error) // PutFilterKeyword inserts a single filter keyword into the database. PutFilterKeyword(ctx context.Context, filterKeyword *gtsmodel.FilterKeyword) error // UpdateFilterKeyword updates the given filter keyword. // Columns is optional, if not specified all will be updated. UpdateFilterKeyword(ctx context.Context, filterKeyword *gtsmodel.FilterKeyword, columns ...string) error // DeleteFilterKeywordByID deletes one filter keyword with the given id. DeleteFilterKeywordByID(ctx context.Context, id string) error // GetFilterStatusByID gets one filter status with the given ID. GetFilterStatusByID(ctx context.Context, id string) (*gtsmodel.FilterStatus, error) // GetFilterStatusesForFilterID gets filter statuses from the given filterID. GetFilterStatusesForFilterID(ctx context.Context, filterID string) ([]*gtsmodel.FilterStatus, error) // GetFilterStatusesForAccountID gets filter keywords from the given accountID. GetFilterStatusesForAccountID(ctx context.Context, accountID string) ([]*gtsmodel.FilterStatus, error) // PutFilterStatus inserts a single filter status into the database. PutFilterStatus(ctx context.Context, filterStatus *gtsmodel.FilterStatus) error // DeleteFilterStatusByID deletes one filter status with the given id. DeleteFilterStatusByID(ctx context.Context, id string) error }
Filter contains methods for creating, reading, updating, and deleting filters and their keyword and status entries.
type HeaderFilter ¶ added in v0.14.0
type HeaderFilter interface { // AllowHeaderRegularMatch performs an headerfilter.Filter.RegularMatch() on cached allow header filters. // (Note: the actual matching code can be found under ./internal/headerfilter/ ). AllowHeaderRegularMatch(ctx context.Context, hdr http.Header) (string, string, error) // AllowHeaderInverseMatch performs an headerfilter.Filter.InverseMatch() on cached allow header filters. // (Note: the actual matching code can be found under ./internal/headerfilter/ ). AllowHeaderInverseMatch(ctx context.Context, hdr http.Header) (string, string, error) // BlockHeaderRegularMatch performs an headerfilter.Filter.RegularMatch() on cached block header filters. // (Note: the actual matching code can be found under ./internal/headerfilter/ ). BlockHeaderRegularMatch(ctx context.Context, hdr http.Header) (string, string, error) // BlockHeaderInverseMatch performs an headerfilter.Filter.InverseMatch() on cached block header filters. // (Note: the actual matching code can be found under ./internal/headerfilter/ ). BlockHeaderInverseMatch(ctx context.Context, hdr http.Header) (string, string, error) // GetAllowHeaderFilter fetches the allow header filter with ID from the database. GetAllowHeaderFilter(ctx context.Context, id string) (*gtsmodel.HeaderFilter, error) // GetBlockHeaderFilter fetches the block header filter with ID from the database. GetBlockHeaderFilter(ctx context.Context, id string) (*gtsmodel.HeaderFilter, error) // GetAllowHeaderFilters fetches all allow header filters from the database. GetAllowHeaderFilters(ctx context.Context) ([]*gtsmodel.HeaderFilter, error) // GetBlockHeaderFilters fetches all block header filters from the database. GetBlockHeaderFilters(ctx context.Context) ([]*gtsmodel.HeaderFilter, error) // PutAllowHeaderFilter inserts the given allow header filter into the database. PutAllowHeaderFilter(ctx context.Context, filter *gtsmodel.HeaderFilter) error // PutBlockHeaderFilter inserts the given block header filter into the database. PutBlockHeaderFilter(ctx context.Context, filter *gtsmodel.HeaderFilter) error // UpdateAllowHeaderFilter updates the given allow header filter in the database, only updating given columns if provided. UpdateAllowHeaderFilter(ctx context.Context, filter *gtsmodel.HeaderFilter, cols ...string) error // UpdateBlockHeaderFilter updates the given block header filter in the database, only updating given columns if provided. UpdateBlockHeaderFilter(ctx context.Context, filter *gtsmodel.HeaderFilter, cols ...string) error // DeleteAllowHeaderFilter deletes the allow header filter with ID from the database. DeleteAllowHeaderFilter(ctx context.Context, id string) error // DeleteBlockHeaderFilter deletes the block header filter with ID from the database. DeleteBlockHeaderFilter(ctx context.Context, id string) error }
type Instance ¶
type Instance interface { // CountInstanceUsers returns the number of known accounts registered with the given domain. CountInstanceUsers(ctx context.Context, domain string) (int, error) // CountInstanceStatuses returns the number of known statuses posted from the given domain. CountInstanceStatuses(ctx context.Context, domain string) (int, error) // CountInstanceDomains returns the number of known instances known that the given domain federates with. CountInstanceDomains(ctx context.Context, domain string) (int, error) // GetInstance returns the instance entry for the given domain, if it exists. GetInstance(ctx context.Context, domain string) (*gtsmodel.Instance, error) // GetInstanceByID returns the instance entry corresponding to the given id, if it exists. GetInstanceByID(ctx context.Context, id string) (*gtsmodel.Instance, error) // PopulateInstance populates the struct pointers on the given instance. PopulateInstance(ctx context.Context, instance *gtsmodel.Instance) error // PutInstance inserts the given instance into the database. PutInstance(ctx context.Context, instance *gtsmodel.Instance) error // UpdateInstance updates the given instance entry. UpdateInstance(ctx context.Context, instance *gtsmodel.Instance, columns ...string) error // GetInstanceAccounts returns a slice of accounts from the given instance, arranged by ID. GetInstanceAccounts(ctx context.Context, domain string, maxID string, limit int) ([]*gtsmodel.Account, error) // GetInstancePeers returns a slice of instances that the host instance knows about. GetInstancePeers(ctx context.Context, includeSuspended bool) ([]*gtsmodel.Instance, error) // GetInstanceModeratorAddresses returns a slice of email addresses belonging to active // (as in, not suspended) moderators + admins on this instance. GetInstanceModeratorAddresses(ctx context.Context) ([]string, error) // GetInstanceModerators returns a slice of accounts belonging to active // (as in, non suspended) moderators + admins on this instance. GetInstanceModerators(ctx context.Context) ([]*gtsmodel.Account, error) }
Instance contains functions for instance-level actions (counting instance users etc.).
type Interaction ¶ added in v0.17.0
type Interaction interface { // GetInteractionRequestByID gets one request with the given id. GetInteractionRequestByID(ctx context.Context, id string) (*gtsmodel.InteractionRequest, error) // GetInteractionRequestByID gets one request with the given interaction uri. GetInteractionRequestByInteractionURI(ctx context.Context, uri string) (*gtsmodel.InteractionRequest, error) // GetInteractionRequestByURI returns one accepted or rejected // interaction request with the given URI, if it exists in the db. GetInteractionRequestByURI(ctx context.Context, uri string) (*gtsmodel.InteractionRequest, error) // PopulateInteractionRequest ensures that the request's struct fields are populated. PopulateInteractionRequest(ctx context.Context, request *gtsmodel.InteractionRequest) error // PutInteractionRequest puts a new request in the database. PutInteractionRequest(ctx context.Context, request *gtsmodel.InteractionRequest) error // UpdateInteractionRequest updates the given interaction request. UpdateInteractionRequest(ctx context.Context, request *gtsmodel.InteractionRequest, columns ...string) error // DeleteInteractionRequestByID deletes one request with the given ID. DeleteInteractionRequestByID(ctx context.Context, id string) error // GetInteractionsRequestsForAcct returns pending interactions targeting // the given (optional) account ID and the given (optional) status ID. // // At least one of `likes`, `replies`, or `boosts` must be true. GetInteractionsRequestsForAcct( ctx context.Context, acctID string, statusID string, likes bool, replies bool, boosts bool, page *paging.Page, ) ([]*gtsmodel.InteractionRequest, error) // IsInteractionRejected returns true if an rejection exists in the database for an // object with the given interactionURI (ie., a status or announce or fave uri). IsInteractionRejected(ctx context.Context, interactionURI string) (bool, error) }
type List ¶ added in v0.10.0
type List interface { // GetListByID gets one list with the given id. GetListByID(ctx context.Context, id string) (*gtsmodel.List, error) // GetListsByIDs fetches all lists with the provided IDs. GetListsByIDs(ctx context.Context, ids []string) ([]*gtsmodel.List, error) // GetListsByAccountID gets all lists owned by the given accountID. GetListsByAccountID(ctx context.Context, accountID string) ([]*gtsmodel.List, error) // CountListsByAccountID counts the number of lists owned by the given accountID. CountListsByAccountID(ctx context.Context, accountID string) (int, error) // GetListsContainingFollowID gets all lists that contain the given follow with ID. GetListsContainingFollowID(ctx context.Context, followID string) ([]*gtsmodel.List, error) // GetFollowIDsInList returns all the follow IDs contained within given list ID. GetFollowIDsInList(ctx context.Context, listID string, page *paging.Page) ([]string, error) // GetFollowsInList returns all the follows contained within given list ID. GetFollowsInList(ctx context.Context, listID string, page *paging.Page) ([]*gtsmodel.Follow, error) // GetAccountIDsInList return all the account IDs (follow targets) contained within given list ID. GetAccountIDsInList(ctx context.Context, listID string, page *paging.Page) ([]string, error) // GetAccountsInList return all the accounts (follow targets) contained within given list ID. GetAccountsInList(ctx context.Context, listID string, page *paging.Page) ([]*gtsmodel.Account, error) // IsAccountInListID returns whether given account with ID is in the list with ID. IsAccountInList(ctx context.Context, listID string, accountID string) (bool, error) // PopulateList ensures that the list's struct fields are populated. PopulateList(ctx context.Context, list *gtsmodel.List) error // PutList puts a new list in the database. PutList(ctx context.Context, list *gtsmodel.List) error // UpdateList updates the given list. // Columns is optional, if not specified all will be updated. UpdateList(ctx context.Context, list *gtsmodel.List, columns ...string) error // DeleteListByID deletes one list with the given ID. DeleteListByID(ctx context.Context, id string) error // PutListEntries inserts a slice of listEntries into the database. // It uses a transaction to ensure no partial updates. PutListEntries(ctx context.Context, listEntries []*gtsmodel.ListEntry) error // DeleteListEntry deletes the list entry with given list ID and follow ID. DeleteListEntry(ctx context.Context, listID string, followID string) error // DeleteAllListEntryByFollow deletes all list entries with the given followIDs. DeleteAllListEntriesByFollows(ctx context.Context, followIDs ...string) error }
type Media ¶
type Media interface { // GetAttachmentByID gets a single attachment by its ID. GetAttachmentByID(ctx context.Context, id string) (*gtsmodel.MediaAttachment, error) // GetAttachmentsByIDs fetches a list of media attachments for given IDs. GetAttachmentsByIDs(ctx context.Context, ids []string) ([]*gtsmodel.MediaAttachment, error) // PutAttachment inserts the given attachment into the database. PutAttachment(ctx context.Context, media *gtsmodel.MediaAttachment) error // UpdateAttachment will update the given attachment in the database. UpdateAttachment(ctx context.Context, media *gtsmodel.MediaAttachment, columns ...string) error // DeleteAttachment deletes the attachment with given ID from the database. DeleteAttachment(ctx context.Context, id string) error // GetAttachments fetches media attachments up to a given max ID, and at most limit. GetAttachments(ctx context.Context, page *paging.Page) ([]*gtsmodel.MediaAttachment, error) // GetRemoteAttachments fetches media attachments with a non-empty domain, up to a given max ID, and at most limit. GetRemoteAttachments(ctx context.Context, page *paging.Page) ([]*gtsmodel.MediaAttachment, error) // GetCachedAttachmentsOlderThan gets limit n remote attachments (including avatars and headers) older than // the given time. These will be returned in order of attachment.created_at descending (i.e. newest to oldest). GetCachedAttachmentsOlderThan(ctx context.Context, olderThan time.Time, limit int) ([]*gtsmodel.MediaAttachment, error) }
Media contains functions related to creating/getting/removing media attachments.
type Mention ¶
type Mention interface { // GetMention gets a single mention by ID GetMention(ctx context.Context, id string) (*gtsmodel.Mention, error) // GetMentions gets multiple mentions. GetMentions(ctx context.Context, ids []string) ([]*gtsmodel.Mention, error) // PopulateMention ensures that all sub-models of a mention are populated (e.g. accounts). PopulateMention(ctx context.Context, mention *gtsmodel.Mention) error // PutMention will insert the given mention into the database. PutMention(ctx context.Context, mention *gtsmodel.Mention) error // DeleteMentionByID will delete mention with given ID from the database. DeleteMentionByID(ctx context.Context, id string) error }
Mention contains functions for getting/creating mentions in the database.
type Move ¶ added in v0.15.0
type Move interface { // GetMoveByID gets one Move with the given internal ID. GetMoveByID(ctx context.Context, id string) (*gtsmodel.Move, error) // GetMoveByURI gets one Move with the given AP URI. GetMoveByURI(ctx context.Context, uri string) (*gtsmodel.Move, error) // GetMoveByOriginTarget gets one move with the given originURI and targetURI. GetMoveByOriginTarget(ctx context.Context, originURI string, targetURI string) (*gtsmodel.Move, error) // PopulateMove parses out the origin and target URIs on the move. PopulateMove(ctx context.Context, move *gtsmodel.Move) error // GetLatestMoveSuccessInvolvingURIs gets the time of // the latest successfully-processed Move that includes // either uri1 or uri2 in target or origin positions. GetLatestMoveSuccessInvolvingURIs(ctx context.Context, uri1 string, uri2 string) (time.Time, error) // GetLatestMoveAttemptInvolvingURIs gets the time // of the latest Move attempt that includes either // uri1 or uri2 in target or origin positions. GetLatestMoveAttemptInvolvingURIs(ctx context.Context, uri1 string, uri2 string) (time.Time, error) // PutMove puts the given Move in the database. PutMove(ctx context.Context, move *gtsmodel.Move) error // UpdateMove updates the given Move by primary key. // Updates specific columns if provided, all columns if not. UpdateMove(ctx context.Context, move *gtsmodel.Move, columns ...string) error // DeleteMoveByID deletes a move with the given internal ID. DeleteMoveByID(ctx context.Context, id string) error }
type Notification ¶
type Notification interface { // GetAccountNotifications returns a slice of notifications that pertain to the given accountID. // // Returned notifications will be ordered ID descending (ie., highest/newest to lowest/oldest). // If types is empty, *all* notification types will be included. GetAccountNotifications(ctx context.Context, accountID string, maxID string, sinceID string, minID string, limit int, types []string, excludeTypes []string) ([]*gtsmodel.Notification, error) // GetNotificationByID returns one notification according to its id. GetNotificationByID(ctx context.Context, id string) (*gtsmodel.Notification, error) // GetNotificationsByIDs returns a slice of notifications of the the provided IDs. GetNotificationsByIDs(ctx context.Context, ids []string) ([]*gtsmodel.Notification, error) // GetNotification gets one notification according to the provided parameters, if it exists. // Since not all notifications are about a status, statusID can be an empty string. GetNotification(ctx context.Context, notificationType gtsmodel.NotificationType, targetAccountID string, originAccountID string, statusID string) (*gtsmodel.Notification, error) // PopulateNotification ensures that the notification's struct fields are populated. PopulateNotification(ctx context.Context, notif *gtsmodel.Notification) error // PutNotification will insert the given notification into the database. PutNotification(ctx context.Context, notif *gtsmodel.Notification) error // DeleteNotificationByID deletes one notification according to its id, // and removes that notification from the in-memory cache. DeleteNotificationByID(ctx context.Context, id string) error // DeleteNotifications mass deletes notifications targeting targetAccountID // and/or originating from originAccountID. // // If targetAccountID is set and originAccountID isn't, all notifications // that target the given account will be deleted. // // If originAccountID is set and targetAccountID isn't, all notifications // originating from the given account will be deleted. // // If both are set, then notifications that target targetAccountID and // originate from originAccountID will be deleted. // // At least one parameter must not be an empty string. DeleteNotifications(ctx context.Context, types []string, targetAccountID string, originAccountID string) error // DeleteNotificationsForStatus deletes all notifications that relate to // the given statusID. This function is useful when a status has been deleted, // and so notifications relating to that status must also be deleted. DeleteNotificationsForStatus(ctx context.Context, statusID string) error }
Notification contains functions for creating and getting notifications.
type Poll ¶ added in v0.13.0
type Poll interface { // GetPollByID fetches the Poll with given ID from the database. GetPollByID(ctx context.Context, id string) (*gtsmodel.Poll, error) // GetOpenPolls fetches all local Polls in the database with an unset `closed_at` column. GetOpenPolls(ctx context.Context) ([]*gtsmodel.Poll, error) // PopulatePoll ensures the given Poll is fully populated with all other related database models. PopulatePoll(ctx context.Context, poll *gtsmodel.Poll) error // PutPoll puts the given Poll in the database. PutPoll(ctx context.Context, poll *gtsmodel.Poll) error // UpdatePoll updates the Poll in the database, only on selected columns if provided (else, all). UpdatePoll(ctx context.Context, poll *gtsmodel.Poll, cols ...string) error // DeletePollByID deletes the Poll with given ID from the // database, along with all its associated poll votes. DeletePollByID(ctx context.Context, id string) error // GetPollVoteByID gets the PollVote with given ID from the database. GetPollVoteByID(ctx context.Context, id string) (*gtsmodel.PollVote, error) // GetPollVotesBy fetches the PollVote in Poll with ID, by account ID, from the database. GetPollVoteBy(ctx context.Context, pollID string, accountID string) (*gtsmodel.PollVote, error) // GetPollVotes fetches all PollVotes in Poll with ID, from the database. GetPollVotes(ctx context.Context, pollID string) ([]*gtsmodel.PollVote, error) // PopulatePollVote ensures the given PollVote is fully populated with all other related database models. PopulatePollVote(ctx context.Context, votes *gtsmodel.PollVote) error // PutPollVote puts the given PollVote in the database. PutPollVote(ctx context.Context, vote *gtsmodel.PollVote) error // DeletePollVoteBy deletes the PollVote in Poll with ID, by account ID, from the database. DeletePollVoteBy(ctx context.Context, pollID string, accountID string) error // DeletePollVotesByAccountID deletes all PollVotes in all Polls, by account ID, from the database. DeletePollVotesByAccountID(ctx context.Context, accountID string) error }
type Relationship ¶
type Relationship interface { // IsBlocked checks whether source account has a block in place against target. IsBlocked(ctx context.Context, sourceAccountID string, targetAccountID string) (bool, error) // IsEitherBlocked checks whether there is a block in place between either of account1 and account2. IsEitherBlocked(ctx context.Context, accountID1 string, accountID2 string) (bool, error) // GetBlockByID fetches block with given ID from the database. GetBlockByID(ctx context.Context, id string) (*gtsmodel.Block, error) // GetBlockByURI fetches block with given AP URI from the database. GetBlockByURI(ctx context.Context, uri string) (*gtsmodel.Block, error) // GetBlock returns the block from account1 targeting account2, if it exists, or an error if it doesn't. GetBlock(ctx context.Context, account1 string, account2 string) (*gtsmodel.Block, error) // PopulateBlock populates the struct pointers on the given block. PopulateBlock(ctx context.Context, block *gtsmodel.Block) error // PutBlock attempts to place the given account block in the database. PutBlock(ctx context.Context, block *gtsmodel.Block) error // DeleteBlockByID removes block with given ID from the database. DeleteBlockByID(ctx context.Context, id string) error // DeleteBlockByURI removes block with given AP URI from the database. DeleteBlockByURI(ctx context.Context, uri string) error // DeleteAccountBlocks will delete all database blocks to / from the given account ID. DeleteAccountBlocks(ctx context.Context, accountID string) error // GetRelationship retrieves the relationship of the targetAccount to the requestingAccount. GetRelationship(ctx context.Context, requestingAccount string, targetAccount string) (*gtsmodel.Relationship, error) // GetFollowByID fetches follow with given ID from the database. GetFollowByID(ctx context.Context, id string) (*gtsmodel.Follow, error) // GetFollowByURI fetches follow with given AP URI from the database. GetFollowByURI(ctx context.Context, uri string) (*gtsmodel.Follow, error) // GetFollow retrieves a follow if it exists between source and target accounts. GetFollow(ctx context.Context, sourceAccountID string, targetAccountID string) (*gtsmodel.Follow, error) // GetFollowsByIDs fetches all follows from database with given IDs. GetFollowsByIDs(ctx context.Context, ids []string) ([]*gtsmodel.Follow, error) // PopulateFollow populates the struct pointers on the given follow. PopulateFollow(ctx context.Context, follow *gtsmodel.Follow) error // GetFollowRequestByID fetches follow request with given ID from the database. GetFollowRequestByID(ctx context.Context, id string) (*gtsmodel.FollowRequest, error) // GetFollowRequestByURI fetches follow request with given AP URI from the database. GetFollowRequestByURI(ctx context.Context, uri string) (*gtsmodel.FollowRequest, error) // GetFollowRequest retrieves a follow request if it exists between source and target accounts. GetFollowRequest(ctx context.Context, sourceAccountID string, targetAccountID string) (*gtsmodel.FollowRequest, error) // PopulateFollowRequest populates the struct pointers on the given follow request. PopulateFollowRequest(ctx context.Context, follow *gtsmodel.FollowRequest) error // IsFollowing returns true if sourceAccount follows target account, or an error if something goes wrong while finding out. IsFollowing(ctx context.Context, sourceAccountID string, targetAccountID string) (bool, error) // IsMutualFollowing returns true if account1 and account2 both follow each other, or an error if something goes wrong while finding out. IsMutualFollowing(ctx context.Context, sourceAccountID string, targetAccountID string) (bool, error) // IsFollowRequested returns true if sourceAccount has requested to follow target account, or an error if something goes wrong while finding out. IsFollowRequested(ctx context.Context, sourceAccountID string, targetAccountID string) (bool, error) // PutFollow attempts to place the given account follow in the database. PutFollow(ctx context.Context, follow *gtsmodel.Follow) error // UpdateFollow updates one follow by ID. UpdateFollow(ctx context.Context, follow *gtsmodel.Follow, columns ...string) error // PutFollowRequest attempts to place the given account follow request in the database. PutFollowRequest(ctx context.Context, follow *gtsmodel.FollowRequest) error // UpdateFollowRequest updates one follow request by ID. UpdateFollowRequest(ctx context.Context, followRequest *gtsmodel.FollowRequest, columns ...string) error // DeleteFollow deletes a follow if it exists between source and target accounts. DeleteFollow(ctx context.Context, sourceAccountID string, targetAccountID string) error // DeleteFollowByID deletes a follow from the database with the given ID. DeleteFollowByID(ctx context.Context, id string) error // DeleteFollowByURI deletes a follow from the database with the given URI. DeleteFollowByURI(ctx context.Context, uri string) error // DeleteFollowRequest deletes a follow request if it exists between source and target accounts. DeleteFollowRequest(ctx context.Context, sourceAccountID string, targetAccountID string) error // DeleteFollowRequestByID deletes a follow request from the database with the given ID. DeleteFollowRequestByID(ctx context.Context, id string) error // DeleteFollowRequestByURI deletes a follow request from the database with the given URI. DeleteFollowRequestByURI(ctx context.Context, uri string) error // DeleteAccountFollows will delete all database follows to / from the given account ID. DeleteAccountFollows(ctx context.Context, accountID string) error // DeleteAccountFollowRequests will delete all database follow requests to / from the given account ID. DeleteAccountFollowRequests(ctx context.Context, accountID string) error // AcceptFollowRequest moves a follow request in the database from the follow_requests table to the follows table. // In other words, it should create the follow, and delete the existing follow request. // // It will return the newly created follow for further processing. AcceptFollowRequest(ctx context.Context, originAccountID string, targetAccountID string) (*gtsmodel.Follow, error) // RejectFollowRequest fetches a follow request from the database, and then deletes it. RejectFollowRequest(ctx context.Context, originAccountID string, targetAccountID string) error // GetAccountFollows returns a slice of follows owned by the given accountID. GetAccountFollows(ctx context.Context, accountID string, page *paging.Page) ([]*gtsmodel.Follow, error) // GetAccountFollowIDs is like GetAccountFollows, but returns just IDs. GetAccountFollowIDs(ctx context.Context, accountID string, page *paging.Page) ([]string, error) // GetAccountLocalFollows returns a slice of follows owned by the given accountID, only including follows from this instance. GetAccountLocalFollows(ctx context.Context, accountID string) ([]*gtsmodel.Follow, error) // GetAccountLocalFollowIDs is like GetAccountLocalFollows, but returns just IDs. GetAccountLocalFollowIDs(ctx context.Context, accountID string) ([]string, error) // GetAccountFollowers fetches follows that target given accountID. GetAccountFollowers(ctx context.Context, accountID string, page *paging.Page) ([]*gtsmodel.Follow, error) // GetAccountFollowerIDs is like GetAccountFollowers, but returns just IDs. GetAccountFollowerIDs(ctx context.Context, accountID string, page *paging.Page) ([]string, error) // GetAccountLocalFollowers fetches follows that target given accountID, only including follows from this instance. GetAccountLocalFollowers(ctx context.Context, accountID string) ([]*gtsmodel.Follow, error) // GetAccountLocalFollowerIDs is like GetAccountLocalFollowers, but returns just IDs. GetAccountLocalFollowerIDs(ctx context.Context, accountID string) ([]string, error) // GetAccountFollowRequests returns all follow requests targeting the given account. GetAccountFollowRequests(ctx context.Context, accountID string, page *paging.Page) ([]*gtsmodel.FollowRequest, error) // GetAccountFollowRequestIDs is like GetAccountFollowRequests, but returns just IDs. GetAccountFollowRequestIDs(ctx context.Context, accountID string, page *paging.Page) ([]string, error) // GetAccountFollowRequesting returns all follow requests originating from the given account. GetAccountFollowRequesting(ctx context.Context, accountID string, page *paging.Page) ([]*gtsmodel.FollowRequest, error) // GetAccountFollowRequestingIDs is like GetAccountFollowRequesting, but returns just IDs. GetAccountFollowRequestingIDs(ctx context.Context, accountID string, page *paging.Page) ([]string, error) // GetAccountBlocks returns all blocks originating from the given account, with given optional paging parameters. GetAccountBlocks(ctx context.Context, accountID string, paging *paging.Page) ([]*gtsmodel.Block, error) // GetAccountBlockIDs is like GetAccountBlocks, but returns just IDs. GetAccountBlockIDs(ctx context.Context, accountID string, page *paging.Page) ([]string, error) // CountAccountBlocks counts the number of blocks owned by the given account. CountAccountBlocks(ctx context.Context, accountID string) (int, error) // GetNote gets a private note from a source account on a target account, if it exists. GetNote(ctx context.Context, sourceAccountID string, targetAccountID string) (*gtsmodel.AccountNote, error) // PutNote creates or updates a private note. PutNote(ctx context.Context, note *gtsmodel.AccountNote) error // PopulateNote populates the struct pointers on the given note. PopulateNote(ctx context.Context, note *gtsmodel.AccountNote) error // IsMuted checks whether source account has a mute in place against target. IsMuted(ctx context.Context, sourceAccountID string, targetAccountID string) (bool, error) // GetMuteByID fetches mute with given ID from the database. GetMuteByID(ctx context.Context, id string) (*gtsmodel.UserMute, error) // GetMute returns the mute from account1 targeting account2, if it exists, or an error if it doesn't. GetMute(ctx context.Context, account1 string, account2 string) (*gtsmodel.UserMute, error) // CountAccountMutes counts the number of mutes owned by the given account. CountAccountMutes(ctx context.Context, accountID string) (int, error) // PutMute attempts to insert or update the given account mute in the database. PutMute(ctx context.Context, mute *gtsmodel.UserMute) error // DeleteMuteByID removes mute with given ID from the database. DeleteMuteByID(ctx context.Context, id string) error // DeleteAccountMutes will delete all database mutes to / from the given account ID. DeleteAccountMutes(ctx context.Context, accountID string) error // GetAccountMutes returns all mutes originating from the given account, with given optional paging parameters. GetAccountMutes(ctx context.Context, accountID string, paging *paging.Page) ([]*gtsmodel.UserMute, error) }
Relationship contains functions for getting or modifying the relationship between two accounts.
type Report ¶ added in v0.7.0
type Report interface { // GetReportByID gets one report by its db id GetReportByID(ctx context.Context, id string) (*gtsmodel.Report, error) // GetReports gets limit n reports using the given parameters. // Parameters that are empty / zero are ignored. GetReports(ctx context.Context, resolved *bool, accountID string, targetAccountID string, page *paging.Page) ([]*gtsmodel.Report, error) // PopulateReport populates the struct pointers on the given report. PopulateReport(ctx context.Context, report *gtsmodel.Report) error // PutReport puts the given report in the database. PutReport(ctx context.Context, report *gtsmodel.Report) error // UpdateReport updates one report by its db id. // The given columns will be updated; if no columns are // provided, then all columns will be updated. // updated_at will also be updated, no need to pass this // as a specific column. UpdateReport(ctx context.Context, report *gtsmodel.Report, columns ...string) error // DeleteReportByID deletes report with the given id. DeleteReportByID(ctx context.Context, id string) error }
Report handles getting/creation/deletion/updating of user reports/flags.
type Rule ¶ added in v0.12.0
type Rule interface { // GetRuleByID gets one rule by its db id. GetRuleByID(ctx context.Context, id string) (*gtsmodel.Rule, error) // GetRulesByIDs gets multiple rules by their db idd. GetRulesByIDs(ctx context.Context, ids []string) ([]*gtsmodel.Rule, error) // GetRules gets all active (not deleted) rules. GetActiveRules(ctx context.Context) ([]gtsmodel.Rule, error) // PutRule puts the given rule in the database. PutRule(ctx context.Context, rule *gtsmodel.Rule) error // UpdateRule updates one rule by its db id. UpdateRule(ctx context.Context, rule *gtsmodel.Rule) (*gtsmodel.Rule, error) }
Rule handles getting/creation/deletion/updating of instance rules.
type Search ¶ added in v0.10.0
type Search interface { // SearchForAccounts uses the given query text to search for accounts that accountID follows. SearchForAccounts(ctx context.Context, accountID string, query string, maxID string, minID string, limit int, following bool, offset int) ([]*gtsmodel.Account, error) // SearchForStatuses uses the given query text to search for statuses created by requestingAccountID, or in reply to requestingAccountID. // If fromAccountID is used, the results are restricted to statuses created by fromAccountID. SearchForStatuses(ctx context.Context, requestingAccountID string, query string, fromAccountID string, maxID string, minID string, limit int, offset int) ([]*gtsmodel.Status, error) // SearchForTags searches for tags that start with the given query text (case insensitive). SearchForTags(ctx context.Context, query string, maxID string, minID string, limit int, offset int) ([]*gtsmodel.Tag, error) }
type Session ¶
type Session interface {
GetSession(ctx context.Context) (*gtsmodel.RouterSession, error)
}
Session handles getting/creation of router sessions.
type SinBinStatus ¶ added in v0.17.0
type SinBinStatus interface { // GetSinBinStatusByID fetches the sin bin status from the database with matching id column. GetSinBinStatusByID(ctx context.Context, id string) (*gtsmodel.SinBinStatus, error) // GetSinBinStatusByURI fetches the sin bin status from the database with matching uri column. GetSinBinStatusByURI(ctx context.Context, uri string) (*gtsmodel.SinBinStatus, error) // PutSinBinStatus stores one sin bin status in the database. PutSinBinStatus(ctx context.Context, sbStatus *gtsmodel.SinBinStatus) error // UpdateSinBinStatus updates one sin bin status in the database. UpdateSinBinStatus(ctx context.Context, sbStatus *gtsmodel.SinBinStatus, columns ...string) error // DeleteSinBinStatusByID deletes one sin bin status from the database. DeleteSinBinStatusByID(ctx context.Context, id string) error }
type Status ¶
type Status interface { // GetStatusByID fetches the status from the database with matching id column. GetStatusByID(ctx context.Context, id string) (*gtsmodel.Status, error) // GetStatusByURI fetches the status from the database with matching uri column. GetStatusByURI(ctx context.Context, uri string) (*gtsmodel.Status, error) // GetStatusByURL fetches the status from the database with matching url column. GetStatusByURL(ctx context.Context, uri string) (*gtsmodel.Status, error) // GetStatusByPollID fetches the status from the database with matching poll_id column. GetStatusByPollID(ctx context.Context, pollID string) (*gtsmodel.Status, error) // GetStatusBoost fetches the status whose boost_of_id column refers to boostOfID, authored by given account ID. GetStatusBoost(ctx context.Context, boostOfID string, byAccountID string) (*gtsmodel.Status, error) // PopulateStatus ensures that all sub-models of a status are populated (e.g. mentions, attachments, etc). PopulateStatus(ctx context.Context, status *gtsmodel.Status) error // PutStatus stores one status in the database. PutStatus(ctx context.Context, status *gtsmodel.Status) error // UpdateStatus updates one status in the database. UpdateStatus(ctx context.Context, status *gtsmodel.Status, columns ...string) error // DeleteStatusByID deletes one status from the database. DeleteStatusByID(ctx context.Context, id string) error // GetStatuses gets a slice of statuses corresponding to the given status IDs. GetStatusesByIDs(ctx context.Context, ids []string) ([]*gtsmodel.Status, error) // GetStatusesUsingEmoji fetches all status models using emoji with given ID stored in their 'emojis' column. GetStatusesUsingEmoji(ctx context.Context, emojiID string) ([]*gtsmodel.Status, error) // GetStatusReplies returns the *direct* (i.e. in_reply_to_id column) replies to this status ID, ordered DESC by ID. GetStatusReplies(ctx context.Context, statusID string) ([]*gtsmodel.Status, error) // CountStatusReplies returns the number of stored *direct* (i.e. in_reply_to_id column) replies to this status ID. CountStatusReplies(ctx context.Context, statusID string) (int, error) // GetStatusBoosts returns all statuses whose boost_of_id column refer to given status ID. GetStatusBoosts(ctx context.Context, statusID string) ([]*gtsmodel.Status, error) // CountStatusBoosts returns the number of stored boosts for status ID. CountStatusBoosts(ctx context.Context, statusID string) (int, error) // IsStatusBoostedBy checks whether the given status ID is boosted by account ID. IsStatusBoostedBy(ctx context.Context, statusID string, accountID string) (bool, error) // GetStatusParents gets the parent statuses of a given status. GetStatusParents(ctx context.Context, status *gtsmodel.Status) ([]*gtsmodel.Status, error) // GetStatusChildren gets the child statuses of a given status. GetStatusChildren(ctx context.Context, statusID string) ([]*gtsmodel.Status, error) // MaxDirectStatusID returns the newest ID across all DM statuses. // Returns the empty string with no error if there are no DM statuses yet. // It is used only by the conversation advanced migration. MaxDirectStatusID(ctx context.Context) (string, error) // GetDirectStatusIDsBatch returns up to count DM status IDs strictly greater than minID // and less than or equal to maxIDInclusive. Note that this is different from most of our paging, // which uses a maxID and returns IDs strictly less than that, because it's called with the result of // MaxDirectStatusID, and expects to eventually return the status with that ID. // It is used only by the conversation advanced migration. GetDirectStatusIDsBatch(ctx context.Context, minID string, maxIDInclusive string, count int) ([]string, error) }
Status contains functions for getting statuses, creating statuses, and checking various other fields on statuses.
type StatusBookmark ¶ added in v0.8.0
type StatusBookmark interface { // GetStatusBookmark gets one status bookmark with the given ID. GetStatusBookmarkByID(ctx context.Context, id string) (*gtsmodel.StatusBookmark, error) // GetStatusBookmark fetches a status bookmark by the given account ID on the given status ID, if it exists. GetStatusBookmark(ctx context.Context, accountID string, statusID string) (*gtsmodel.StatusBookmark, error) // IsStatusBookmarked returns whether status has been bookmarked by any account. IsStatusBookmarked(ctx context.Context, statusID string) (bool, error) // IsStatusBookmarkedBy returns whether status ID is bookmarked by the given account ID. IsStatusBookmarkedBy(ctx context.Context, accountID string, statusID string) (bool, error) // GetStatusBookmarks retrieves status bookmarks created by the given accountID, // and using the provided parameters. If limit is < 0 then no limit will be set. // // This function is primarily useful for paging through bookmarks in a sort of // timeline view. GetStatusBookmarks(ctx context.Context, accountID string, limit int, maxID string, minID string) ([]*gtsmodel.StatusBookmark, error) // PutStatusBookmark inserts the given statusBookmark into the database. PutStatusBookmark(ctx context.Context, statusBookmark *gtsmodel.StatusBookmark) error // DeleteStatusBookmark deletes one status bookmark with the given ID. DeleteStatusBookmarkByID(ctx context.Context, id string) error // DeleteStatusBookmarks mass deletes status bookmarks targeting targetAccountID // and/or originating from originAccountID and/or bookmarking statusID. // // If targetAccountID is set and originAccountID isn't, all status bookmarks // that target the given account will be deleted. // // If originAccountID is set and targetAccountID isn't, all status bookmarks // originating from the given account will be deleted. // // If both are set, then status bookmarks that target targetAccountID and // originate from originAccountID will be deleted. // // At least one parameter must not be an empty string. DeleteStatusBookmarks(ctx context.Context, targetAccountID string, originAccountID string) error // DeleteStatusBookmarksForStatus deletes all status bookmarks that target the // given status ID. This is useful when a status has been deleted, and you need // to clean up after it. DeleteStatusBookmarksForStatus(ctx context.Context, statusID string) error }
type StatusFave ¶ added in v0.8.0
type StatusFave interface { // GetStatusFaveByAccountID gets one status fave created by the given accountID, targeting the given statusID. GetStatusFave(ctx context.Context, accountID string, statusID string) (*gtsmodel.StatusFave, error) // GetStatusFaveByID returns one status fave with the given id. GetStatusFaveByID(ctx context.Context, id string) (*gtsmodel.StatusFave, error) // GetStatusFaveByURI returns one status fave with the given uri. GetStatusFaveByURI(ctx context.Context, uri string) (*gtsmodel.StatusFave, error) // GetStatusFaves returns a slice of faves/likes of the status with given ID. // This slice will be unfiltered, not taking account of blocks and whatnot, so filter it before serving it back to a user. GetStatusFaves(ctx context.Context, statusID string) ([]*gtsmodel.StatusFave, error) // PopulateStatusFave ensures that all sub-models of a fave are populated (account, status, etc). PopulateStatusFave(ctx context.Context, statusFave *gtsmodel.StatusFave) error // PutStatusFave inserts the given statusFave into the database. PutStatusFave(ctx context.Context, statusFave *gtsmodel.StatusFave) error // UpdateStatusFave updates one statusFave in the database. UpdateStatusFave(ctx context.Context, statusFave *gtsmodel.StatusFave, columns ...string) error // DeleteStatusFave deletes one status fave with the given id. DeleteStatusFaveByID(ctx context.Context, id string) error // DeleteStatusFaves mass deletes status faves targeting targetAccountID // and/or originating from originAccountID and/or faving statusID. // // If targetAccountID is set and originAccountID isn't, all status faves // that target the given account will be deleted. // // If originAccountID is set and targetAccountID isn't, all status faves // originating from the given account will be deleted. // // If both are set, then status faves that target targetAccountID and // originate from originAccountID will be deleted. // // At least one parameter must not be an empty string. DeleteStatusFaves(ctx context.Context, targetAccountID string, originAccountID string) error // DeleteStatusFavesForStatus deletes all status faves that target the given status ID. // This is useful when a status has been deleted, and you need to clean up after it. DeleteStatusFavesForStatus(ctx context.Context, statusID string) error // CountStatusFaves returns the number of status favourites registered for status with ID. CountStatusFaves(ctx context.Context, statusID string) (int, error) // IsStatusFavedBy returns whether the status with ID has been favourited by account with ID. IsStatusFavedBy(ctx context.Context, statusID string, accountID string) (bool, error) }
type Tag ¶ added in v0.11.0
type Tag interface { // GetTag gets a single tag by ID GetTag(ctx context.Context, id string) (*gtsmodel.Tag, error) // GetTagByName gets a single tag using the given name. GetTagByName(ctx context.Context, name string) (*gtsmodel.Tag, error) // PutTag inserts the given tag in the database. PutTag(ctx context.Context, tag *gtsmodel.Tag) error // GetTags gets multiple tags. GetTags(ctx context.Context, ids []string) ([]*gtsmodel.Tag, error) // GetFollowedTags gets the user's followed tags. GetFollowedTags(ctx context.Context, accountID string, page *paging.Page) ([]*gtsmodel.Tag, error) // IsAccountFollowingTag returns whether the account follows the given tag. IsAccountFollowingTag(ctx context.Context, accountID string, tagID string) (bool, error) // PutFollowedTag creates a new followed tag for a the given user. // If it already exists, it returns without an error. PutFollowedTag(ctx context.Context, accountID string, tagID string) error // DeleteFollowedTag deletes a followed tag for a the given user. // If no such followed tag exists, it returns without an error. DeleteFollowedTag(ctx context.Context, accountID string, tagID string) error // DeleteFollowedTagsByAccountID deletes all of an account's followed tags. DeleteFollowedTagsByAccountID(ctx context.Context, accountID string) error // GetAccountIDsFollowingTagIDs returns the account IDs of any followers of the given tag IDs. GetAccountIDsFollowingTagIDs(ctx context.Context, tagIDs []string) ([]string, error) }
Tag contains functions for getting/creating tags in the database.
type Thread ¶ added in v0.13.0
type Thread interface { // PutThread inserts a new thread. PutThread(ctx context.Context, thread *gtsmodel.Thread) error // GetThreadMute gets a single threadMute by its ID. GetThreadMute(ctx context.Context, id string) (*gtsmodel.ThreadMute, error) // GetThreadMutedByAccount gets a threadMute targeting the // given thread, created by the given accountID, if it exists. GetThreadMutedByAccount(ctx context.Context, threadID string, accountID string) (*gtsmodel.ThreadMute, error) // IsThreadMutedByAccount returns true if threadID is muted // by given account. Empty thread ID will return false early. IsThreadMutedByAccount(ctx context.Context, threadID string, accountID string) (bool, error) // PutThreadMute inserts a new threadMute. PutThreadMute(ctx context.Context, threadMute *gtsmodel.ThreadMute) error // DeleteThreadMute deletes threadMute with the given ID. DeleteThreadMute(ctx context.Context, id string) error }
Thread contains functions for getting/creating status threads and thread mutes in the database.
type Timeline ¶
type Timeline interface { // GetHomeTimeline returns a slice of statuses from accounts that are followed by the given account id. // // Statuses should be returned in descending order of when they were created (newest first). GetHomeTimeline(ctx context.Context, accountID string, maxID string, sinceID string, minID string, limit int, local bool) ([]*gtsmodel.Status, error) // GetPublicTimeline fetches the account's PUBLIC timeline -- ie., posts and replies that are public. // It will use the given filters and try to return as many statuses as possible up to the limit. // // Statuses should be returned in descending order of when they were created (newest first). GetPublicTimeline(ctx context.Context, maxID string, sinceID string, minID string, limit int, local bool) ([]*gtsmodel.Status, error) // GetFavedTimeline fetches the account's FAVED timeline -- ie., posts and replies that the requesting account has faved. // It will use the given filters and try to return as many statuses as possible up to the limit. // // Note that unlike the other GetTimeline functions, the returned statuses will be arranged by their FAVE id, not the STATUS id. // In other words, they'll be returned in descending order of when they were faved by the requesting user, not when they were created. // // Also note the extra return values, which correspond to the nextMaxID and prevMinID for building Link headers. GetFavedTimeline(ctx context.Context, accountID string, maxID string, minID string, limit int) ([]*gtsmodel.Status, string, string, error) // GetListTimeline returns a slice of statuses from followed accounts collected within the list with the given listID. // Statuses should be returned in descending order of when they were created (newest first). GetListTimeline(ctx context.Context, listID string, maxID string, sinceID string, minID string, limit int) ([]*gtsmodel.Status, error) // GetTagTimeline returns a slice of public-visibility statuses that use the given tagID. // Statuses should be returned in descending order of when they were created (newest first). GetTagTimeline(ctx context.Context, tagID string, maxID string, sinceID string, minID string, limit int) ([]*gtsmodel.Status, error) }
Timeline contains functionality for retrieving home/public/faved etc timelines for an account.
type Tombstone ¶ added in v0.6.0
type Tombstone interface { // GetTombstoneByURI attempts to fetch a tombstone by the given URI. GetTombstoneByURI(ctx context.Context, uri string) (*gtsmodel.Tombstone, error) // TombstoneExistsWithURI returns true if a tombstone with the given URI exists. TombstoneExistsWithURI(ctx context.Context, uri string) (bool, error) // PutTombstone creates a new tombstone in the database. PutTombstone(ctx context.Context, tombstone *gtsmodel.Tombstone) error // DeleteTombstone deletes a tombstone with the given ID. DeleteTombstone(ctx context.Context, id string) error }
Tombstone contains functionality for storing + retrieving tombstones for remote AP Activities + Objects.
type User ¶ added in v0.6.0
type User interface { // GetAllUsers returns all local user accounts, or an error if something goes wrong. GetAllUsers(ctx context.Context) ([]*gtsmodel.User, error) // GetUserByID returns one user with the given ID, or an error if something goes wrong. GetUserByID(ctx context.Context, id string) (*gtsmodel.User, error) // GetUserByAccountID returns one user by its account ID, or an error if something goes wrong. GetUserByAccountID(ctx context.Context, accountID string) (*gtsmodel.User, error) // GetUserByID returns one user with the given email address, or an error if something goes wrong. GetUserByEmailAddress(ctx context.Context, emailAddress string) (*gtsmodel.User, error) // GetUserByExternalID returns one user with the given external id, or an error if something goes wrong. GetUserByExternalID(ctx context.Context, id string) (*gtsmodel.User, error) // GetUserByConfirmationToken returns one user by its confirmation token, or an error if something goes wrong. GetUserByConfirmationToken(ctx context.Context, confirmationToken string) (*gtsmodel.User, error) // PopulateUser populates the struct pointers on the given user. PopulateUser(ctx context.Context, user *gtsmodel.User) error // PutUser will attempt to place user in the database PutUser(ctx context.Context, user *gtsmodel.User) error // UpdateUser updates one user by its primary key, updating either only the specified columns, or all of them. UpdateUser(ctx context.Context, user *gtsmodel.User, columns ...string) error // DeleteUserByID deletes one user by its ID. DeleteUserByID(ctx context.Context, userID string) error // PutDeniedUser inserts the given deniedUser into the db. PutDeniedUser(ctx context.Context, deniedUser *gtsmodel.DeniedUser) error // GetDeniedUserByID returns one denied user with the given ID. GetDeniedUserByID(ctx context.Context, id string) (*gtsmodel.DeniedUser, error) }
User contains functions related to user getting/setting/creation.
type Where ¶
type Where struct { // The table to search on. Key string // The value to match. Value interface{} // If set, reverse the where. // `WHERE k = v` becomes `WHERE k != v`. // `WHERE k IS NULL` becomes `WHERE k IS NOT NULL` Not bool }
Where allows the caller of the DB to specify Where parameters.
type WorkerTask ¶ added in v0.17.0
type WorkerTask interface { // GetWorkerTasks fetches all persisted worker tasks from the database. GetWorkerTasks(ctx context.Context) ([]*gtsmodel.WorkerTask, error) // PutWorkerTasks persists the given worker tasks to the database. PutWorkerTasks(ctx context.Context, tasks []*gtsmodel.WorkerTask) error // DeleteWorkerTask deletes worker task with given ID from database. DeleteWorkerTaskByID(ctx context.Context, id uint) error }
Source Files ¶
- account.go
- admin.go
- advancedmigration.go
- application.go
- basic.go
- conversation.go
- db.go
- domain.go
- emoji.go
- error.go
- filter.go
- headerfilter.go
- instance.go
- interaction.go
- list.go
- marker.go
- media.go
- mention.go
- move.go
- notification.go
- params.go
- poll.go
- relationship.go
- report.go
- rule.go
- search.go
- session.go
- sinbinstatus.go
- status.go
- statusbookmark.go
- statusfave.go
- tag.go
- thread.go
- timeline.go
- tombstone.go
- user.go
- util.go
- workertask.go
Directories ¶
Path | Synopsis |
---|---|
migrations/20211113114307_init
Package gtsmodel contains types used *internally* by GoToSocial and added/removed/selected from the database.
|
Package gtsmodel contains types used *internally* by GoToSocial and added/removed/selected from the database. |
migrations/20220214175650_media_cleanup
Package gtsmodel contains types used *internally* by GoToSocial and added/removed/selected from the database.
|
Package gtsmodel contains types used *internally* by GoToSocial and added/removed/selected from the database. |
migrations/20220315160814_admin_account_actions
Package gtsmodel contains types used *internally* by GoToSocial and added/removed/selected from the database.
|
Package gtsmodel contains types used *internally* by GoToSocial and added/removed/selected from the database. |