fix
This commit is contained in:
@@ -1,22 +1,22 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"apskel-pos-be/internal/models"
|
||||
"apskel-pos-be/internal/contract"
|
||||
"apskel-pos-be/internal/processor"
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type ProductRecipeService interface {
|
||||
Create(ctx context.Context, organizationID uuid.UUID, req *models.CreateProductRecipeRequest) (*models.ProductRecipeResponse, error)
|
||||
GetByID(ctx context.Context, id uuid.UUID, organizationID uuid.UUID) (*models.ProductRecipeResponse, error)
|
||||
GetByProductID(ctx context.Context, productID uuid.UUID, organizationID uuid.UUID) ([]*models.ProductRecipeResponse, error)
|
||||
GetByProductAndVariantID(ctx context.Context, productID uuid.UUID, variantID *uuid.UUID, organizationID uuid.UUID) ([]*models.ProductRecipeResponse, error)
|
||||
GetByIngredientID(ctx context.Context, ingredientID uuid.UUID, organizationID uuid.UUID) ([]*models.ProductRecipeResponse, error)
|
||||
Update(ctx context.Context, id uuid.UUID, organizationID uuid.UUID, req *models.UpdateProductRecipeRequest) (*models.ProductRecipeResponse, error)
|
||||
Create(ctx context.Context, organizationID uuid.UUID, req *contract.CreateProductRecipeRequest) (*contract.ProductRecipeResponse, error)
|
||||
GetByID(ctx context.Context, id uuid.UUID, organizationID uuid.UUID) (*contract.ProductRecipeResponse, error)
|
||||
GetByProductID(ctx context.Context, req *contract.GetProductRecipeByProductIDRequest, organizationID uuid.UUID) ([]*contract.ProductRecipeResponse, error)
|
||||
GetByIngredientID(ctx context.Context, ingredientID uuid.UUID, organizationID uuid.UUID) ([]*contract.ProductRecipeResponse, error)
|
||||
Update(ctx context.Context, id uuid.UUID, organizationID uuid.UUID, req *contract.UpdateProductRecipeRequest) (*contract.ProductRecipeResponse, error)
|
||||
Delete(ctx context.Context, id uuid.UUID, organizationID uuid.UUID) error
|
||||
BulkCreate(ctx context.Context, organizationID uuid.UUID, recipes []models.CreateProductRecipeRequest) ([]*models.ProductRecipeResponse, error)
|
||||
BulkCreate(ctx context.Context, organizationID uuid.UUID, req *contract.BulkCreateProductRecipeRequest) ([]*contract.ProductRecipeResponse, error)
|
||||
}
|
||||
|
||||
type ProductRecipeServiceImpl struct {
|
||||
@@ -29,34 +29,86 @@ func NewProductRecipeService(processor processor.ProductRecipeProcessor) *Produc
|
||||
}
|
||||
}
|
||||
|
||||
func (s *ProductRecipeServiceImpl) Create(ctx context.Context, organizationID uuid.UUID, req *models.CreateProductRecipeRequest) (*models.ProductRecipeResponse, error) {
|
||||
func (s *ProductRecipeServiceImpl) Create(ctx context.Context, organizationID uuid.UUID, req *contract.CreateProductRecipeRequest) (*contract.ProductRecipeResponse, error) {
|
||||
// Validate request
|
||||
if req == nil {
|
||||
return nil, fmt.Errorf("request cannot be nil")
|
||||
}
|
||||
|
||||
// Call processor to handle business logic
|
||||
return s.processor.Create(ctx, req, organizationID)
|
||||
}
|
||||
|
||||
func (s *ProductRecipeServiceImpl) GetByID(ctx context.Context, id uuid.UUID, organizationID uuid.UUID) (*models.ProductRecipeResponse, error) {
|
||||
func (s *ProductRecipeServiceImpl) GetByID(ctx context.Context, id uuid.UUID, organizationID uuid.UUID) (*contract.ProductRecipeResponse, error) {
|
||||
// Validate ID
|
||||
if id == uuid.Nil {
|
||||
return nil, fmt.Errorf("invalid recipe ID")
|
||||
}
|
||||
|
||||
return s.processor.GetByID(ctx, id, organizationID)
|
||||
}
|
||||
|
||||
func (s *ProductRecipeServiceImpl) GetByProductID(ctx context.Context, productID uuid.UUID, organizationID uuid.UUID) ([]*models.ProductRecipeResponse, error) {
|
||||
return s.processor.GetByProductID(ctx, productID, organizationID)
|
||||
func (s *ProductRecipeServiceImpl) GetByProductID(ctx context.Context, req *contract.GetProductRecipeByProductIDRequest, organizationID uuid.UUID) ([]*contract.ProductRecipeResponse, error) {
|
||||
// Validate request
|
||||
if req == nil {
|
||||
return nil, fmt.Errorf("request cannot be nil")
|
||||
}
|
||||
|
||||
// Validate product ID
|
||||
if req.ProductID == uuid.Nil {
|
||||
return nil, fmt.Errorf("invalid product ID")
|
||||
}
|
||||
|
||||
// If variant ID is provided, get by product and variant
|
||||
if req.VariantID != nil {
|
||||
return s.processor.GetByProductAndVariantID(ctx, req.ProductID, req.VariantID, organizationID)
|
||||
}
|
||||
|
||||
// Otherwise get by product ID only
|
||||
return s.processor.GetByProductID(ctx, req.ProductID, organizationID)
|
||||
}
|
||||
|
||||
func (s *ProductRecipeServiceImpl) GetByProductAndVariantID(ctx context.Context, productID uuid.UUID, variantID *uuid.UUID, organizationID uuid.UUID) ([]*models.ProductRecipeResponse, error) {
|
||||
return s.processor.GetByProductAndVariantID(ctx, productID, variantID, organizationID)
|
||||
}
|
||||
func (s *ProductRecipeServiceImpl) GetByIngredientID(ctx context.Context, ingredientID uuid.UUID, organizationID uuid.UUID) ([]*contract.ProductRecipeResponse, error) {
|
||||
// Validate ingredient ID
|
||||
if ingredientID == uuid.Nil {
|
||||
return nil, fmt.Errorf("invalid ingredient ID")
|
||||
}
|
||||
|
||||
func (s *ProductRecipeServiceImpl) GetByIngredientID(ctx context.Context, ingredientID uuid.UUID, organizationID uuid.UUID) ([]*models.ProductRecipeResponse, error) {
|
||||
return s.processor.GetByIngredientID(ctx, ingredientID, organizationID)
|
||||
}
|
||||
|
||||
func (s *ProductRecipeServiceImpl) Update(ctx context.Context, id uuid.UUID, organizationID uuid.UUID, req *models.UpdateProductRecipeRequest) (*models.ProductRecipeResponse, error) {
|
||||
func (s *ProductRecipeServiceImpl) Update(ctx context.Context, id uuid.UUID, organizationID uuid.UUID, req *contract.UpdateProductRecipeRequest) (*contract.ProductRecipeResponse, error) {
|
||||
// Validate ID
|
||||
if id == uuid.Nil {
|
||||
return nil, fmt.Errorf("invalid recipe ID")
|
||||
}
|
||||
|
||||
// Validate request
|
||||
if req == nil {
|
||||
return nil, fmt.Errorf("request cannot be nil")
|
||||
}
|
||||
|
||||
return s.processor.Update(ctx, id, req, organizationID)
|
||||
}
|
||||
|
||||
func (s *ProductRecipeServiceImpl) Delete(ctx context.Context, id uuid.UUID, organizationID uuid.UUID) error {
|
||||
// Validate ID
|
||||
if id == uuid.Nil {
|
||||
return fmt.Errorf("invalid recipe ID")
|
||||
}
|
||||
|
||||
return s.processor.Delete(ctx, id, organizationID)
|
||||
}
|
||||
|
||||
func (s *ProductRecipeServiceImpl) BulkCreate(ctx context.Context, organizationID uuid.UUID, recipes []models.CreateProductRecipeRequest) ([]*models.ProductRecipeResponse, error) {
|
||||
return s.processor.BulkCreate(ctx, recipes, organizationID)
|
||||
}
|
||||
func (s *ProductRecipeServiceImpl) BulkCreate(ctx context.Context, organizationID uuid.UUID, req *contract.BulkCreateProductRecipeRequest) ([]*contract.ProductRecipeResponse, error) {
|
||||
// Validate request
|
||||
if req == nil {
|
||||
return nil, fmt.Errorf("request cannot be nil")
|
||||
}
|
||||
|
||||
if len(req.Recipes) == 0 {
|
||||
return nil, fmt.Errorf("at least one recipe is required")
|
||||
}
|
||||
|
||||
return s.processor.BulkCreate(ctx, req.Recipes, organizationID)
|
||||
}
|
||||
Reference in New Issue
Block a user