package cn.edu.ecnu.stu.bookstore.mapper;

import cn.edu.ecnu.stu.bookstore.pojo.Book;
import cn.edu.ecnu.stu.bookstore.pojo.Order;
import cn.edu.ecnu.stu.bookstore.pojo.OrderStatus;
import org.apache.ibatis.annotations.*;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

@Mapper
public interface OrderMapper {

    @Insert("insert into t_order(order_id, buyer_id, from_address, to_address, price, status, store_id) values " +
            "(#{order.orderId}, #{order.buyerId}, #{order.fromAddress}, #{order.toAddress}, #{order.price}, #{order.status.value}, " +
            "#{order.storeId})")
    int insert(@Param("order")Order order);

    int insertOrderBook(@Param("orderId") String orderId, @Param("books") List<Map<String, Object>> books);

    @Select("select price from t_order where order_id = #{orderId}")
    BigDecimal selectPrice(@Param("orderId") String orderId);

    @Update("update t_order set status = #{status.value} where order_id = #{orderId}")
    void updateOrderStatus(@Param("orderId") String orderId, @Param("status") OrderStatus status);

    List<Order> select(@Param("buyerId") Integer buyerId, @Param("status") OrderStatus status);

    Order selectById(@Param("orderId") String orderId);

    @Select("select count(*) from t_order where buyer_id = #{buyerId} and order_id = #{orderId}")
    int checkOrder(@Param("orderId") String orderId, @Param("buyerId") Integer buyerId);

    int selectStatus(@Param("orderId") String orderId);
}
