Fix: refactor project

This commit is contained in:
Emelyanov535 2023-12-07 17:31:23 +04:00
parent 6b41efd82e
commit 10b53b7f81
52 changed files with 157 additions and 186 deletions

View File

@ -2,10 +2,8 @@ package com.example.android_programming
import com.example.android_programming.api.repository.RestSneakerRepository
import com.example.android_programming.api.repository.RestUserRepository
import com.example.android_programming.repository.BasketRepository
import com.example.android_programming.repository.OrderRepository
import com.example.android_programming.repository.SneakerRepository
import com.example.android_programming.repository.UserRepository
import com.example.android_programming.businessLogic.repo.BasketRepository
import com.example.android_programming.businessLogic.repo.OrderRepository
interface AppContainer {
val sneakerRepo: RestSneakerRepository

View File

@ -5,15 +5,12 @@ import com.example.android_programming.api.BackendService
import com.example.android_programming.api.repository.RestSneakerRepository
import com.example.android_programming.api.repository.RestUserRepository
import com.example.android_programming.database.AppDatabase
import com.example.android_programming.database.remotekeys.repository.RemoteKeysRepositoryImpl
import com.example.android_programming.repository.BasketRepoImpl
import com.example.android_programming.repository.BasketRepository
import com.example.android_programming.repository.OrderRepoImpl
import com.example.android_programming.repository.OrderRepository
import com.example.android_programming.repository.SneakerRepoImpl
import com.example.android_programming.repository.SneakerRepository
import com.example.android_programming.repository.UserRepoImpl
import com.example.android_programming.repository.UserRepository
import com.example.android_programming.database.repository.RemoteKeysRepositoryImpl
import com.example.android_programming.database.repository.BasketRepoImpl
import com.example.android_programming.businessLogic.repo.BasketRepository
import com.example.android_programming.database.repository.OrderRepoImpl
import com.example.android_programming.businessLogic.repo.OrderRepository
import com.example.android_programming.database.repository.SneakerRepoImpl
class AppDataContainer(private val context: Context) : AppContainer {
override val sneakerRepo: RestSneakerRepository by lazy {

View File

@ -2,6 +2,7 @@ package com.example.android_programming.api
import com.example.android_programming.api.model.SneakerRemote
import com.example.android_programming.api.model.UserRemote
import com.example.android_programming.api.model.UserRemoteSignIn
import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
import kotlinx.serialization.json.Json
import okhttp3.MediaType.Companion.toMediaType
@ -34,6 +35,11 @@ interface BackendService {
@Body user: UserRemote,
): UserRemote
@POST("user/signin")
suspend fun SignIn(
@Body user: UserRemoteSignIn
): UserRemote
companion object {
private const val BASE_URL = "https://59k4pfj3-8080.euw.devtunnels.ms/api/"

View File

@ -6,15 +6,12 @@ import androidx.paging.PagingState
import androidx.paging.RemoteMediator
import androidx.room.withTransaction
import com.example.android_programming.api.model.toSneaker
import com.example.android_programming.api.repository.RestSneakerRepository
import com.example.android_programming.database.AppDatabase
import com.example.android_programming.database.remotekeys.model.RemoteKeyType
import com.example.android_programming.database.remotekeys.model.RemoteKeys
import com.example.android_programming.database.remotekeys.repository.RemoteKeyRepository
import com.example.android_programming.database.remotekeys.repository.RemoteKeysRepositoryImpl
import com.example.android_programming.model.RemoteKeyType
import com.example.android_programming.model.RemoteKeys
import com.example.android_programming.database.repository.RemoteKeysRepositoryImpl
import com.example.android_programming.model.Sneaker
import com.example.android_programming.repository.SneakerRepoImpl
import com.example.android_programming.repository.SneakerRepository
import com.example.android_programming.database.repository.SneakerRepoImpl
import retrofit2.HttpException
import java.io.IOException
@ -23,7 +20,7 @@ class SneakerRemoteMediator(
private val service: BackendService,
private val sneakerRepository: SneakerRepoImpl,
private val database: AppDatabase,
private val dbRemoteKeyRepository:RemoteKeysRepositoryImpl
private val dbRemoteKeyRepository: RemoteKeysRepositoryImpl
) : RemoteMediator<Int, Sneaker>() {
override suspend fun initialize(): InitializeAction {
return InitializeAction.LAUNCH_INITIAL_REFRESH

View File

@ -14,10 +14,11 @@ data class UserRemote (
val surname: String = "",
val email: String = "",
val password: String = "",
val role: RoleEnum = RoleEnum.User,
val role: String = "",
val photo: Int? = 0,
)
fun UserRemote.toUser(): User = User(
id,
name,

View File

@ -0,0 +1,9 @@
package com.example.android_programming.api.model
import kotlinx.serialization.Serializable
@Serializable
data class UserRemoteSignIn(
val email: String = "",
val password: String = "",
)

View File

@ -1,20 +1,18 @@
package com.example.android_programming.api.repository
import android.util.Log
import androidx.paging.ExperimentalPagingApi
import androidx.paging.Pager
import androidx.paging.PagingConfig
import androidx.paging.PagingData
import androidx.paging.PagingSource
import com.example.android_programming.AppContainer
import com.example.android_programming.api.BackendService
import com.example.android_programming.api.SneakerRemoteMediator
import com.example.android_programming.api.model.toSneaker
import com.example.android_programming.database.AppDatabase
import com.example.android_programming.database.remotekeys.repository.RemoteKeysRepositoryImpl
import com.example.android_programming.database.repository.RemoteKeysRepositoryImpl
import com.example.android_programming.model.Sneaker
import com.example.android_programming.repository.SneakerRepoImpl
import com.example.android_programming.repository.SneakerRepository
import com.example.android_programming.database.repository.SneakerRepoImpl
import com.example.android_programming.businessLogic.repo.SneakerRepository
import kotlinx.coroutines.flow.Flow
class RestSneakerRepository(

View File

@ -1,16 +1,17 @@
package com.example.android_programming.api.repository
import com.example.android_programming.api.BackendService
import com.example.android_programming.api.model.UserRemoteSignIn
import com.example.android_programming.api.model.toUser
import com.example.android_programming.api.model.toUserRemote
import com.example.android_programming.model.User
import com.example.android_programming.repository.UserRepository
import com.example.android_programming.businessLogic.repo.UserRepository
class RestUserRepository(
private var service: BackendService
): UserRepository {
override suspend fun createUser(user: User) {
val user1 = user.toUserRemote()
service.SignUp(user1)
service.SignUp(user.toUserRemote())
}
override suspend fun updateUser(user: User) {
@ -20,5 +21,7 @@ class RestUserRepository(
override suspend fun deleteUser(user: User) {
println()
}
override suspend fun authUser(user: UserRemoteSignIn): User {
return service.SignIn(user).toUser()
}
}

View File

@ -1,4 +1,4 @@
package com.example.android_programming.repository
package com.example.android_programming.businessLogic.repo
import androidx.room.Delete
import androidx.room.Insert

View File

@ -1,4 +1,4 @@
package com.example.android_programming.repository
package com.example.android_programming.businessLogic.repo
import com.example.android_programming.model.Order
import com.example.android_programming.model.OrderSneaker

View File

@ -0,0 +1,10 @@
package com.example.android_programming.businessLogic.repo
import com.example.android_programming.model.RemoteKeyType
import com.example.android_programming.model.RemoteKeys
interface RemoteKeyRepository {
suspend fun getAllRemoteKeys(id: Int, type: RemoteKeyType): RemoteKeys?
suspend fun createRemoteKeys(remoteKeys: List<RemoteKeys>)
suspend fun deleteRemoteKey(type: RemoteKeyType)
}

View File

@ -1,4 +1,4 @@
package com.example.android_programming.repository
package com.example.android_programming.businessLogic.repo
import androidx.paging.PagingData
import androidx.paging.PagingSource

View File

@ -1,5 +1,6 @@
package com.example.android_programming.repository
package com.example.android_programming.businessLogic.repo
import com.example.android_programming.api.model.UserRemoteSignIn
import com.example.android_programming.model.Basket
import com.example.android_programming.model.User
import com.example.android_programming.model.UserWithOrder
@ -9,6 +10,5 @@ interface UserRepository {
suspend fun createUser(user: User)
suspend fun updateUser(user: User)
suspend fun deleteUser(user: User)
// suspend fun getUserById(id: Int): User
// suspend fun getUserByEmail(email: String): User
suspend fun authUser(user: UserRemoteSignIn): User
}

View File

@ -1,4 +1,4 @@
package com.example.android_programming.vmodel
package com.example.android_programming.businessLogic.vmodel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewmodel.CreationExtras

View File

@ -1,15 +1,10 @@
package com.example.android_programming.vmodel
package com.example.android_programming.businessLogic.vmodel
import androidx.compose.runtime.State
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.mutableStateOf
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.example.android_programming.model.Basket
import com.example.android_programming.model.BasketSneakers
import com.example.android_programming.model.BasketWithSneakers
import com.example.android_programming.model.Sneaker
import com.example.android_programming.repository.BasketRepository
import com.example.android_programming.businessLogic.repo.BasketRepository
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow

View File

@ -1,26 +1,20 @@
package com.example.android_programming.vmodel
package com.example.android_programming.businessLogic.vmodel
import androidx.compose.runtime.State
import androidx.compose.runtime.mutableStateOf
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.CreationExtras
import com.example.android_programming.App
import com.example.android_programming.GlobalUser
import com.example.android_programming.database.AppDatabase
import com.example.android_programming.model.Order
import com.example.android_programming.model.OrderSneaker
import com.example.android_programming.model.OrderWithSneakers
import com.example.android_programming.model.Sneaker
import com.example.android_programming.model.UserWithOrder
import com.example.android_programming.repository.BasketRepository
import com.example.android_programming.repository.OrderRepository
import com.example.android_programming.repository.SneakerRepository
import com.example.android_programming.businessLogic.repo.BasketRepository
import com.example.android_programming.businessLogic.repo.OrderRepository
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch
import java.util.Date

View File

@ -1,30 +1,14 @@
package com.example.android_programming.vmodel
package com.example.android_programming.businessLogic.vmodel
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.State
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory.Companion.APPLICATION_KEY
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.CreationExtras
import androidx.paging.Pager
import androidx.paging.PagingConfig
import androidx.paging.PagingData
import androidx.paging.cachedIn
import androidx.paging.map
import com.example.android_programming.App
import com.example.android_programming.R
import com.example.android_programming.api.model.toSneakerRemote
import com.example.android_programming.api.repository.RestSneakerRepository
import com.example.android_programming.database.AppDatabase
import com.example.android_programming.model.Sneaker
import com.example.android_programming.repository.SneakerRepository
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch
class SneakerViewModel(private val sneakerRepository: RestSneakerRepository): ViewModel() {

View File

@ -1,20 +1,13 @@
package com.example.android_programming.vmodel
package com.example.android_programming.businessLogic.vmodel
import androidx.compose.runtime.mutableStateOf
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.CreationExtras
import com.example.android_programming.App
import com.example.android_programming.GlobalUser
import com.example.android_programming.R
import com.example.android_programming.database.AppDatabase
import com.example.android_programming.model.Basket
import com.example.android_programming.model.RoleEnum
import com.example.android_programming.api.model.UserRemoteSignIn
import com.example.android_programming.model.User
import com.example.android_programming.repository.BasketRepository
import com.example.android_programming.repository.SneakerRepository
import com.example.android_programming.repository.UserRepository
import com.example.android_programming.businessLogic.repo.UserRepository
import kotlinx.coroutines.launch
class UserViewModel(private val userRepository: UserRepository): ViewModel() {
@ -29,17 +22,14 @@ class UserViewModel(private val userRepository: UserRepository): ViewModel() {
surname = surname.value,
email = email.value,
password = password.value,
role = RoleEnum.User,
role = "USER",
photo = R.drawable.shailushai
)
userRepository.createUser(user)
}
fun authUser() = viewModelScope.launch {
// val user = userRepository.getUserByEmail(email.value)
// if (password.value != "" && user.password == password.value) {
// val globalUser = GlobalUser.getInstance()
// globalUser.setUser(user)
// }
val user = userRepository.authUser(UserRemoteSignIn(email.value, password.value))
GlobalUser.getInstance().setUser(user)
}
fun isValidEmail(email: String): Boolean {

View File

@ -18,8 +18,8 @@ import com.example.android_programming.composeui.Screens.ProfileScreen.Profile.P
import com.example.android_programming.composeui.Screens.ProfileScreen.SignIn.LoginScreen
import com.example.android_programming.composeui.Screens.ProfileScreen.SignUp.SignUpScreen
import com.example.android_programming.model.Sneaker
import com.example.android_programming.vmodel.AppViewModelProvider
import com.example.android_programming.vmodel.OrderViewModel
import com.example.android_programming.businessLogic.vmodel.AppViewModelProvider
import com.example.android_programming.businessLogic.vmodel.OrderViewModel
import com.google.gson.Gson
@Composable

View File

@ -35,8 +35,8 @@ import androidx.compose.ui.unit.sp
import androidx.lifecycle.viewmodel.compose.viewModel
import com.example.android_programming.R
import com.example.android_programming.model.PhotoManager
import com.example.android_programming.vmodel.AppViewModelProvider
import com.example.android_programming.vmodel.SneakerViewModel
import com.example.android_programming.businessLogic.vmodel.AppViewModelProvider
import com.example.android_programming.businessLogic.vmodel.SneakerViewModel
@Composable
fun AddPanel(sneakerViewModel: SneakerViewModel = viewModel(factory = AppViewModelProvider.Factory)){

View File

@ -23,7 +23,7 @@ import com.example.android_programming.model.RoleEnum
fun AdminPanel(navHostController: NavHostController) {
var isAddPanelVisible by remember { mutableStateOf(false) }
var isChangePanelVisible by remember { mutableStateOf(false) }
var showDialog by remember { mutableStateOf(GlobalUser.getInstance().getUser()?.role == RoleEnum.User || GlobalUser.getInstance().getUser()?.role == null) }
var showDialog by remember { mutableStateOf(GlobalUser.getInstance().getUser()?.role == "USER" || GlobalUser.getInstance().getUser()?.role == null) }
if (!showDialog) {
Column(
modifier = Modifier

View File

@ -30,8 +30,8 @@ import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.NavHostController
import com.example.android_programming.R
import com.example.android_programming.model.Sneaker
import com.example.android_programming.vmodel.AppViewModelProvider
import com.example.android_programming.vmodel.SneakerViewModel
import com.example.android_programming.businessLogic.vmodel.AppViewModelProvider
import com.example.android_programming.businessLogic.vmodel.SneakerViewModel
import com.google.gson.Gson
@Composable

View File

@ -30,8 +30,8 @@ import androidx.paging.LoadState
import androidx.paging.compose.collectAsLazyPagingItems
import androidx.paging.compose.itemKey
import com.example.android_programming.model.Sneaker
import com.example.android_programming.vmodel.AppViewModelProvider
import com.example.android_programming.vmodel.SneakerViewModel
import com.example.android_programming.businessLogic.vmodel.AppViewModelProvider
import com.example.android_programming.businessLogic.vmodel.SneakerViewModel
import kotlinx.coroutines.delay
@Composable

View File

@ -43,8 +43,8 @@ import androidx.lifecycle.viewmodel.compose.viewModel
import com.example.android_programming.R
import com.example.android_programming.model.PhotoManager
import com.example.android_programming.model.Sneaker
import com.example.android_programming.vmodel.AppViewModelProvider
import com.example.android_programming.vmodel.SneakerViewModel
import com.example.android_programming.businessLogic.vmodel.AppViewModelProvider
import com.example.android_programming.businessLogic.vmodel.SneakerViewModel
@Composable
fun ChangeSneaker(sneaker: Sneaker, onBackClick: () -> Unit, sneakerViewModel: SneakerViewModel = viewModel(factory = AppViewModelProvider.Factory)) {

View File

@ -23,8 +23,8 @@ import com.example.android_programming.composeui.Screens.HomeScreen.FilterByBran
import com.example.android_programming.composeui.Screens.HomeScreen.SearchField.SearchField
import com.example.android_programming.composeui.Screens.HomeScreen.SneakerRecyclerView.RecyclerView
import com.example.android_programming.model.Sneaker
import com.example.android_programming.vmodel.AppViewModelProvider
import com.example.android_programming.vmodel.OrderViewModel
import com.example.android_programming.businessLogic.vmodel.AppViewModelProvider
import com.example.android_programming.businessLogic.vmodel.OrderViewModel
@Composable
fun HomeScreen(navHostController: NavHostController) {

View File

@ -33,9 +33,9 @@ import com.example.android_programming.GlobalUser
import com.example.android_programming.R
import com.example.android_programming.model.BasketSneakers
import com.example.android_programming.model.Sneaker
import com.example.android_programming.vmodel.AppViewModelProvider
import com.example.android_programming.vmodel.BasketViewModel
import com.example.android_programming.vmodel.SneakerViewModel
import com.example.android_programming.businessLogic.vmodel.AppViewModelProvider
import com.example.android_programming.businessLogic.vmodel.BasketViewModel
import com.example.android_programming.businessLogic.vmodel.SneakerViewModel
import com.google.gson.Gson
@Composable

View File

@ -20,9 +20,9 @@ import androidx.paging.compose.collectAsLazyPagingItems
import androidx.paging.compose.itemKey
import com.example.android_programming.R
import com.example.android_programming.model.Sneaker
import com.example.android_programming.vmodel.AppViewModelProvider
import com.example.android_programming.vmodel.OrderViewModel
import com.example.android_programming.vmodel.SneakerViewModel
import com.example.android_programming.businessLogic.vmodel.AppViewModelProvider
import com.example.android_programming.businessLogic.vmodel.OrderViewModel
import com.example.android_programming.businessLogic.vmodel.SneakerViewModel
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch

View File

@ -18,8 +18,8 @@ import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel
import com.example.android_programming.GlobalUser
import com.example.android_programming.model.Order
import com.example.android_programming.vmodel.AppViewModelProvider
import com.example.android_programming.vmodel.OrderViewModel
import com.example.android_programming.businessLogic.vmodel.AppViewModelProvider
import com.example.android_programming.businessLogic.vmodel.OrderViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch

View File

@ -34,8 +34,8 @@ import androidx.lifecycle.viewmodel.compose.viewModel
import com.example.android_programming.R
import com.example.android_programming.model.Order
import com.example.android_programming.model.Sneaker
import com.example.android_programming.vmodel.AppViewModelProvider
import com.example.android_programming.vmodel.OrderViewModel
import com.example.android_programming.businessLogic.vmodel.AppViewModelProvider
import com.example.android_programming.businessLogic.vmodel.OrderViewModel
import java.util.Date
@Composable

View File

@ -37,9 +37,9 @@ import androidx.lifecycle.viewmodel.compose.viewModel
import com.example.android_programming.GlobalUser
import com.example.android_programming.R
import com.example.android_programming.model.Sneaker
import com.example.android_programming.vmodel.AppViewModelProvider
import com.example.android_programming.vmodel.BasketViewModel
import com.example.android_programming.vmodel.OrderViewModel
import com.example.android_programming.businessLogic.vmodel.AppViewModelProvider
import com.example.android_programming.businessLogic.vmodel.BasketViewModel
import com.example.android_programming.businessLogic.vmodel.OrderViewModel
@SuppressLint("UnrememberedMutableState")
@Composable

View File

@ -27,7 +27,7 @@ import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.example.android_programming.R
import com.example.android_programming.vmodel.OrderViewModel
import com.example.android_programming.businessLogic.vmodel.OrderViewModel
@Composable
fun DeliveryAddress(orderViewModel: OrderViewModel) {

View File

@ -23,9 +23,9 @@ import androidx.navigation.NavHostController
import com.example.android_programming.GlobalUser
import com.example.android_programming.R
import com.example.android_programming.model.Sneaker
import com.example.android_programming.vmodel.AppViewModelProvider
import com.example.android_programming.vmodel.BasketViewModel
import com.example.android_programming.vmodel.OrderViewModel
import com.example.android_programming.businessLogic.vmodel.AppViewModelProvider
import com.example.android_programming.businessLogic.vmodel.BasketViewModel
import com.example.android_programming.businessLogic.vmodel.OrderViewModel
@Composable

View File

@ -4,7 +4,7 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.runtime.Composable
import com.example.android_programming.model.Sneaker
import com.example.android_programming.vmodel.OrderViewModel
import com.example.android_programming.businessLogic.vmodel.OrderViewModel
@Composable
fun ShoppingList(list : List<Sneaker>) {

View File

@ -17,7 +17,7 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.example.android_programming.GlobalUser
import com.example.android_programming.R
import com.example.android_programming.vmodel.OrderViewModel
import com.example.android_programming.businessLogic.vmodel.OrderViewModel
@Composable
fun SubTotal(orderViewModel: OrderViewModel) {

View File

@ -8,8 +8,8 @@ import androidx.navigation.compose.rememberNavController
import com.example.android_programming.GlobalUser
import com.example.android_programming.composeui.Screens.ProfileScreen.SignIn.LoginScreen
import com.example.android_programming.model.Basket
import com.example.android_programming.vmodel.AppViewModelProvider
import com.example.android_programming.vmodel.BasketViewModel
import com.example.android_programming.businessLogic.vmodel.AppViewModelProvider
import com.example.android_programming.businessLogic.vmodel.BasketViewModel
@Composable
fun ProfileScreen(navController: NavHostController) {

View File

@ -40,9 +40,9 @@ import androidx.navigation.NavHostController
import com.example.android_programming.GlobalUser
import com.example.android_programming.R
import com.example.android_programming.model.Basket
import com.example.android_programming.vmodel.AppViewModelProvider
import com.example.android_programming.vmodel.BasketViewModel
import com.example.android_programming.vmodel.UserViewModel
import com.example.android_programming.businessLogic.vmodel.AppViewModelProvider
import com.example.android_programming.businessLogic.vmodel.BasketViewModel
import com.example.android_programming.businessLogic.vmodel.UserViewModel
@Composable
fun SignInCard(navController: NavHostController, userViewModel: UserViewModel = viewModel(factory = AppViewModelProvider.Factory), basketViewModel: BasketViewModel = viewModel(factory = AppViewModelProvider.Factory)) {

View File

@ -32,8 +32,8 @@ import androidx.compose.ui.unit.sp
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.NavHostController
import com.example.android_programming.R
import com.example.android_programming.vmodel.AppViewModelProvider
import com.example.android_programming.vmodel.UserViewModel
import com.example.android_programming.businessLogic.vmodel.AppViewModelProvider
import com.example.android_programming.businessLogic.vmodel.UserViewModel
@Composable
fun SignUpCard(navHostController: NavHostController, userViewModel: UserViewModel = viewModel(factory = AppViewModelProvider.Factory)) {

View File

@ -6,17 +6,16 @@ import androidx.room.Room
import androidx.room.RoomDatabase
import androidx.sqlite.db.SupportSQLiteDatabase
import com.example.android_programming.R
import com.example.android_programming.dao.BasketDao
import com.example.android_programming.dao.OrderDao
import com.example.android_programming.dao.SneakerDao
import com.example.android_programming.dao.UserDao
import com.example.android_programming.database.remotekeys.dao.RemoteKeysDao
import com.example.android_programming.database.remotekeys.model.RemoteKeys
import com.example.android_programming.database.dao.BasketDao
import com.example.android_programming.database.dao.OrderDao
import com.example.android_programming.database.dao.SneakerDao
import com.example.android_programming.database.dao.UserDao
import com.example.android_programming.database.dao.RemoteKeysDao
import com.example.android_programming.model.RemoteKeys
import com.example.android_programming.model.Basket
import com.example.android_programming.model.BasketSneakers
import com.example.android_programming.model.Order
import com.example.android_programming.model.OrderSneaker
import com.example.android_programming.model.RoleEnum
import com.example.android_programming.model.Sneaker
import com.example.android_programming.model.User
import kotlinx.coroutines.CoroutineScope
@ -41,9 +40,9 @@ abstract class AppDatabase : RoomDatabase() {
INSTANCE?.let { database ->
// User
val userDao = database.userDao()
val user1 = User(null, "Artem", "Emelyanov", "artem@mail.ru", "123", RoleEnum.Admin)
val user2 = User(null, "Danil", "Markov", "danil@mail.ru", "123", RoleEnum.User)
val user3 = User(null, "Viktoria", "Presnyakova", "vika@mail.ru", "123", RoleEnum.User)
val user1 = User(null, "Artem", "Emelyanov", "artem@mail.ru", "123", "ADMIN")
val user2 = User(null, "Danil", "Markov", "danil@mail.ru", "123", "USER")
val user3 = User(null, "Viktoria", "Presnyakova", "vika@mail.ru", "123", "USER")
userDao.createUser(user1)
userDao.createUser(user2)
userDao.createUser(user3)

View File

@ -1,4 +1,4 @@
package com.example.android_programming.dao
package com.example.android_programming.database.dao
import androidx.room.Dao
import androidx.room.Delete

View File

@ -1,4 +1,4 @@
package com.example.android_programming.dao
package com.example.android_programming.database.dao
import androidx.room.Dao
import androidx.room.Delete

View File

@ -1,11 +1,11 @@
package com.example.android_programming.database.remotekeys.dao
package com.example.android_programming.database.dao
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
import com.example.android_programming.database.remotekeys.model.RemoteKeyType
import com.example.android_programming.database.remotekeys.model.RemoteKeys
import com.example.android_programming.model.RemoteKeyType
import com.example.android_programming.model.RemoteKeys
@Dao
interface RemoteKeysDao {

View File

@ -1,4 +1,4 @@
package com.example.android_programming.dao
package com.example.android_programming.database.dao
import androidx.paging.PagingSource
import androidx.room.Dao

View File

@ -1,4 +1,4 @@
package com.example.android_programming.dao
package com.example.android_programming.database.dao
import androidx.room.Dao
import androidx.room.Delete

View File

@ -1,10 +0,0 @@
package com.example.android_programming.database.remotekeys.repository
import com.example.android_programming.database.remotekeys.model.RemoteKeyType
import com.example.android_programming.database.remotekeys.model.RemoteKeys
interface RemoteKeyRepository {
suspend fun getAllRemoteKeys(id: Int, type: RemoteKeyType): RemoteKeys?
suspend fun createRemoteKeys(remoteKeys: List<RemoteKeys>)
suspend fun deleteRemoteKey(type: RemoteKeyType)
}

View File

@ -1,6 +1,7 @@
package com.example.android_programming.repository
package com.example.android_programming.database.repository
import com.example.android_programming.dao.BasketDao
import com.example.android_programming.businessLogic.repo.BasketRepository
import com.example.android_programming.database.dao.BasketDao
import com.example.android_programming.model.Basket
import com.example.android_programming.model.BasketSneakers
import com.example.android_programming.model.BasketWithSneakers

View File

@ -1,6 +1,7 @@
package com.example.android_programming.repository
package com.example.android_programming.database.repository
import com.example.android_programming.dao.OrderDao
import com.example.android_programming.businessLogic.repo.OrderRepository
import com.example.android_programming.database.dao.OrderDao
import com.example.android_programming.model.Order
import com.example.android_programming.model.OrderSneaker
import com.example.android_programming.model.OrderWithSneakers

View File

@ -1,8 +1,9 @@
package com.example.android_programming.database.remotekeys.repository
package com.example.android_programming.database.repository
import com.example.android_programming.database.remotekeys.dao.RemoteKeysDao
import com.example.android_programming.database.remotekeys.model.RemoteKeyType
import com.example.android_programming.database.remotekeys.model.RemoteKeys
import com.example.android_programming.businessLogic.repo.RemoteKeyRepository
import com.example.android_programming.database.dao.RemoteKeysDao
import com.example.android_programming.model.RemoteKeyType
import com.example.android_programming.model.RemoteKeys
class RemoteKeysRepositoryImpl(private val remoteKeysDao: RemoteKeysDao) : RemoteKeyRepository {
override suspend fun getAllRemoteKeys(id: Int, type: RemoteKeyType) =

View File

@ -1,12 +1,12 @@
package com.example.android_programming.repository
package com.example.android_programming.database.repository
import androidx.paging.Pager
import androidx.paging.PagingConfig
import androidx.paging.PagingData
import androidx.paging.PagingSource
import androidx.paging.cachedIn
import com.example.android_programming.AppContainer
import com.example.android_programming.dao.SneakerDao
import com.example.android_programming.businessLogic.repo.SneakerRepository
import com.example.android_programming.database.dao.SneakerDao
import com.example.android_programming.model.Sneaker
import kotlinx.coroutines.flow.Flow

View File

@ -0,0 +1,17 @@
package com.example.android_programming.database.repository
//class UserRepoImpl(private val userDao: UserDao) : UserRepository {
//
// override suspend fun createUser(user: User) = userDao.createUser(user)
//
// override suspend fun updateUser(user: User) = userDao.updateUser(user)
//
// override suspend fun deleteUser(user: User) = userDao.deleteUser(user)
//// override suspend fun authUser(user: UserRemoteSignIn): User {
//// println()
//// }
//
//// override suspend fun getUserById(id: Int): User = userDao.getUserById(id)
////
//// override suspend fun getUserByEmail(email: String): User = userDao.getUserByEmail(email)
//}

View File

@ -1,10 +1,9 @@
package com.example.android_programming.database.remotekeys.model
package com.example.android_programming.model
import androidx.room.Entity
import androidx.room.PrimaryKey
import androidx.room.TypeConverter
import androidx.room.TypeConverters
import com.example.android_programming.model.Sneaker
enum class RemoteKeyType(private val type: String) {
SNEAKER(Sneaker::class.simpleName ?: "Sneaker");

View File

@ -17,7 +17,7 @@ data class User(
@ColumnInfo(name = "Password")
val password: String,
@ColumnInfo(name = "Role")
val role: RoleEnum,
val role: String,
@ColumnInfo(name = "Photo")
val photo: Int? = null,
)

View File

@ -1,19 +0,0 @@
package com.example.android_programming.repository
import com.example.android_programming.dao.UserDao
import com.example.android_programming.model.User
import com.example.android_programming.model.UserWithOrder
import kotlinx.coroutines.flow.Flow
class UserRepoImpl(private val userDao: UserDao) : UserRepository {
override suspend fun createUser(user: User) = userDao.createUser(user)
override suspend fun updateUser(user: User) = userDao.updateUser(user)
override suspend fun deleteUser(user: User) = userDao.deleteUser(user)
// override suspend fun getUserById(id: Int): User = userDao.getUserById(id)
//
// override suspend fun getUserByEmail(email: String): User = userDao.getUserByEmail(email)
}