package com.zioinfo.mall.product.mapper;

import com.zioinfo.mall.product.MallProduct;
import com.zioinfo.mall.product.MallProductImage;
import com.zioinfo.mall.product.MallProductOption;
import com.zioinfo.mall.product.MallProductSize;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface ProductMapper {
    List<MallProduct> search(@Param("categoryId") Long categoryId,
                             @Param("keyword") String keyword,
                             @Param("status") String status,
                             @Param("occasion") String occasion,
                             @Param("flowerType") String flowerType,
                             @Param("maxPrice") java.math.BigDecimal maxPrice,
                             @Param("sort") String sort,
                             @Param("limit") int limit,
                             @Param("offset") int offset);
    int countSearch(@Param("categoryId") Long categoryId,
                    @Param("keyword") String keyword,
                    @Param("status") String status,
                    @Param("occasion") String occasion,
                    @Param("flowerType") String flowerType,
                    @Param("maxPrice") java.math.BigDecimal maxPrice);
    MallProduct findById(@Param("id") Long id);
    int insert(MallProduct p);
    int update(MallProduct p);
    int updateStatus(@Param("id") Long id, @Param("status") String status);
    int delete(@Param("id") Long id);
    int incSales(@Param("id") Long id, @Param("qty") int qty);

    List<MallProductOption> findOptions(@Param("productId") Long productId);
    int insertOption(MallProductOption o);
    int deleteOptions(@Param("productId") Long productId);

    List<MallProductImage> findImages(@Param("productId") Long productId);
    int insertImage(MallProductImage img);
    int deleteImages(@Param("productId") Long productId);

    List<MallProductSize> findSizes(@Param("productId") Long productId);
    int insertSize(MallProductSize s);
    int deleteSizes(@Param("productId") Long productId);
}
