package cn.nianxx.thhotel.platform.hotel.repository;

import cn.nianxx.thhotel.platform.hotel.domain.PlatformHotelEntity;
import java.util.List;
import java.util.Optional;

/**
 * 平台酒店仓储。负责酒店基础信息和用户酒店授权关系。
 */
public interface PlatformHotelRepository {

    /**
     * 按酒店业务 ID 查询酒店。
     */
    Optional<PlatformHotelEntity> findHotelByHotelId(String hotelId);

    /**
     * 查询全部启用酒店。
     */
    List<PlatformHotelEntity> listActiveHotels();

    /**
     * 查询普通用户授权酒店 ID 列表。
     */
    List<String> listUserHotelIds(Long userId);

    /**
     * 查询普通用户默认酒店 ID。
     */
    Optional<String> findUserDefaultHotelId(Long userId);

    /**
     * 新增酒店。
     */
    void insertHotel(PlatformHotelEntity hotel);

    /**
     * 更新酒店。
     */
    void updateHotel(PlatformHotelEntity hotel);

    /**
     * 确保用户酒店授权关系存在。
     */
    void ensureUserHotel(Long userId, String hotelId, boolean defaultHotel);
}
