init
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"apskel-pos-be/internal/appcontext"
|
||||
"apskel-pos-be/internal/constants"
|
||||
"apskel-pos-be/internal/contract"
|
||||
"apskel-pos-be/internal/processor"
|
||||
"apskel-pos-be/internal/transformer"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type ProductVariantService interface {
|
||||
CreateProductVariant(ctx context.Context, apctx *appcontext.ContextInfo, req *contract.CreateProductVariantRequest) *contract.Response
|
||||
UpdateProductVariant(ctx context.Context, id uuid.UUID, req *contract.UpdateProductVariantRequest) *contract.Response
|
||||
DeleteProductVariant(ctx context.Context, id uuid.UUID) *contract.Response
|
||||
GetProductVariantByID(ctx context.Context, id uuid.UUID) *contract.Response
|
||||
GetProductVariantsByProductID(ctx context.Context, productID uuid.UUID) *contract.Response
|
||||
}
|
||||
|
||||
type ProductVariantServiceImpl struct {
|
||||
productVariantProcessor processor.ProductVariantProcessor
|
||||
}
|
||||
|
||||
func NewProductVariantService(productVariantProcessor processor.ProductVariantProcessor) *ProductVariantServiceImpl {
|
||||
return &ProductVariantServiceImpl{
|
||||
productVariantProcessor: productVariantProcessor,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *ProductVariantServiceImpl) CreateProductVariant(ctx context.Context, apctx *appcontext.ContextInfo, req *contract.CreateProductVariantRequest) *contract.Response {
|
||||
modelReq := transformer.CreateProductVariantRequestToModel(req)
|
||||
|
||||
variantResponse, err := s.productVariantProcessor.CreateProductVariant(ctx, modelReq)
|
||||
if err != nil {
|
||||
errorResp := contract.NewResponseError(constants.InternalServerErrorCode, constants.ProductVariantServiceEntity, err.Error())
|
||||
return contract.BuildErrorResponse([]*contract.ResponseError{errorResp})
|
||||
}
|
||||
|
||||
contractResponse := transformer.ProductVariantModelResponseToResponse(variantResponse)
|
||||
return contract.BuildSuccessResponse(contractResponse)
|
||||
}
|
||||
|
||||
func (s *ProductVariantServiceImpl) UpdateProductVariant(ctx context.Context, id uuid.UUID, req *contract.UpdateProductVariantRequest) *contract.Response {
|
||||
modelReq := transformer.UpdateProductVariantRequestToModel(req)
|
||||
|
||||
variantResponse, err := s.productVariantProcessor.UpdateProductVariant(ctx, id, modelReq)
|
||||
if err != nil {
|
||||
errorResp := contract.NewResponseError(constants.InternalServerErrorCode, constants.ProductVariantServiceEntity, err.Error())
|
||||
return contract.BuildErrorResponse([]*contract.ResponseError{errorResp})
|
||||
}
|
||||
|
||||
contractResponse := transformer.ProductVariantModelResponseToResponse(variantResponse)
|
||||
return contract.BuildSuccessResponse(contractResponse)
|
||||
}
|
||||
|
||||
func (s *ProductVariantServiceImpl) DeleteProductVariant(ctx context.Context, id uuid.UUID) *contract.Response {
|
||||
err := s.productVariantProcessor.DeleteProductVariant(ctx, id)
|
||||
if err != nil {
|
||||
errorResp := contract.NewResponseError(constants.InternalServerErrorCode, constants.ProductVariantServiceEntity, err.Error())
|
||||
return contract.BuildErrorResponse([]*contract.ResponseError{errorResp})
|
||||
}
|
||||
|
||||
return contract.BuildSuccessResponse(map[string]interface{}{
|
||||
"message": "Product variant deleted successfully",
|
||||
})
|
||||
}
|
||||
|
||||
func (s *ProductVariantServiceImpl) GetProductVariantByID(ctx context.Context, id uuid.UUID) *contract.Response {
|
||||
variantResponse, err := s.productVariantProcessor.GetProductVariantByID(ctx, id)
|
||||
if err != nil {
|
||||
errorResp := contract.NewResponseError(constants.InternalServerErrorCode, constants.ProductVariantServiceEntity, err.Error())
|
||||
return contract.BuildErrorResponse([]*contract.ResponseError{errorResp})
|
||||
}
|
||||
|
||||
contractResponse := transformer.ProductVariantModelResponseToResponse(variantResponse)
|
||||
return contract.BuildSuccessResponse(contractResponse)
|
||||
}
|
||||
|
||||
func (s *ProductVariantServiceImpl) GetProductVariantsByProductID(ctx context.Context, productID uuid.UUID) *contract.Response {
|
||||
variants, err := s.productVariantProcessor.GetProductVariantsByProductID(ctx, productID)
|
||||
if err != nil {
|
||||
errorResp := contract.NewResponseError(constants.InternalServerErrorCode, constants.ProductVariantServiceEntity, err.Error())
|
||||
return contract.BuildErrorResponse([]*contract.ResponseError{errorResp})
|
||||
}
|
||||
|
||||
contractResponses := transformer.ProductVariantsToResponses(variants)
|
||||
return contract.BuildSuccessResponse(contractResponses)
|
||||
}
|
||||
Reference in New Issue
Block a user