package address

import (
	"context"

	"github.com/UpmeshLTD/urus-aio/infrastructure/db/entities"
)

type Service interface {
	CreateAddress(ctx context.Context, address *entities.Address) (*entities.Address, error)
	UpdateAddress(ctx context.Context, id entities.ID, address *entities.Address) error
	DeleteAddress(ctx context.Context, id entities.ID) error
	GetAddressByID(ctx context.Context, id entities.ID) (*entities.Address, error)
}

type serviceImpl struct {
	repo Repository
}

func NewService(repo Repository) Service {
	return &serviceImpl{
		repo: repo,
	}
}

func (s *serviceImpl) CreateAddress(ctx context.Context, address *entities.Address) (*entities.Address, error) {
	return s.repo.CreateAddress(ctx, address)
}

func (s *serviceImpl) UpdateAddress(ctx context.Context, id entities.ID, address *entities.Address) error {
	return s.repo.UpdateAddress(ctx, id, address)
}

func (s *serviceImpl) DeleteAddress(ctx context.Context, id entities.ID) error {
	return s.repo.DeleteAddress(ctx, id)
}

func (s *serviceImpl) GetAddressByID(ctx context.Context, id entities.ID) (*entities.Address, error) {
	return s.repo.GetAddressByID(ctx, id)
}
