DI для репозиториев
This commit is contained in:
parent
e839f69d19
commit
ff29494a6c
@ -73,4 +73,8 @@ dependencies {
|
|||||||
implementation 'androidx.room:room-runtime:2.5.0' // Библиотека "Room"
|
implementation 'androidx.room:room-runtime:2.5.0' // Библиотека "Room"
|
||||||
kapt "androidx.room:room-compiler:2.5.0" // Кодогенератор
|
kapt "androidx.room:room-compiler:2.5.0" // Кодогенератор
|
||||||
implementation 'androidx.room:room-ktx:2.5.0' // Дополнительно для Kotlin Coroutines, Kotlin Flows
|
implementation 'androidx.room:room-ktx:2.5.0' // Дополнительно для Kotlin Coroutines, Kotlin Flows
|
||||||
|
|
||||||
|
// lab4
|
||||||
|
implementation "com.google.dagger:hilt-android:2.40.5"
|
||||||
|
kapt "com.google.dagger:hilt-android-compiler:2.40.5"
|
||||||
}
|
}
|
@ -11,16 +11,14 @@ import com.example.shawarma.screens.authorization.AuthorizationScreen
|
|||||||
import com.example.shawarma.screens.registration.RegistrationScreen
|
import com.example.shawarma.screens.registration.RegistrationScreen
|
||||||
import com.example.shawarma.ui.theme.MyLightYellow
|
import com.example.shawarma.ui.theme.MyLightYellow
|
||||||
import com.example.shawarma.ui.theme.ShawarmaTheme
|
import com.example.shawarma.ui.theme.ShawarmaTheme
|
||||||
|
import dagger.hilt.android.HiltAndroidApp
|
||||||
|
|
||||||
class MainActivity : ComponentActivity() {
|
class MainActivity : ComponentActivity() {
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
setContent {
|
setContent {
|
||||||
|
MainNavBar()
|
||||||
MainNavBar()
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,10 +6,10 @@ import androidx.room.Room
|
|||||||
import androidx.room.RoomDatabase
|
import androidx.room.RoomDatabase
|
||||||
import androidx.room.TypeConverters
|
import androidx.room.TypeConverters
|
||||||
import androidx.sqlite.db.SupportSQLiteDatabase
|
import androidx.sqlite.db.SupportSQLiteDatabase
|
||||||
import com.example.shawarma.data.dao.OrderDao
|
import com.example.shawarma.data.interfaces.dao.OrderDao
|
||||||
import com.example.shawarma.data.dao.OrderProductDao
|
import com.example.shawarma.data.interfaces.dao.OrderProductDao
|
||||||
import com.example.shawarma.data.dao.ProductDao
|
import com.example.shawarma.data.interfaces.dao.ProductDao
|
||||||
import com.example.shawarma.data.dao.UserDao
|
import com.example.shawarma.data.interfaces.dao.UserDao
|
||||||
import com.example.shawarma.data.models.OrderModel
|
import com.example.shawarma.data.models.OrderModel
|
||||||
import com.example.shawarma.data.models.OrderProductModel
|
import com.example.shawarma.data.models.OrderProductModel
|
||||||
import com.example.shawarma.data.models.OrderStatus
|
import com.example.shawarma.data.models.OrderStatus
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package com.example.shawarma.data.dao
|
package com.example.shawarma.data.interfaces.dao
|
||||||
|
|
||||||
import androidx.room.Dao
|
import androidx.room.Dao
|
||||||
import androidx.room.Delete
|
import androidx.room.Delete
|
||||||
@ -8,23 +8,18 @@ import androidx.room.Update
|
|||||||
import com.example.shawarma.data.models.OrderModel
|
import com.example.shawarma.data.models.OrderModel
|
||||||
import com.example.shawarma.data.models.OrderWithProducts
|
import com.example.shawarma.data.models.OrderWithProducts
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
interface OrderDao {
|
interface OrderDao {
|
||||||
@Insert
|
@Insert
|
||||||
suspend fun insert(order: OrderModel)
|
suspend fun insert(order: OrderModel)
|
||||||
|
|
||||||
@Update
|
@Update
|
||||||
suspend fun update(order: OrderModel)
|
suspend fun update(order: OrderModel)
|
||||||
|
|
||||||
@Delete
|
@Delete
|
||||||
suspend fun delete(order: OrderModel)
|
suspend fun delete(order: OrderModel)
|
||||||
|
|
||||||
@Query("select * from orders")
|
@Query("select * from orders")
|
||||||
fun getAll() : Flow<List<OrderWithProducts>>
|
fun getAll(): Flow<List<OrderWithProducts>>
|
||||||
@Query("select * from orders where orders.id =:id")
|
@Query("select * from orders where orders.id =:id")
|
||||||
fun getById(id: Int): Flow<List<OrderWithProducts>>
|
fun getById(id: Int): Flow<List<OrderWithProducts>>
|
||||||
@Query("select * from orders where orders.user_id =:userId")
|
@Query("select * from orders where orders.user_id =:userId")
|
||||||
fun getByUserId(userId: Int): Flow<List<OrderWithProducts>>
|
fun getByUserId(userId: Int): Flow<List<OrderWithProducts>>
|
||||||
|
|
||||||
}
|
}
|
@ -1,9 +1,8 @@
|
|||||||
package com.example.shawarma.data.dao
|
package com.example.shawarma.data.interfaces.dao
|
||||||
|
|
||||||
import androidx.room.Dao
|
import androidx.room.Dao
|
||||||
import androidx.room.Insert
|
import androidx.room.Insert
|
||||||
import com.example.shawarma.data.models.OrderProductModel
|
import com.example.shawarma.data.models.OrderProductModel
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
interface OrderProductDao {
|
interface OrderProductDao {
|
||||||
@Insert
|
@Insert
|
@ -1,4 +1,4 @@
|
|||||||
package com.example.shawarma.data.dao
|
package com.example.shawarma.data.interfaces.dao
|
||||||
|
|
||||||
import androidx.room.Dao
|
import androidx.room.Dao
|
||||||
import androidx.room.Delete
|
import androidx.room.Delete
|
||||||
@ -7,7 +7,6 @@ import androidx.room.Query
|
|||||||
import androidx.room.Update
|
import androidx.room.Update
|
||||||
import com.example.shawarma.data.models.ProductModel
|
import com.example.shawarma.data.models.ProductModel
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
interface ProductDao {
|
interface ProductDao {
|
||||||
@Insert
|
@Insert
|
||||||
@ -30,4 +29,5 @@ interface ProductDao {
|
|||||||
|
|
||||||
@Query("select * from products where products.id = :id")
|
@Query("select * from products where products.id = :id")
|
||||||
fun getById(id: Int): Flow<ProductModel>
|
fun getById(id: Int): Flow<ProductModel>
|
||||||
|
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package com.example.shawarma.data.dao
|
package com.example.shawarma.data.interfaces.dao
|
||||||
|
|
||||||
import androidx.room.Dao
|
import androidx.room.Dao
|
||||||
import androidx.room.Delete
|
import androidx.room.Delete
|
||||||
@ -12,16 +12,12 @@ import kotlinx.coroutines.flow.Flow
|
|||||||
interface UserDao {
|
interface UserDao {
|
||||||
@Insert
|
@Insert
|
||||||
suspend fun insert(user: UserModel)
|
suspend fun insert(user: UserModel)
|
||||||
|
|
||||||
@Update
|
@Update
|
||||||
suspend fun update(user: UserModel)
|
suspend fun update(user: UserModel)
|
||||||
|
|
||||||
@Delete
|
@Delete
|
||||||
suspend fun delete(user: UserModel)
|
suspend fun delete(user: UserModel)
|
||||||
|
|
||||||
@Query("select * from users order by user_login collate nocase asc")
|
@Query("select * from users order by user_login collate nocase asc")
|
||||||
fun getAll() : Flow<List<UserModel>>
|
fun getAll(): Flow<List<UserModel>>
|
||||||
|
|
||||||
@Query("select * from users where users.id = :id")
|
@Query("select * from users where users.id = :id")
|
||||||
fun getById(id: Int): UserModel
|
fun getById(id: Int): UserModel
|
||||||
}
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package com.example.shawarma.data.repos
|
||||||
|
|
||||||
|
import androidx.room.Dao
|
||||||
|
import androidx.room.Insert
|
||||||
|
import com.example.shawarma.data.interfaces.dao.OrderDao
|
||||||
|
import com.example.shawarma.data.interfaces.dao.OrderProductDao
|
||||||
|
import com.example.shawarma.data.models.OrderProductModel
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
class OrderProductRepository @Inject constructor(
|
||||||
|
private val orderProductDao: OrderProductDao
|
||||||
|
) {
|
||||||
|
suspend fun insert(order: OrderProductModel) {
|
||||||
|
return orderProductDao.insert(order)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
package com.example.shawarma.data.repos
|
||||||
|
|
||||||
|
import androidx.room.Dao
|
||||||
|
import androidx.room.Delete
|
||||||
|
import androidx.room.Insert
|
||||||
|
import androidx.room.Query
|
||||||
|
import androidx.room.Update
|
||||||
|
import com.example.shawarma.data.interfaces.dao.OrderDao
|
||||||
|
import com.example.shawarma.data.interfaces.dao.ProductDao
|
||||||
|
import com.example.shawarma.data.models.OrderModel
|
||||||
|
import com.example.shawarma.data.models.OrderWithProducts
|
||||||
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
class OrderRepository @Inject constructor(
|
||||||
|
private val orderDao: OrderDao
|
||||||
|
){
|
||||||
|
suspend fun insert(order: OrderModel) {
|
||||||
|
return orderDao.insert(order)
|
||||||
|
}
|
||||||
|
suspend fun update(order:OrderModel) {
|
||||||
|
return orderDao.update(order)
|
||||||
|
}
|
||||||
|
suspend fun delete(order: OrderModel) {
|
||||||
|
return orderDao.delete(order)
|
||||||
|
}
|
||||||
|
fun getAll(): Flow<List<OrderWithProducts>> {
|
||||||
|
return orderDao.getAll()
|
||||||
|
}
|
||||||
|
fun getById(id: Int): Flow<List<OrderWithProducts>> {
|
||||||
|
return orderDao.getById(id)
|
||||||
|
}
|
||||||
|
fun getByUserId(userId: Int): Flow<List<OrderWithProducts>> {
|
||||||
|
return orderDao.getByUserId(userId)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
package com.example.shawarma.data.repos
|
||||||
|
|
||||||
|
import androidx.room.Delete
|
||||||
|
import androidx.room.Insert
|
||||||
|
import androidx.room.Query
|
||||||
|
import androidx.room.Update
|
||||||
|
import com.example.shawarma.data.interfaces.dao.ProductDao
|
||||||
|
import com.example.shawarma.data.interfaces.dao.UserDao
|
||||||
|
import com.example.shawarma.data.models.ProductModel
|
||||||
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
class ProductRepository @Inject constructor(
|
||||||
|
private val productDao: ProductDao
|
||||||
|
) {
|
||||||
|
suspend fun insert(product: ProductModel) {
|
||||||
|
return productDao.insert(product)
|
||||||
|
}
|
||||||
|
suspend fun update(product: ProductModel) {
|
||||||
|
return productDao.update(product)
|
||||||
|
}
|
||||||
|
suspend fun delete(product: ProductModel) {
|
||||||
|
return productDao.delete(product)
|
||||||
|
}
|
||||||
|
fun getAll(): Flow<List<ProductModel>> {
|
||||||
|
return productDao.getAll()
|
||||||
|
}
|
||||||
|
fun getDiscounts(): Flow<List<ProductModel>> {
|
||||||
|
return productDao.getDiscounts()
|
||||||
|
}
|
||||||
|
fun getItems(): Flow<List<ProductModel>> {
|
||||||
|
return productDao.getItems()
|
||||||
|
}
|
||||||
|
fun getById(id: Int): Flow<ProductModel> {
|
||||||
|
return productDao.getById(id)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
package com.example.shawarma.data.repos
|
||||||
|
|
||||||
|
import androidx.room.Dao
|
||||||
|
import com.example.shawarma.data.interfaces.dao.UserDao
|
||||||
|
import com.example.shawarma.data.models.UserModel
|
||||||
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
class UserRepository @Inject constructor(
|
||||||
|
private val userDao: UserDao
|
||||||
|
) {
|
||||||
|
suspend fun insert(user: UserModel) {
|
||||||
|
return userDao.insert(user)
|
||||||
|
}
|
||||||
|
suspend fun update (user: UserModel) {
|
||||||
|
return userDao.update(user)
|
||||||
|
}
|
||||||
|
suspend fun delete (user: UserModel) {
|
||||||
|
return userDao.delete(user)
|
||||||
|
}
|
||||||
|
fun getAll(): Flow<List<UserModel>> {
|
||||||
|
return userDao.getAll()
|
||||||
|
}
|
||||||
|
fun getById(id: Int): UserModel {
|
||||||
|
return userDao.getById(id)
|
||||||
|
}
|
||||||
|
}
|
@ -7,6 +7,7 @@ buildscript {
|
|||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:4.0.0'
|
classpath 'com.android.tools.build:gradle:4.0.0'
|
||||||
|
classpath 'com.google.dagger:hilt-android-gradle-plugin:2.40.5'
|
||||||
}
|
}
|
||||||
}// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
}// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||||
plugins {
|
plugins {
|
||||||
|
Loading…
Reference in New Issue
Block a user