Files
backend_fiesta/services/catalogueService.go
2026-08-29 16:45:47 +05:30

51 lines
1.7 KiB
Go

package services
import (
"nearle/models"
"nearle/repositories"
)
type CatalogueService interface {
GetBrands() ([]models.CatalogueBrand, error)
GetCategories(brand string) ([]string, error)
GetProducts(brand, category, keyword string, pageno, pagesize int) ([]models.CatalogueProduct, int64, error)
GetProductBySKU(brand, sku string) (*models.CatalogueProduct, error)
GetProductByID(brand string, id int64) (*models.CatalogueProduct, error)
GetProductByImageID(brand, imageID string) (*models.CatalogueProduct, error)
}
type catalogueService struct {
repo repositories.CatalogueRepository
}
func NewCatalogueService(repo repositories.CatalogueRepository) CatalogueService {
return &catalogueService{repo: repo}
}
func (s *catalogueService) GetBrands() ([]models.CatalogueBrand, error) {
return s.repo.GetBrands()
}
func (s *catalogueService) GetCategories(brand string) ([]string, error) {
return s.repo.GetCategories(brand)
}
func (s *catalogueService) GetProducts(brand, category, keyword string, pageno, pagesize int) ([]models.CatalogueProduct, int64, error) {
return s.repo.GetProducts(brand, category, keyword, pageno, pagesize)
}
func (s *catalogueService) GetProductBySKU(brand, sku string) (*models.CatalogueProduct, error) {
return s.repo.GetProductBySKU(brand, sku)
}
// GetProductByImageID is the join the ingest manifest needs: the pipeline
// reports what it wrote as image_id values, and importing into a shop needs
// the row id.
func (s *catalogueService) GetProductByImageID(brand, imageID string) (*models.CatalogueProduct, error) {
return s.repo.GetProductByImageID(brand, imageID)
}
func (s *catalogueService) GetProductByID(brand string, id int64) (*models.CatalogueProduct, error) {
return s.repo.GetProductByID(brand, id)
}