package top.tqx.demo_1.service;

import top.tqx.demo_1.dto.ImageCreateRequest;
import top.tqx.demo_1.dto.ImageListResponse;
import top.tqx.demo_1.dto.ImageStatsResponse;
import top.tqx.demo_1.dto.ImageUpdateRequest;
import top.tqx.demo_1.entity.Image;

import java.util.List;
import java.util.Map;

public interface ImageService {

    ImageListResponse getImageList(Integer limit, Integer offset);

    byte[] getImage(String imageId);

    ImageStatsResponse getImageStats();

    Image createImage(ImageCreateRequest request);

    Image getImageById(Long id);

    Image updateImage(Long id, ImageUpdateRequest request);

    boolean deleteImage(Long id);

    int batchDeleteImages(List<Long> ids);

    Image getImageByImageId(String imageId);

    boolean existsByImageId(String imageId);

    Image downloadAndSaveImage(String imageId);

    Image downloadAndSaveImageWithMetadata(Map<String, Object> imageMetadata);

    Map<String, Object> getImageInfo(String imageId);
}