Skip to content

Commit

Permalink
[refact] : #83 찜꽁리스트 저장 클린아키텍처 적용
Browse files Browse the repository at this point in the history
  • Loading branch information
SsongSik committed May 6, 2023
1 parent 3557495 commit 6d62c4a
Show file tree
Hide file tree
Showing 19 changed files with 119 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ package com.myongsik.myongsikandroid.data.model.kakao
import android.os.Parcelable
import androidx.room.Entity
import androidx.room.PrimaryKey
import com.myongsik.myongsikandroid.domain.model.love.InsertFoodEntity
import com.squareup.moshi.Json
import com.squareup.moshi.JsonClass
import kotlinx.parcelize.Parcelize
Expand Down Expand Up @@ -37,4 +38,34 @@ data class Restaurant(
val x: String,
@field:Json(name = "y")
val y: String
) : Parcelable
) : Parcelable

fun InsertFoodEntity.toInsertFoodData() = Restaurant(
address_name = this.address_name,
category_group_code = this.category_group_code,
category_group_name = this.category_group_name,
category_name = this.category_name,
distance = this.distance,
id = this.id,
phone = this.phone,
place_name = this.place_name,
place_url = this.place_url,
road_address_name = this.road_address_name,
x = this.x,
y = this.y
)

fun Restaurant.toInsertFoodEntity() = InsertFoodEntity(
address_name = this.address_name,
category_group_code = this.category_group_code,
category_group_name = this.category_group_name,
category_name = this.category_name,
distance = this.distance,
id = this.id,
phone = this.phone,
place_name = this.place_name,
place_url = this.place_url,
road_address_name = this.road_address_name,
x = this.x,
y = this.y
)
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.myongsik.myongsikandroid.data.model.user

import com.myongsik.myongsikandroid.domain.model.RequestUserEntity
import com.myongsik.myongsikandroid.domain.model.user.RequestUserEntity


data class RequestUserData(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.myongsik.myongsikandroid.data.model.user

import com.myongsik.myongsikandroid.domain.model.ResponseUserEntity
import com.myongsik.myongsikandroid.domain.model.user.ResponseUserEntity

data class ResponseUserData(
val httpCode: Int,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.myongsik.myongsikandroid.data.repository.love

import com.myongsik.myongsikandroid.domain.model.love.InsertFoodEntity

interface LoveRepository {

suspend fun insertFood(insertFoodEntity: InsertFoodEntity)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.myongsik.myongsikandroid.data.repository.love

import com.myongsik.myongsikandroid.data.db.RestaurantDatabase
import com.myongsik.myongsikandroid.data.model.kakao.toInsertFoodData
import com.myongsik.myongsikandroid.domain.model.love.InsertFoodEntity
import javax.inject.Inject

class LoveRepositoryImpl @Inject constructor(
private val loveDb : RestaurantDatabase
) : LoveRepository {

override suspend fun insertFood(insertFoodEntity: InsertFoodEntity) {
loveDb.restaurantDao().insertGoodFood(insertFoodEntity.toInsertFoodData())
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.myongsik.myongsikandroid.data.repository.user

import com.myongsik.myongsikandroid.domain.model.RequestUserEntity
import com.myongsik.myongsikandroid.domain.model.ResponseUserEntity
import com.myongsik.myongsikandroid.domain.model.user.RequestUserEntity
import com.myongsik.myongsikandroid.domain.model.user.ResponseUserEntity

interface UserRepository {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
package com.myongsik.myongsikandroid.data.repository.user

import com.myongsik.myongsikandroid.data.api.UserApi
import com.myongsik.myongsikandroid.data.model.user.RequestUserData
import com.myongsik.myongsikandroid.data.model.user.ResponseUserData
import com.myongsik.myongsikandroid.data.model.user.toRequestUserData
import com.myongsik.myongsikandroid.data.model.user.toResponseUserEntity
import com.myongsik.myongsikandroid.domain.model.RequestUserEntity
import com.myongsik.myongsikandroid.domain.model.ResponseUserEntity
import retrofit2.Response
import com.myongsik.myongsikandroid.domain.model.user.RequestUserEntity
import com.myongsik.myongsikandroid.domain.model.user.ResponseUserEntity
import javax.inject.Inject

class UserRepositoryImpl @Inject constructor(private val userApi: UserApi) : UserRepository {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package com.myongsik.myongsikandroid.di

import com.myongsik.myongsikandroid.data.repository.food.FoodRepository
import com.myongsik.myongsikandroid.data.repository.food.FoodRepositoryImpl
import com.myongsik.myongsikandroid.data.repository.love.LoveRepository
import com.myongsik.myongsikandroid.data.repository.love.LoveRepositoryImpl
import com.myongsik.myongsikandroid.data.repository.search.SearchFoodRepository
import com.myongsik.myongsikandroid.data.repository.search.SearchFoodRepositoryImpl
import com.myongsik.myongsikandroid.data.repository.user.UserRepository
Expand Down Expand Up @@ -33,4 +35,10 @@ abstract class RepositoryModule {
abstract fun bindUserRepository(
userRepositoryImpl: UserRepositoryImpl
): UserRepository

@Singleton
@Binds
abstract fun bindLoveRepository(
loveRepositoryImpl: LoveRepositoryImpl
): LoveRepository
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.myongsik.myongsikandroid.domain.model.love

data class InsertFoodEntity(
val address_name: String,
val category_group_code: String,
val category_group_name: String,
val category_name: String,
val distance: String,
val id: String,
val phone: String,
val place_name: String,
val place_url: String,
val road_address_name: String,
val x: String,
val y: String
)

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.myongsik.myongsikandroid.domain.model
package com.myongsik.myongsikandroid.domain.model.user

data class RequestUserEntity(
val phoneId: String
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.myongsik.myongsikandroid.domain.model
package com.myongsik.myongsikandroid.domain.model.user

data class ResponseUserEntity(
val httpCode: Int,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.myongsik.myongsikandroid.domain.usecase.love

import com.myongsik.myongsikandroid.data.repository.love.LoveRepository
import com.myongsik.myongsikandroid.domain.model.love.InsertFoodEntity
import javax.inject.Inject

class InsertFoodDataUseCase @Inject constructor(
private val loveRepository : LoveRepository
) : LoveCase {

suspend operator fun invoke(insertFoodEntity: InsertFoodEntity) =
loveRepository.insertFood(insertFoodEntity)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.myongsik.myongsikandroid.domain.usecase.love

interface LoveCase {

}
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package com.myongsik.myongsikandroid.domain.user
package com.myongsik.myongsikandroid.domain.usecase.user

import com.myongsik.myongsikandroid.data.repository.user.UserRepository
import com.myongsik.myongsikandroid.domain.UserCase
import com.myongsik.myongsikandroid.domain.model.RequestUserEntity
import com.myongsik.myongsikandroid.domain.model.user.RequestUserEntity
import javax.inject.Inject

class PostUserDataUseCase @Inject constructor(private val userRepository: UserRepository) : UserCase {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.myongsik.myongsikandroid.domain.usecase.user

interface UserCase {

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import com.myongsik.myongsikandroid.data.model.user.RequestUserData
import com.myongsik.myongsikandroid.data.model.user.ResponseUserData
import com.myongsik.myongsikandroid.data.model.user.toRequestUserEntity
import com.myongsik.myongsikandroid.data.model.user.toResponseUserData
import com.myongsik.myongsikandroid.domain.user.PostUserDataUseCase
import com.myongsik.myongsikandroid.domain.usecase.user.PostUserDataUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ import com.myongsik.myongsikandroid.BaseViewModel
import com.myongsik.myongsikandroid.data.model.food.RequestScrap
import com.myongsik.myongsikandroid.data.model.food.ResponseScrap
import com.myongsik.myongsikandroid.data.model.kakao.Restaurant
import com.myongsik.myongsikandroid.data.model.kakao.toInsertFoodEntity
import com.myongsik.myongsikandroid.data.repository.food.FoodRepository
import com.myongsik.myongsikandroid.domain.usecase.love.InsertFoodDataUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
Expand All @@ -18,19 +20,19 @@ import javax.inject.Inject

@HiltViewModel
class LoveViewModel @Inject constructor(
private val foodRepository: FoodRepository
private val foodRepository: FoodRepository,
private val insertFoodDataUseCase: InsertFoodDataUseCase
) : BaseViewModel() {

//Room
fun saveFoods(restaurant: Restaurant) = launch {
foodRepository.insertFoods(restaurant)
insertFoodDataUseCase(restaurant.toInsertFoodEntity())
}

fun deleteFoods(restaurant: Restaurant) = launch {
foodRepository.deleteFoods(restaurant)
}

//Api
private val _loveIs = MutableLiveData<Restaurant>()
val loveIs: LiveData<Restaurant>
get() = _loveIs
Expand Down

This file was deleted.

0 comments on commit 6d62c4a

Please sign in to comment.