package services import ( "58team_blog/internal/application/commands" "58team_blog/internal/application/common" "58team_blog/internal/application/mapper" "58team_blog/internal/application/queries" "58team_blog/internal/domain/entities" "58team_blog/internal/domain/repository" "fmt" ) type ImagesService struct { repo repository.ImagesRepository } func NewImagesService(repo repository.ImagesRepository) ImagesService { return ImagesService{ repo: repo, } } func (s *ImagesService) Create(cmd commands.CreateImageCommand) (*common.ImageResult, error) { entity, err := entities.CreateImage(cmd.Path) if err != nil { return nil, err } if err := entity.Validate(); err != nil { return nil, err } if err := s.repo.Create(&entity); err != nil { return nil, err } result := mapper.CreateImageResultFromEntity(&entity) return result, nil } func (s *ImagesService) FindById(query queries.ImageFindByIdQuery) (*queries.ImageFindByIdResult, error) { entity, err := s.repo.FindById(query.Id) if err != nil { return nil, err } if err := entity.Validate(); err != nil { return nil, err } result := mapper.CreateImageFindByIdResultFromEntity(entity) return result, nil } func (s *ImagesService) Delete(cmd commands.DeleteImageCommand) error { entity, err := s.repo.FindById(cmd.Id) if err != nil { return fmt.Errorf("Image delete error: %s", err) } if err := entity.Validate(); err != nil { return err } if err := s.repo.Delete(entity.Id); err != nil { return err } return nil }