Skip to content

Commit 5ece64b

Browse files
committed
[FEAT/#8] AlarmRepository ์„ค์ •
1 parent cb55c9d commit 5ece64b

File tree

5 files changed

+111
-0
lines changed

5 files changed

+111
-0
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.yapp.data.local.di
2+
3+
import com.yapp.data.local.repositoryimpl.AlarmRepositoryImpl
4+
import com.yapp.domain.repository.AlarmRepository
5+
import dagger.Binds
6+
import dagger.Module
7+
import dagger.hilt.InstallIn
8+
import dagger.hilt.components.SingletonComponent
9+
import javax.inject.Singleton
10+
11+
@Module
12+
@InstallIn(SingletonComponent::class)
13+
abstract class RepositoryModule {
14+
@Binds
15+
@Singleton
16+
abstract fun bindsAlarmRepository(
17+
alarmRepository: AlarmRepositoryImpl,
18+
): AlarmRepository
19+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.yapp.data.local.repositoryimpl
2+
3+
import com.yapp.data.local.datasource.AlarmLocalDataSource
4+
import com.yapp.data.local.toEntity
5+
import com.yapp.domain.model.Alarm
6+
import com.yapp.domain.repository.AlarmRepository
7+
import javax.inject.Inject
8+
9+
class AlarmRepositoryImpl @Inject constructor(
10+
private val alarmLocalDataSource: AlarmLocalDataSource
11+
) : AlarmRepository {
12+
override suspend fun getPagedAlarms(limit: Int, offset: Int): List<Alarm> {
13+
return alarmLocalDataSource.getPagedAlarms(limit, offset)
14+
}
15+
16+
override suspend fun getAlarmCount(): Int {
17+
return alarmLocalDataSource.getAlarmCount()
18+
}
19+
20+
override suspend fun insertAlarm(alarm: Alarm): Alarm? {
21+
val alarmId = alarmLocalDataSource.insertAlarm(alarm.toEntity())
22+
return getAlarm(alarmId)
23+
}
24+
25+
override suspend fun updateAlarm(alarm: Alarm): Alarm? {
26+
val alarmId = alarmLocalDataSource.updateAlarm(alarm.toEntity())
27+
return getAlarm(alarmId)
28+
}
29+
30+
override suspend fun getAlarm(id: Long): Alarm? {
31+
return alarmLocalDataSource.getAlarm(id)
32+
}
33+
34+
override suspend fun deleteAlarm(id: Long): Long? {
35+
return alarmLocalDataSource.deleteAlarm(id)
36+
}
37+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.yapp.domain.model
2+
3+
data class Alarm(
4+
val id: Long = 0,
5+
6+
val isAm: Boolean = true,
7+
8+
val hour: Int = 6,
9+
val minute: Int = 0,
10+
11+
// ๋ฐ˜๋ณต ์š”์ผ (bitmask ๋ฅผ ํ†ตํ•ด ์„ค์ •)
12+
val repeatDays: Int = 0,
13+
14+
val isHolidayAlarmOff: Boolean = false,
15+
val isSnoozeEnabled: Boolean = false,
16+
17+
val snoozeInterval: Int = 5,
18+
val snoozeCount: Int = 1,
19+
20+
val isVibrationEnabled: Boolean = true,
21+
val isSoundEnabled: Boolean = true,
22+
23+
val soundUri: String = "",
24+
val soundVolume: Int = 70,
25+
26+
val isAlarmActive: Boolean = true
27+
)
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.yapp.domain.repository
2+
3+
import com.yapp.domain.model.Alarm
4+
5+
interface AlarmRepository {
6+
suspend fun getPagedAlarms(limit: Int, offset: Int): List<Alarm>
7+
suspend fun getAlarmCount(): Int
8+
suspend fun insertAlarm(alarm: Alarm): Alarm?
9+
suspend fun updateAlarm(alarm: Alarm): Alarm?
10+
suspend fun getAlarm(id: Long): Alarm?
11+
suspend fun deleteAlarm(id: Long): Long?
12+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.yapp.domain.usecase
2+
3+
import com.yapp.domain.model.Alarm
4+
import com.yapp.domain.repository.AlarmRepository
5+
import javax.inject.Inject
6+
7+
class AlarmUseCase @Inject constructor(
8+
private val alarmRepository: AlarmRepository
9+
) {
10+
suspend fun getPagedAlarms(limit: Int, offset: Int): List<Alarm> = alarmRepository.getPagedAlarms(limit, offset)
11+
suspend fun getAlarmCount(): Int = alarmRepository.getAlarmCount()
12+
suspend fun insertAlarm(alarm: Alarm): Alarm? = alarmRepository.insertAlarm(alarm)
13+
suspend fun updateAlarm(alarm: Alarm): Alarm? = alarmRepository.updateAlarm(alarm)
14+
suspend fun getAlarm(id: Long): Alarm? = alarmRepository.getAlarm(id)
15+
suspend fun deleteAlarm(id: Long): Long? = alarmRepository.deleteAlarm(id)
16+
}

0 commit comments

Comments
ย (0)