package com.gigaprojects.gigaweather.data
import androidx.lifecycle.LiveData
import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.Query
import androidx.room.Update
@Dao
interface LocationDao {
@Query("SELECT * FROM locations ORDER BY name ASC")
fun getAllLocations(): LiveData<List<LocationEntity>>
@Query("SELECT * FROM locations ORDER BY name ASC")
suspend fun getAllLocationsSync(): List<LocationEntity>
@Query("SELECT COUNT(*) FROM locations")
fun getCount(): Int
@Query("SELECT * FROM locations WHERE id = :id LIMIT 1")
suspend fun findById(id: Long): LocationEntity?
@Query("SELECT * FROM locations WHERE latitude = :lat AND longitude = :lon LIMIT 1")
suspend fun findByCoordinates(lat: Double, lon: Double): LocationEntity?
@Query("SELECT * FROM locations WHERE selected = 1 LIMIT 1")
suspend fun getSelectedLocation(): LocationEntity?
@Query("UPDATE locations SET selected = 0")
suspend fun deselectAllLocations()
@Query("SELECT * FROM locations WHERE isDefault = 1 LIMIT 1")
suspend fun getDefaultLocation(): LocationEntity?
@Query("UPDATE locations SET isDefault = 0")
suspend fun clearDefaultLocation()
@Insert
fun insertLocation(location: LocationEntity)
@Update
fun updateLocation(location: LocationEntity)
@Delete
fun deleteLocation(location: LocationEntity)
}