diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index 26e1ab7..7f8a351 100644
--- a/.idea/deploymentTargetDropDown.xml
+++ b/.idea/deploymentTargetDropDown.xml
@@ -7,11 +7,11 @@
-
+
-
+
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_programming/App.kt b/app/src/main/java/com/example/android_programming/App.kt
index 3cb42ef..27af2b2 100644
--- a/app/src/main/java/com/example/android_programming/App.kt
+++ b/app/src/main/java/com/example/android_programming/App.kt
@@ -7,13 +7,10 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
class App : Application() {
- val database by lazy { AppDatabase.getInstance(this)}
+ lateinit var container: AppContainer
override fun onCreate() {
super.onCreate()
-// this.deleteDatabase("my-db")
- CoroutineScope(Dispatchers.IO).launch {
- AppDatabase.populateDatabase()
- }
+ container = AppDataContainer(this)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_programming/AppContainer.kt b/app/src/main/java/com/example/android_programming/AppContainer.kt
new file mode 100644
index 0000000..e7372a6
--- /dev/null
+++ b/app/src/main/java/com/example/android_programming/AppContainer.kt
@@ -0,0 +1,11 @@
+package com.example.android_programming
+
+import com.example.android_programming.repository.OrderRepository
+import com.example.android_programming.repository.SneakerRepository
+import com.example.android_programming.repository.UserRepository
+
+interface AppContainer {
+ val sneakerRepo: SneakerRepository
+ val userRepo: UserRepository
+ val orderRepo: OrderRepository
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_programming/AppDataContainer.kt b/app/src/main/java/com/example/android_programming/AppDataContainer.kt
new file mode 100644
index 0000000..8db3a7c
--- /dev/null
+++ b/app/src/main/java/com/example/android_programming/AppDataContainer.kt
@@ -0,0 +1,22 @@
+package com.example.android_programming
+
+import android.content.Context
+import com.example.android_programming.database.AppDatabase
+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
+
+class AppDataContainer(private val context: Context) : AppContainer {
+ override val sneakerRepo: SneakerRepository by lazy {
+ SneakerRepoImpl(AppDatabase.getInstance(context).sneakerDao())
+ }
+ override val userRepo: UserRepository by lazy {
+ UserRepoImpl(AppDatabase.getInstance(context).userDao())
+ }
+ override val orderRepo: OrderRepository by lazy {
+ OrderRepoImpl(AppDatabase.getInstance(context).orderDao())
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_programming/repository/OrderRepoImpl.kt b/app/src/main/java/com/example/android_programming/repository/OrderRepoImpl.kt
new file mode 100644
index 0000000..a1e5e13
--- /dev/null
+++ b/app/src/main/java/com/example/android_programming/repository/OrderRepoImpl.kt
@@ -0,0 +1,20 @@
+package com.example.android_programming.repository
+
+import com.example.android_programming.dao.OrderDao
+import com.example.android_programming.model.Order
+import com.example.android_programming.model.OrderSneaker
+import com.example.android_programming.model.OrderWithSneakers
+import kotlinx.coroutines.flow.Flow
+
+class OrderRepoImpl(private val orderDao: OrderDao) : OrderRepository {
+
+ override suspend fun createOrder(order: Order): Long = orderDao.createOrder(order)
+
+ override suspend fun insertOrderSneaker(orderSneaker: OrderSneaker) = orderDao.insertOrderSneaker(orderSneaker)
+
+ override suspend fun delete(order: Order) = orderDao.delete(order)
+
+ override fun getOrderWithSneakers(id: Int): Flow = orderDao.getOrderWithSneakers(id)
+
+ override fun getAllOrder(): Flow> = orderDao.getAllOrder()
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_programming/repository/OrderRepository.kt b/app/src/main/java/com/example/android_programming/repository/OrderRepository.kt
new file mode 100644
index 0000000..6f7b760
--- /dev/null
+++ b/app/src/main/java/com/example/android_programming/repository/OrderRepository.kt
@@ -0,0 +1,14 @@
+package com.example.android_programming.repository
+
+import com.example.android_programming.model.Order
+import com.example.android_programming.model.OrderSneaker
+import com.example.android_programming.model.OrderWithSneakers
+import kotlinx.coroutines.flow.Flow
+
+interface OrderRepository {
+ suspend fun createOrder(order: Order): Long
+ suspend fun insertOrderSneaker(orderSneaker: OrderSneaker)
+ suspend fun delete(order: Order)
+ fun getOrderWithSneakers(id: Int): Flow
+ fun getAllOrder(): Flow>
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_programming/repository/SneakerRepoImpl.kt b/app/src/main/java/com/example/android_programming/repository/SneakerRepoImpl.kt
new file mode 100644
index 0000000..11e97d1
--- /dev/null
+++ b/app/src/main/java/com/example/android_programming/repository/SneakerRepoImpl.kt
@@ -0,0 +1,18 @@
+package com.example.android_programming.repository
+
+import com.example.android_programming.dao.SneakerDao
+import com.example.android_programming.model.Sneaker
+import kotlinx.coroutines.flow.Flow
+
+class SneakerRepoImpl(private val sneakerDao: SneakerDao) : SneakerRepository {
+
+ override suspend fun insertSneaker(sneaker: Sneaker) = sneakerDao.insert(sneaker)
+
+ override suspend fun updateSneaker(sneaker: Sneaker) = sneakerDao.update(sneaker)
+
+ override suspend fun deleteSneaker(sneaker: Sneaker) = sneakerDao.delete(sneaker)
+
+ override suspend fun getSneakerById(id: Int): Sneaker = sneakerDao.getSneakerById(id)
+
+ override fun getAllSneakers(): Flow> = sneakerDao.getAllSneakers()
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_programming/repository/SneakerRepository.kt b/app/src/main/java/com/example/android_programming/repository/SneakerRepository.kt
new file mode 100644
index 0000000..5d099ee
--- /dev/null
+++ b/app/src/main/java/com/example/android_programming/repository/SneakerRepository.kt
@@ -0,0 +1,12 @@
+package com.example.android_programming.repository
+
+import com.example.android_programming.model.Sneaker
+import kotlinx.coroutines.flow.Flow
+
+interface SneakerRepository {
+ suspend fun insertSneaker(sneaker: Sneaker)
+ suspend fun updateSneaker(sneaker: Sneaker)
+ suspend fun deleteSneaker(sneaker: Sneaker)
+ suspend fun getSneakerById(id: Int): Sneaker
+ fun getAllSneakers(): Flow>
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_programming/repository/UserRepoImpl.kt b/app/src/main/java/com/example/android_programming/repository/UserRepoImpl.kt
new file mode 100644
index 0000000..d210b13
--- /dev/null
+++ b/app/src/main/java/com/example/android_programming/repository/UserRepoImpl.kt
@@ -0,0 +1,21 @@
+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)
+
+ override fun getUserOrders(id: Int): Flow = userDao.getUserOrders(id)
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_programming/repository/UserRepository.kt b/app/src/main/java/com/example/android_programming/repository/UserRepository.kt
new file mode 100644
index 0000000..6bfcf0b
--- /dev/null
+++ b/app/src/main/java/com/example/android_programming/repository/UserRepository.kt
@@ -0,0 +1,14 @@
+package com.example.android_programming.repository
+
+import com.example.android_programming.model.User
+import com.example.android_programming.model.UserWithOrder
+import kotlinx.coroutines.flow.Flow
+
+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
+ fun getUserOrders(id: Int) : Flow
+}
\ No newline at end of file