Skip to content

Change something #2

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 31 commits into from
May 10, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
ec6e500
add result type return
xtoolkit Apr 30, 2021
8d2712b
use androidx ViewModel
xtoolkit Apr 30, 2021
194b270
initial new view model base
xtoolkit Apr 30, 2021
4ef532d
change db packages
xtoolkit Apr 30, 2021
54c7fd8
add find kitchen method
xtoolkit May 1, 2021
d1a0173
refactor kitchen insert fragment
xtoolkit May 1, 2021
432d653
remove nav action
xtoolkit May 1, 2021
5e31d36
change kitchen find method
xtoolkit May 1, 2021
aa671e8
try use Resalt type in insert kitchen
xtoolkit May 1, 2021
dc94e15
use Event sealed class
xtoolkit May 1, 2021
332ddbb
refactor navs
xtoolkit May 2, 2021
98cff50
use flow and change adapter
xtoolkit May 2, 2021
77b9eb1
refactor interactors to usecase
xtoolkit May 2, 2021
d8115e9
add foodstuff model
xtoolkit May 2, 2021
a304e7e
add unit to foodstuffs
xtoolkit May 3, 2021
26a1236
change db model
xtoolkit May 3, 2021
56cafe5
use application for use getString
xtoolkit May 3, 2021
3e11c22
refactor KitchenFragment for MVVM
xtoolkit May 3, 2021
d8194ea
change event name
xtoolkit May 4, 2021
3c29eae
safemode for event tracks
xtoolkit May 5, 2021
8c9c32b
use viewmodelscope for addkitchen task
xtoolkit May 5, 2021
17d8d0a
some clean code
xtoolkit May 5, 2021
fa83c30
split modules
xtoolkit May 5, 2021
b8414e7
remove useless key in database
xtoolkit May 5, 2021
ba0ebb9
remove interactors
xtoolkit May 5, 2021
8db9697
add domain-entity convert method
xtoolkit May 5, 2021
acd251d
clean interactors
xtoolkit May 5, 2021
6afadd7
clean code
xtoolkit May 5, 2021
ac0fb71
chnage eventlistener to builder type
xtoolkit May 5, 2021
bd31843
rename ingredient fragment to grocery
xtoolkit May 5, 2021
42433af
change event methods ...
xtoolkit May 5, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions Core/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@ java {
targetCompatibility = JavaVersion.VERSION_1_7
}

compileKotlin {
kotlinOptions {
freeCompilerArgs = ["-Xallow-result-return-type"]
}
}

dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.mychefassistant.core.data.datasource

import com.mychefassistant.core.domain.Grocery
import com.mychefassistant.core.domain.Kitchen
import kotlinx.coroutines.flow.Flow

interface GroceryDataSource {
suspend fun add(kitchen: Kitchen, grocery: Grocery)

fun getAll(kitchen: Kitchen): Flow<List<Grocery>>

suspend fun remove(kitchen: Kitchen, grocery: Grocery)

suspend fun update(kitchen: Kitchen, grocery: Grocery)
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.mychefassistant.core.data.datasource

import com.mychefassistant.core.domain.Kitchen
import kotlinx.coroutines.flow.Flow

interface KitchenDataSource {
suspend fun add(kitchen: Kitchen)
Expand All @@ -9,7 +10,9 @@ interface KitchenDataSource {

suspend fun update(kitchen: Kitchen)

suspend fun getAll(): List<Kitchen>
fun getAll(): Flow<List<Kitchen>>

suspend fun getById(id: Int): Kitchen

suspend fun find(kitchen: Kitchen): List<Kitchen>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.mychefassistant.core.data.repository

import com.mychefassistant.core.data.datasource.GroceryDataSource
import com.mychefassistant.core.domain.Grocery
import com.mychefassistant.core.domain.Kitchen

class GroceryRepository(private val dataSource: GroceryDataSource) {
suspend fun addGrocery(kitchen: Kitchen, grocery: Grocery) = dataSource.add(kitchen, grocery)

fun getGroceries(kitchen: Kitchen) = dataSource.getAll(kitchen)

suspend fun removeGrocery(kitchen: Kitchen, grocery: Grocery) =
dataSource.remove(kitchen, grocery)

suspend fun updateGrocery(kitchen: Kitchen, grocery: Grocery) =
dataSource.update(kitchen, grocery)
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ class KitchenRepository(private val dataSource: KitchenDataSource) {

suspend fun updateKitchen(kitchen: Kitchen) = dataSource.update(kitchen)

suspend fun getKitchens() = dataSource.getAll()
fun getKitchens() = dataSource.getAll()

suspend fun getKitchenById(id: Int) = dataSource.getById(id)

suspend fun findKitchen(kitchen: Kitchen) = dataSource.find(kitchen)
}
9 changes: 9 additions & 0 deletions Core/src/main/java/com/mychefassistant/core/domain/Grocery.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.mychefassistant.core.domain

data class Grocery(
val id: Int = 0,
val kitchen: Int,
val title: String,
val value: String = "",
val status: Boolean = false
)

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.mychefassistant.core.interactors

import com.mychefassistant.core.data.repository.GroceryRepository
import com.mychefassistant.core.domain.Grocery
import com.mychefassistant.core.domain.Kitchen
import com.mychefassistant.core.utils.BaseSuspendUseCase

class AddGroceryUseCase(private val groceryRepository: GroceryRepository) :
BaseSuspendUseCase<Pair<Kitchen, Grocery>, Unit>() {
override suspend fun execute(parameter: Pair<Kitchen, Grocery>): Result<Unit> {
return Result.success(groceryRepository.addGrocery(parameter.first, parameter.second))
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.mychefassistant.core.interactors

import com.mychefassistant.core.data.repository.KitchenRepository
import com.mychefassistant.core.domain.Kitchen
import com.mychefassistant.core.utils.BaseSuspendUseCase

class AddKitchenUseCase(private val kitchenRepository: KitchenRepository) :
BaseSuspendUseCase<Kitchen, Unit>() {
override suspend fun execute(parameter: Kitchen): Result<Unit> {
return Result.success(kitchenRepository.addKitchen(parameter))
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above.

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.mychefassistant.core.interactors

import com.mychefassistant.core.data.repository.KitchenRepository
import com.mychefassistant.core.domain.Kitchen
import com.mychefassistant.core.utils.BaseSuspendUseCase

class FindKitchenUseCase(private val kitchenRepository: KitchenRepository) :
BaseSuspendUseCase<Kitchen, List<Kitchen>>() {
override suspend fun execute(parameter: Kitchen): Result<List<Kitchen>> {
return Result.success(kitchenRepository.findKitchen(parameter))
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.mychefassistant.core.interactors

import com.mychefassistant.core.data.repository.GroceryRepository
import com.mychefassistant.core.domain.Grocery
import com.mychefassistant.core.domain.Kitchen
import com.mychefassistant.core.utils.BaseSuspendUseCase
import kotlinx.coroutines.flow.Flow

class GetGroceriesUseCase(private val groceryRepository: GroceryRepository) :
BaseSuspendUseCase<Kitchen, Flow<List<Grocery>>>() {
override suspend fun execute(parameter: Kitchen): Result<Flow<List<Grocery>>> {
return Result.success(groceryRepository.getGroceries(parameter))
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.mychefassistant.core.interactors

import com.mychefassistant.core.data.repository.KitchenRepository
import com.mychefassistant.core.domain.Kitchen
import com.mychefassistant.core.utils.BaseSuspendUseCase

class GetKitchenByIdUseCase(private val kitchenRepository: KitchenRepository) :
BaseSuspendUseCase<Int, Kitchen>() {
override suspend fun execute(parameter: Int): Result<Kitchen> {
return Result.success(kitchenRepository.getKitchenById(parameter))
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above.

}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.mychefassistant.core.interactors

import com.mychefassistant.core.data.repository.KitchenRepository
import com.mychefassistant.core.domain.Kitchen
import com.mychefassistant.core.utils.BaseUseCase
import kotlinx.coroutines.flow.Flow

class GetKitchensUseCase(private val kitchenRepository: KitchenRepository) :
BaseUseCase<Boolean, Flow<List<Kitchen>>>() {
override fun execute(parameter: Boolean): Result<Flow<List<Kitchen>>> {
return Result.success(kitchenRepository.getKitchens())
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above.

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.mychefassistant.core.interactors

import com.mychefassistant.core.data.repository.GroceryRepository
import com.mychefassistant.core.domain.Grocery
import com.mychefassistant.core.domain.Kitchen
import com.mychefassistant.core.utils.BaseSuspendUseCase

class RemoveGroceryUseCase(private val groceryRepository: GroceryRepository) :
BaseSuspendUseCase<Pair<Kitchen, Grocery>, Unit>() {
override suspend fun execute(parameter: Pair<Kitchen, Grocery>): Result<Unit> {
return Result.success(groceryRepository.removeGrocery(parameter.first, parameter.second))
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.mychefassistant.core.interactors

import com.mychefassistant.core.data.repository.KitchenRepository
import com.mychefassistant.core.domain.Kitchen
import com.mychefassistant.core.utils.BaseSuspendUseCase

class RemoveKitchenUseCase(private val kitchenRepository: KitchenRepository) :
BaseSuspendUseCase<Kitchen, Unit>() {
override suspend fun execute(parameter: Kitchen): Result<Unit> {
return Result.success(kitchenRepository.removeKitchen(parameter))
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.mychefassistant.core.interactors

import com.mychefassistant.core.data.repository.GroceryRepository
import com.mychefassistant.core.domain.Grocery
import com.mychefassistant.core.domain.Kitchen
import com.mychefassistant.core.utils.BaseSuspendUseCase

class UpdateGroceryUseCase(private val groceryRepository: GroceryRepository) :
BaseSuspendUseCase<Pair<Kitchen, Grocery>, Unit>() {
override suspend fun execute(parameter: Pair<Kitchen, Grocery>): Result<Unit> {
return Result.success(groceryRepository.updateGrocery(parameter.first, parameter.second))
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.mychefassistant.core.interactors

import com.mychefassistant.core.data.repository.KitchenRepository
import com.mychefassistant.core.domain.Kitchen
import com.mychefassistant.core.utils.BaseSuspendUseCase

class UpdateKitchenUseCase(private val kitchenRepository: KitchenRepository) :
BaseSuspendUseCase<Kitchen, Unit>() {
override suspend fun execute(parameter: Kitchen): Result<Unit> {
return Result.success(kitchenRepository.updateKitchen(parameter))
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.mychefassistant.core.utils

abstract class BaseSuspendUseCase<in Request, Response> {
suspend operator fun invoke(parameter: Request): Result<Response> = try {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The execute function returns a Result. This means that the function is pure and will always return a value even if there is an error in the execution. So there is no need to wrap it in try-catch block. And since invoke function is just calling the execute function and returning it's value, one of them is redundant. remove one and keep the other.

execute(parameter)
} catch (e: Exception) {
Result.failure(e)
}

@Throws(RuntimeException::class)
protected abstract suspend fun execute(parameter: Request): Result<Response>
}
Loading