package models import "context" // StudioGetter provides methods to get studios by ID. type StudioGetter interface { // TODO - rename this to Find and remove existing method FindMany(ctx context.Context, ids []int) ([]*Studio, error) Find(ctx context.Context, id int) (*Studio, error) } // StudioFinder provides methods to find studios. type StudioFinder interface { StudioGetter FindChildren(ctx context.Context, id int) ([]*Studio, error) FindBySceneID(ctx context.Context, sceneID int) (*Studio, error) FindByStashID(ctx context.Context, stashID StashID) ([]*Studio, error) FindByStashIDStatus(ctx context.Context, hasStashID bool, stashboxEndpoint string) ([]*Studio, error) FindByName(ctx context.Context, name string, nocase bool) (*Studio, error) } // StudioQueryer provides methods to query studios. type StudioQueryer interface { Query(ctx context.Context, studioFilter *StudioFilterType, findFilter *FindFilterType) ([]*Studio, int, error) } type StudioAutoTagQueryer interface { StudioQueryer AliasLoader // TODO - this interface is temporary until the filter schema can fully // support the query needed QueryForAutoTag(ctx context.Context, words []string) ([]*Studio, error) } // StudioCounter provides methods to count studios. type StudioCounter interface { Count(ctx context.Context) (int, error) } // StudioCreator provides methods to create studios. type StudioCreator interface { Create(ctx context.Context, newStudio *Studio) error } // StudioUpdater provides methods to update studios. type StudioUpdater interface { Update(ctx context.Context, updatedStudio *Studio) error UpdatePartial(ctx context.Context, updatedStudio StudioPartial) (*Studio, error) UpdateImage(ctx context.Context, studioID int, image []byte) error } // StudioDestroyer provides methods to destroy studios. type StudioDestroyer interface { Destroy(ctx context.Context, id int) error } type StudioFinderCreator interface { StudioFinder StudioCreator } type StudioCreatorUpdater interface { StudioCreator StudioUpdater } // StudioReader provides all methods to read studios. type StudioReader interface { StudioFinder StudioQueryer StudioAutoTagQueryer StudioCounter AliasLoader StashIDLoader All(ctx context.Context) ([]*Studio, error) GetImage(ctx context.Context, studioID int) ([]byte, error) HasImage(ctx context.Context, studioID int) (bool, error) } // StudioWriter provides all methods to modify studios. type StudioWriter interface { StudioCreator StudioUpdater StudioDestroyer } // StudioReaderWriter provides all studio methods. type StudioReaderWriter interface { StudioReader StudioWriter }