Skip to content

Commit 104aaa1

Browse files
committed
feat : 최근 검색 기록 Room 작업 구현
1 parent de375ed commit 104aaa1

22 files changed

+332
-27
lines changed

data/src/main/java/com/stop/data/di/LocalDataSourceModule.kt renamed to data/src/main/java/com/stop/data/di/AlarmDataSourceModule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import javax.inject.Singleton
1313

1414
@Module
1515
@InstallIn(SingletonComponent::class)
16-
object LocalDataSourceModule {
16+
object AlarmDataSourceModule {
1717

1818
@Provides
1919
@Singleton

data/src/main/java/com/stop/data/di/DataSourceModule.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.stop.data.di
22

3+
import com.stop.data.local.source.alarm.RecentPlaceSearchLocalDataSource
4+
import com.stop.data.local.source.alarm.RecentPlaceSearchLocalDataSourceImpl
35
import com.stop.data.remote.source.nearplace.NearPlaceRemoteDataSource
46
import com.stop.data.remote.source.nearplace.NearPlaceRemoteDataSourceImpl
57
import com.stop.data.remote.source.nowlocation.NowLocationRemoteDataSource
@@ -34,4 +36,10 @@ internal interface DataSourceModule {
3436
nowLocationRemoteDataSourceImpl: NowLocationRemoteDataSourceImpl
3537
): NowLocationRemoteDataSource
3638

39+
@Binds
40+
@Singleton
41+
fun provideRecentPlaceSearchLocalDataSource(
42+
recentPlaceSearchLocalDataSourceImpl: RecentPlaceSearchLocalDataSourceImpl
43+
) : RecentPlaceSearchLocalDataSource
44+
3745
}
Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
11
package com.stop.data.di
22

3+
import android.content.Context
4+
import androidx.room.Room
5+
import com.stop.data.local.database.TroubleShooterApplicationDatabase
6+
import com.stop.data.local.database.TroubleShooterApplicationDatabase.Companion.DB_NAME
7+
import com.stop.data.local.database.dao.RecentPlaceSearchDao
38
import dagger.Module
9+
import dagger.Provides
410
import dagger.hilt.InstallIn
11+
import dagger.hilt.android.qualifiers.ApplicationContext
512
import dagger.hilt.components.SingletonComponent
13+
import javax.inject.Singleton
614

715
@InstallIn(SingletonComponent::class)
816
@Module
917
class DatabaseModule {
1018

11-
/* @Provides
19+
@Provides
1220
@Singleton
1321
fun provideApplicationDatabase(@ApplicationContext context: Context): TroubleShooterApplicationDatabase {
1422
return Room.databaseBuilder(
@@ -17,6 +25,14 @@ class DatabaseModule {
1725
DB_NAME
1826
).fallbackToDestructiveMigration()
1927
.build()
20-
}*/
28+
}
29+
30+
@Provides
31+
@Singleton
32+
fun provideRecentPlaceSearchDao(
33+
troubleShooterApplicationDatabase: TroubleShooterApplicationDatabase
34+
): RecentPlaceSearchDao {
35+
return troubleShooterApplicationDatabase.getRecentPlaceSearchDao()
36+
}
2137

2238
}

data/src/main/java/com/stop/data/di/RepositoryModule.kt

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
11
package com.stop.data.di
22

3-
import com.stop.data.repository.AlarmRepositoryImpl
4-
import com.stop.data.repository.NearPlaceRepositoryImpl
5-
import com.stop.data.repository.NowLocationRepositoryImpl
6-
import com.stop.data.repository.RouteRepositoryImpl
7-
import com.stop.domain.repository.AlarmRepository
8-
import com.stop.domain.repository.NearPlaceRepository
9-
import com.stop.domain.repository.NowLocationRepository
10-
import com.stop.domain.repository.RouteRepository
3+
import com.stop.data.repository.*
4+
import com.stop.domain.repository.*
115
import dagger.Binds
126
import dagger.Module
137
import dagger.hilt.InstallIn
@@ -33,10 +27,20 @@ internal interface RepositoryModule {
3327

3428
@Binds
3529
@Singleton
36-
fun provideAlarmRepository(alarmRepositoryImpl: AlarmRepositoryImpl): AlarmRepository
30+
fun provideAlarmRepository(
31+
alarmRepositoryImpl: AlarmRepositoryImpl
32+
): AlarmRepository
3733

3834
@Binds
3935
@Singleton
40-
fun provideNowLocationRepository(nowLocationRepositoryImpl: NowLocationRepositoryImpl): NowLocationRepository
36+
fun provideNowLocationRepository(
37+
nowLocationRepositoryImpl: NowLocationRepositoryImpl
38+
): NowLocationRepository
39+
40+
@Binds
41+
@Singleton
42+
fun provideRecentPlaceSearchRepository(
43+
recentPlaceSearchRepositoryImpl: RecentPlaceSearchRepositoryImpl
44+
): RecentPlaceSearchRepository
4145

4246
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.stop.data.local.database
2+
3+
import androidx.room.Database
4+
import androidx.room.RoomDatabase
5+
import com.stop.data.local.database.dao.RecentPlaceSearchDao
6+
import com.stop.data.local.model.RecentPlaceSearchEntity
7+
8+
@Database(
9+
entities = [RecentPlaceSearchEntity::class],
10+
version = 1
11+
)
12+
abstract class TroubleShooterApplicationDatabase : RoomDatabase() {
13+
14+
abstract fun getRecentPlaceSearchDao(): RecentPlaceSearchDao
15+
16+
companion object {
17+
const val DB_NAME = "TroubleShooter.db"
18+
}
19+
}

data/src/main/java/com/stop/data/local/database/dao/AlarmDao.kt

Whitespace-only changes.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.stop.data.local.database.dao
2+
3+
import androidx.room.Dao
4+
import androidx.room.Insert
5+
import androidx.room.OnConflictStrategy
6+
import androidx.room.Query
7+
import com.stop.data.local.model.RecentPlaceSearchEntity
8+
import kotlinx.coroutines.flow.Flow
9+
10+
@Dao
11+
interface RecentPlaceSearchDao {
12+
13+
@Insert(onConflict = OnConflictStrategy.REPLACE)
14+
suspend fun insertRecentPlaceSearchEntity(recentPlaceSearchEntity: RecentPlaceSearchEntity)
15+
16+
@Query("SELECT * FROM RecentPlaceSearchEntity ORDER BY id DESC")
17+
fun getAllRecentPlaceSearchEntity(): Flow<List<RecentPlaceSearchEntity>>
18+
19+
@Query("DELETE FROM RecentPlaceSearchEntity")
20+
suspend fun deleteAllRecentPlaceSearchEntity()
21+
}

data/src/main/java/com/stop/data/local/database/dao/TroubleShooterApplicationDatabase.kt

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.stop.data.local.model
2+
3+
import androidx.room.Entity
4+
import androidx.room.PrimaryKey
5+
import com.stop.data.model.alarm.RecentPlaceSearchItem
6+
7+
@Entity
8+
data class RecentPlaceSearchEntity(
9+
@PrimaryKey(autoGenerate = true)
10+
val id: Long = -1,
11+
val name: String,
12+
val radius: String,
13+
val fullAddressRoad: String,
14+
val centerLat: Double,
15+
val centerLon: Double
16+
) {
17+
18+
fun toRepositoryModel() = RecentPlaceSearchItem(
19+
name = name,
20+
radius = radius,
21+
fullAddressRoad = fullAddressRoad,
22+
centerLat = centerLat,
23+
centerLon = centerLon,
24+
)
25+
26+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.stop.data.local.source.alarm
2+
3+
import com.stop.data.model.alarm.RecentPlaceSearchItem
4+
import kotlinx.coroutines.flow.Flow
5+
6+
interface RecentPlaceSearchLocalDataSource {
7+
8+
suspend fun insertRecentPlaceSearch(recentPlaceSearchItem: RecentPlaceSearchItem)
9+
10+
fun getAllRecentPlaceSearch(): Flow<List<RecentPlaceSearchItem>>
11+
12+
suspend fun deleteAllRecentPlaceSearch()
13+
14+
}

0 commit comments

Comments
 (0)