package com.sikey.wa04.business.domain.adapter;

import com.sikey.wa04.business.domain.entity.ChildId;
import com.sikey.wa04.business.domain.entity.Location;
import jakarta.validation.constraints.NotNull;

import java.time.Instant;
import java.util.List;

/**
 * 定位适配器
 *
 * @author luoyangwei
 */
public interface LocationAdapter {

    /**
     * 查询孩子最后一次定位
     *
     * @param cid 孩子ID
     * @return 定位信息
     */
    Location findLastLocation(ChildId cid);

    /**
     * 根据child_id + 时间范围查询历史轨迹
     * @param cid   小孩ID
     * @param start 开始时间
     * @param end   结束时间
     * @return      历史轨迹列表
     */
    List<Location> findByChildIdAndCreatedAtBetween(ChildId cid, Instant start, Instant end);

    /**
     * 存位置数据
     *
     * @param location  location entity
     * @param isInvalid 是否无效的点位
     * @return trajectory_id
     */
    Long save(Location location, Boolean isInvalid);

    /**
     * 查找上一个位置
     *
     * @param deviceId 设备id
     * @return
     */
    Location findPreviousPosition(@NotNull Long deviceId);

}
