diff options
Diffstat (limited to 'internal/gtsmodel')
| -rw-r--r-- | internal/gtsmodel/interaction.go | 7 | ||||
| -rw-r--r-- | internal/gtsmodel/notification.go | 4 | ||||
| -rw-r--r-- | internal/gtsmodel/status.go | 7 | ||||
| -rw-r--r-- | internal/gtsmodel/statusfave.go | 7 |
4 files changed, 23 insertions, 2 deletions
diff --git a/internal/gtsmodel/interaction.go b/internal/gtsmodel/interaction.go index 92dd1a4e0..0b9ee693e 100644 --- a/internal/gtsmodel/interaction.go +++ b/internal/gtsmodel/interaction.go @@ -95,3 +95,10 @@ func (ir *InteractionRequest) IsAccepted() bool { func (ir *InteractionRequest) IsRejected() bool { return !ir.RejectedAt.IsZero() } + +// Interaction abstractly represents +// one interaction with a status, via +// liking, replying to, or boosting it. +type Interaction interface { + GetAccount() *Account +} diff --git a/internal/gtsmodel/notification.go b/internal/gtsmodel/notification.go index d160e0883..cc892bdd5 100644 --- a/internal/gtsmodel/notification.go +++ b/internal/gtsmodel/notification.go @@ -32,8 +32,8 @@ type Notification struct { TargetAccount *Account `bun:"-"` // Account corresponding to TargetAccountID. Can be nil, always check first + select using ID if necessary. OriginAccountID string `bun:"type:CHAR(26),nullzero,notnull"` // ID of the account that performed the action that created the notification. OriginAccount *Account `bun:"-"` // Account corresponding to OriginAccountID. Can be nil, always check first + select using ID if necessary. - StatusID string `bun:"type:CHAR(26),nullzero"` // If the notification pertains to a status, what is the database ID of that status? - Status *Status `bun:"-"` // Status corresponding to StatusID. Can be nil, always check first + select using ID if necessary. + StatusOrEditID string `bun:"status_id,type:CHAR(26),nullzero"` // If the notification pertains to a status or a status edit event, what is the database ID of the status or status edit? + Status *Status `bun:"-"` // Status corresponding to StatusOrEditID. Can be nil, always check first + select using ID if necessary. Read *bool `bun:",nullzero,notnull,default:false"` // Notification has been seen/read } diff --git a/internal/gtsmodel/status.go b/internal/gtsmodel/status.go index eca50416e..884caac0c 100644 --- a/internal/gtsmodel/status.go +++ b/internal/gtsmodel/status.go @@ -89,6 +89,13 @@ func (s *Status) GetAccountID() string { return s.AccountID } +// GetAccount returns the account that owns +// this status. May be nil if status not populated. +// Fulfils Interaction interface. +func (s *Status) GetAccount() *Account { + return s.Account +} + // GetBoostOfID implements timeline.Timelineable{}. func (s *Status) GetBoostOfID() string { return s.BoostOfID diff --git a/internal/gtsmodel/statusfave.go b/internal/gtsmodel/statusfave.go index 9d6c6335b..6fe4ed821 100644 --- a/internal/gtsmodel/statusfave.go +++ b/internal/gtsmodel/statusfave.go @@ -35,3 +35,10 @@ type StatusFave struct { PreApproved bool `bun:"-"` // If true, then fave targets a status on our instance, has permission to do the interaction, and an Accept should be sent out for it immediately. Field not stored in the DB. ApprovedByURI string `bun:",nullzero"` // URI of an Accept Activity that approves this Like. } + +// GetAccount returns the account that owns +// this fave. May be nil if fave not populated. +// Fulfils Interaction interface. +func (f *StatusFave) GetAccount() *Account { + return f.Account +} |
