mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[feature] Account alias / move API + db models (#2518)
* [feature] Account alias / move API + db models * go fmt * fix little cherry-pick issues * update error checking, formatting * add and use new util functions to simplify alias logic
This commit is contained in:
@@ -52,8 +52,10 @@ type Account struct {
|
||||
Note string `bun:""` // A note that this account has on their profile (ie., the account's bio/description of themselves)
|
||||
NoteRaw string `bun:""` // The raw contents of .Note without conversion to HTML, only available when requester = target
|
||||
Memorial *bool `bun:",default:false"` // Is this a memorial account, ie., has the user passed away?
|
||||
AlsoKnownAs string `bun:"type:CHAR(26),nullzero"` // This account is associated with x account id (TODO: migrate to be AlsoKnownAsID)
|
||||
MovedToAccountID string `bun:"type:CHAR(26),nullzero"` // This account has moved this account id in the database
|
||||
AlsoKnownAsURIs []string `bun:"also_known_as_uris,nullzero"` // This account is associated with these account URIs.
|
||||
AlsoKnownAs []*Account `bun:"-"` // This account is associated with these accounts (field not stored in the db).
|
||||
MovedToURI string `bun:",nullzero"` // This account has moved to this account URI.
|
||||
MovedTo *Account `bun:"-"` // This account has moved to this account (field not stored in the db).
|
||||
Bot *bool `bun:",default:false"` // Does this account identify itself as a bot?
|
||||
Reason string `bun:""` // What reason was given for signing up when this account was created?
|
||||
Locked *bool `bun:",default:true"` // Does this account need an approval for new followers?
|
||||
@@ -109,7 +111,8 @@ func (a *Account) IsInstance() bool {
|
||||
a.Username == "instance.actor" // <- misskey
|
||||
}
|
||||
|
||||
// EmojisPopulated returns whether emojis are populated according to current EmojiIDs.
|
||||
// EmojisPopulated returns whether emojis are
|
||||
// populated according to current EmojiIDs.
|
||||
func (a *Account) EmojisPopulated() bool {
|
||||
if len(a.EmojiIDs) != len(a.Emojis) {
|
||||
// this is the quickest indicator.
|
||||
@@ -130,6 +133,28 @@ func (a *Account) EmojisPopulated() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
// AlsoKnownAsPopulated returns whether alsoKnownAs accounts
|
||||
// are populated according to current AlsoKnownAsURIs.
|
||||
func (a *Account) AlsoKnownAsPopulated() bool {
|
||||
if len(a.AlsoKnownAsURIs) != len(a.AlsoKnownAs) {
|
||||
// this is the quickest indicator.
|
||||
return false
|
||||
}
|
||||
|
||||
// Accounts must be in same order.
|
||||
for i, uri := range a.AlsoKnownAsURIs {
|
||||
if a.AlsoKnownAs[i] == nil {
|
||||
log.Warnf(nil, "nil account in alsoKnownAs slice for account %s", a.URI)
|
||||
continue
|
||||
}
|
||||
if a.AlsoKnownAs[i].URI != uri {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
// PubKeyExpired returns true if the account's public key
|
||||
// has been marked as expired, and the expiry time has passed.
|
||||
func (a *Account) PubKeyExpired() bool {
|
||||
|
Reference in New Issue
Block a user