51 lines
1.7 KiB
Go
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)
|
|
}
|