package com.dayu.pipirrapp.dao; import androidx.room.Dao; import androidx.room.Delete; import androidx.room.Insert; import androidx.room.OnConflictStrategy; import androidx.room.Query; import androidx.room.Update; import com.dayu.pipirrapp.bean.db.DivideBean; import com.dayu.pipirrapp.bean.db.MarkerBean; import com.dayu.pipirrapp.bean.db.SearchResultBean; import java.util.List; import io.reactivex.rxjava3.core.Completable; import io.reactivex.rxjava3.core.Single; import io.reactivex.rxjava3.core.Maybe; /** * DivideDao -分水房 * * @author zuoxiao * @version 1.0 * @since 2025-01-13 */ @Dao public interface DivideDao { @Insert(onConflict = OnConflictStrategy.REPLACE) void insert(DivideBean divideBean); @Insert(onConflict = OnConflictStrategy.REPLACE) Completable insertAll(List divideBeans); // 使用 Completable 进行异步插入 // @Insert(onConflict = OnConflictStrategy.REPLACE) // void insertAll(List markerBeans); // 使用 Completable 进行异步插入 @Update void update(DivideBean divideBean); @Delete void delete(DivideBean divideBean); @Query("DELETE FROM DivideBean") void deleteAll(); @Query("select * from DivideBean limit 1") DivideBean findFirst(); @Query("select * from DivideBean") List findAll(); @Query("select * from DivideBean") Single> findAllToSingle(); @Query("SELECT * FROM DivideBean") Maybe> getAll(); // 改为返回Maybe> @Query("SELECT * FROM DivideBean WHERE divideName LIKE '%' || :name || '%'") Single> findByDivideNameLike(String name); @Query("SELECT divideName as name, 'divide' as type, lat, lng, address, divideId as id FROM DivideBean " + "WHERE divideName LIKE '%' || :keyword || '%' " + "UNION " + "SELECT name, 'marker' as type, lat, lng, address, id FROM MarkerBean " + "WHERE name LIKE '%' || :keyword || '%'") Single> searchAllByKeyword(String keyword); }