gotosocial/internal/db/account.go

87 lines
4.3 KiB
Go
Raw Normal View History

2021-08-17 19:03:41 +02:00
/*
GoToSocial
Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package db
2021-08-18 12:08:24 +02:00
import (
"time"
2021-08-18 12:08:24 +02:00
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
)
2021-08-17 15:23:28 +02:00
2021-08-19 15:40:33 +02:00
// Account contains functions related to account getting/setting/creation.
2021-08-18 12:08:24 +02:00
type Account interface {
2021-08-17 15:23:28 +02:00
// GetAccountByID returns one account with the given ID, or an error if something goes wrong.
2021-08-19 15:40:33 +02:00
GetAccountByID(id string) (*gtsmodel.Account, Error)
2021-08-17 15:23:28 +02:00
// GetAccountByURI returns one account with the given URI, or an error if something goes wrong.
2021-08-19 15:40:33 +02:00
GetAccountByURI(uri string) (*gtsmodel.Account, Error)
2021-08-18 12:41:43 +02:00
// GetAccountByURL returns one account with the given URL, or an error if something goes wrong.
2021-08-19 15:40:33 +02:00
GetAccountByURL(uri string) (*gtsmodel.Account, Error)
2021-08-18 12:41:43 +02:00
2021-08-19 22:05:24 +02:00
// GetLocalAccountByUsername returns an account on this instance by its username.
2021-08-19 15:40:33 +02:00
GetLocalAccountByUsername(username string) (*gtsmodel.Account, Error)
2021-08-19 22:05:24 +02:00
// GetAccountFollowRequests returns all follow requests targeting the given account.
GetAccountFollowRequests(accountID string) ([]gtsmodel.FollowRequest, Error)
2021-08-19 22:05:24 +02:00
// GetAccountFollows returns a slice of follows owned by the given accountID.
GetAccountFollows(accountID string, following *[]gtsmodel.Follow) Error
2021-08-17 15:23:28 +02:00
2021-08-19 22:05:24 +02:00
// CountAccountFollowing returns the amount of accounts that the given accountID is following.
2021-08-19 15:40:33 +02:00
CountAccountFollowing(accountID string, localOnly bool) (int, Error)
// GetAccountFollowers is a shortcut for the common action of fetching a list of accounts that accountID is followed by.
// The given slice 'followers' will be set to the result of the query, whatever it is.
// In case of no entries, a 'no entries' error will be returned
//
// If localOnly is set to true, then only followers from *this instance* will be returned.
2021-08-19 15:40:33 +02:00
GetAccountFollowers(accountID string, followers *[]gtsmodel.Follow, localOnly bool) Error
2021-08-17 15:23:28 +02:00
2021-08-19 22:05:24 +02:00
// CountAccountFollowers returns the amounts that the given ID is followed by.
2021-08-19 15:40:33 +02:00
CountAccountFollowers(accountID string, localOnly bool) (int, Error)
// GetAccountFaves is a shortcut for the common action of fetching a list of faves made by the given accountID.
// The given slice 'faves' will be set to the result of the query, whatever it is.
// In case of no entries, a 'no entries' error will be returned
2021-08-19 15:40:33 +02:00
GetAccountFaves(accountID string, faves *[]gtsmodel.StatusFave) Error
// GetAccountStatusesCount is a shortcut for the common action of counting statuses produced by accountID.
2021-08-19 15:40:33 +02:00
CountAccountStatuses(accountID string) (int, 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 case of no entries, a 'no entries' error will be returned
2021-08-19 15:40:33 +02:00
GetAccountStatuses(accountID string, limit int, excludeReplies bool, maxID string, pinnedOnly bool, mediaOnly bool) ([]*gtsmodel.Status, Error)
2021-08-19 15:40:33 +02:00
GetAccountBlocks(accountID string, maxID string, sinceID string, limit int) ([]*gtsmodel.Account, string, string, Error)
2021-08-18 12:08:24 +02:00
// GetAccountLastPosted simply gets the timestamp of the most recent post by the account.
//
// The returned time will be zero if account has never posted anything.
2021-08-19 15:40:33 +02:00
GetAccountLastPosted(accountID string) (time.Time, Error)
// SetAccountHeaderOrAvatar sets the header or avatar for the given accountID to the given media attachment.
2021-08-19 15:40:33 +02:00
SetAccountHeaderOrAvatar(mediaAttachment *gtsmodel.MediaAttachment, accountID string) Error
2021-08-17 15:23:28 +02:00
// GetInstanceAccount returns the instance account for the given domain.
// If domain is empty, this instance account will be returned.
2021-08-19 15:40:33 +02:00
GetInstanceAccount(domain string) (*gtsmodel.Account, Error)
}