package work import ( "context" "gorm.io/gorm" "tercul/internal/domain" ) // WorkRepository defines methods specific to Work. type WorkRepository interface { domain.BaseRepository[Work] FindByTitle(ctx context.Context, title string) ([]Work, error) FindByAuthor(ctx context.Context, authorID uint) ([]Work, error) FindByCategory(ctx context.Context, categoryID uint) ([]Work, error) FindByLanguage(ctx context.Context, language string, page, pageSize int) (*domain.PaginatedResult[Work], error) GetWithTranslations(ctx context.Context, id uint) (*Work, error) GetWithAssociations(ctx context.Context, id uint) (*Work, error) GetWithAssociationsInTx(ctx context.Context, tx *gorm.DB, id uint) (*Work, error) ListWithTranslations(ctx context.Context, page, pageSize int) (*domain.PaginatedResult[Work], error) IsAuthor(ctx context.Context, workID uint, authorID uint) (bool, error) }