import 'package:lunchpick/domain/entities/restaurant.dart'; abstract class RestaurantRepository { /// 모든 맛집 목록을 가져옵니다 Future> getAllRestaurants(); /// 특정 맛집을 ID로 가져옵니다 Future getRestaurantById(String id); /// 새로운 맛집을 추가합니다 Future addRestaurant(Restaurant restaurant); /// 맛집 정보를 업데이트합니다 Future updateRestaurant(Restaurant restaurant); /// 맛집을 삭제합니다 Future deleteRestaurant(String id); /// 카테고리별로 맛집을 가져옵니다 Future> getRestaurantsByCategory(String category); /// 모든 카테고리 목록을 가져옵니다 Future> getAllCategories(); /// 맛집 목록을 스트림으로 감시합니다 Stream> watchRestaurants(); /// 맛집 방문일을 업데이트합니다 Future updateLastVisitDate(String restaurantId, DateTime visitDate); /// 거리 내의 맛집을 가져옵니다 Future> getRestaurantsWithinDistance({ required double userLatitude, required double userLongitude, required double maxDistanceInMeters, }); /// 최근 n일 이내에 방문하지 않은 맛집을 가져옵니다 Future> getRestaurantsNotVisitedInDays(int days); /// 검색어로 맛집을 검색합니다 Future> searchRestaurants(String query); /// 네이버 지도 URL로부터 맛집을 추가합니다 Future addRestaurantFromUrl(String url); /// 네이버 Place ID로 맛집을 찾습니다 Future getRestaurantByNaverPlaceId(String naverPlaceId); }