mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 04:52:24 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			52 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package status
 | |
| 
 | |
| import (
 | |
| 	"github.com/sirupsen/logrus"
 | |
| 	apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
 | |
| 	"github.com/superseriousbusiness/gotosocial/internal/config"
 | |
| 	"github.com/superseriousbusiness/gotosocial/internal/db"
 | |
| 	"github.com/superseriousbusiness/gotosocial/internal/gtserror"
 | |
| 	"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
 | |
| 	"github.com/superseriousbusiness/gotosocial/internal/typeutils"
 | |
| )
 | |
| 
 | |
| // Processor wraps a bunch of functions for processing statuses.
 | |
| type Processor interface {
 | |
| 	// Create processes the given form to create a new status, returning the api model representation of that status if it's OK.
 | |
| 	Create(account *gtsmodel.Account, application *gtsmodel.Application, form *apimodel.AdvancedStatusCreateForm) (*apimodel.Status, gtserror.WithCode)
 | |
| 	// Delete processes the delete of a given status, returning the deleted status if the delete goes through.
 | |
| 	Delete(account *gtsmodel.Account, targetStatusID string) (*apimodel.Status, gtserror.WithCode)
 | |
| 	// Fave processes the faving of a given status, returning the updated status if the fave goes through.
 | |
| 	Fave(account *gtsmodel.Account, targetStatusID string) (*apimodel.Status, gtserror.WithCode)
 | |
| 	// Boost processes the boost/reblog of a given status, returning the newly-created boost if all is well.
 | |
| 	Boost(account *gtsmodel.Account, application *gtsmodel.Application, targetStatusID string) (*apimodel.Status, gtserror.WithCode)
 | |
| 	// BoostedBy returns a slice of accounts that have boosted the given status, filtered according to privacy settings.
 | |
| 	BoostedBy(account *gtsmodel.Account, targetStatusID string) ([]*apimodel.Account, gtserror.WithCode)
 | |
| 	// FavedBy returns a slice of accounts that have liked the given status, filtered according to privacy settings.
 | |
| 	FavedBy(account *gtsmodel.Account, targetStatusID string) ([]*apimodel.Account, gtserror.WithCode)
 | |
| 	// Get gets the given status, taking account of privacy settings and blocks etc.
 | |
| 	Get(account *gtsmodel.Account, targetStatusID string) (*apimodel.Status, gtserror.WithCode)
 | |
| 	// Unfave processes the unfaving of a given status, returning the updated status if the fave goes through.
 | |
| 	Unfave(account *gtsmodel.Account, targetStatusID string) (*apimodel.Status, gtserror.WithCode)
 | |
| 	// Context returns the context (previous and following posts) from the given status ID
 | |
| 	Context(account *gtsmodel.Account, targetStatusID string) (*apimodel.Context, gtserror.WithCode)
 | |
| }
 | |
| 
 | |
| type processor struct {
 | |
| 	tc            typeutils.TypeConverter
 | |
| 	config        *config.Config
 | |
| 	db            db.DB
 | |
| 	fromClientAPI chan gtsmodel.FromClientAPI
 | |
| 	log           *logrus.Logger
 | |
| }
 | |
| 
 | |
| // New returns a new status processor.
 | |
| func New(db db.DB, tc typeutils.TypeConverter, config *config.Config, fromClientAPI chan gtsmodel.FromClientAPI, log *logrus.Logger) Processor {
 | |
| 	return &processor{
 | |
| 		tc:            tc,
 | |
| 		config:        config,
 | |
| 		db:            db,
 | |
| 		fromClientAPI: fromClientAPI,
 | |
| 		log:           log,
 | |
| 	}
 | |
| }
 |