package service import ( "context" "orderservice/internal/domain" "orderservice/internal/repository" "github.com/google/uuid" ) type OrderService struct { repo repository.OrderRepository } func NewOrderService(repo repository.OrderRepository) *OrderService { return &OrderService{ repo: repo, } } func (s *OrderService) Create(ctx context.Context, item string, quantity int32) (*domain.Order, error) { order, err := domain.NewOrder(uuid.New(), item, quantity) if err != nil { return nil, err } if err := s.repo.Create(ctx, order); err != nil { return nil, err } return order, nil } func (s *OrderService) Get(ctx context.Context, id uuid.UUID) (*domain.Order, error) { return s.repo.Get(ctx, id) } func (s *OrderService) Update(ctx context.Context, id uuid.UUID, item string, quantity int32) (*domain.Order, error) { order, err := domain.NewOrder(id, item, quantity) if err != nil { return nil, err } if err := s.repo.Update(ctx, order); err != nil { return nil, err } return order, nil } func (s *OrderService) Delete(ctx context.Context, id uuid.UUID) error { return s.repo.Delete(ctx, id) } func (s *OrderService) List(ctx context.Context) ([]*domain.Order, error) { return s.repo.List(ctx) }