MainScreen을 MainView로 파일 및 함수 이름을 변경하였다.
MainViewModel 파일을 만들었다.
StockScreen의 파일 및 함수 이름을 StockView로 변경하였다.
원래 이 화면은 서버에서 값을 받아와, 보유 주식과 달러를 보여주는 역할을 하였다.
그러나 지금 서버를 사용할 수 없기 때문에 이 부분을 Room으로 대체하여 개발하려고 한다.
현재 데이터베이스는 UserData로만 구성되어있다.
보유 주식에 관한 정보들이 같이 들어가야 하기 때문에 다른 data class도 만들어서 정보를 저장할 수 있게 하였다.
[객체 간 관계 정의 - android 공식 문서]
https://developer.android.com/training/data-storage/room/relationships?hl=ko
StockData
@Entity
data class StockData (
@PrimaryKey val userId : Int,
@ColumnInfo(name = "stock_name") val stockName : String,
@ColumnInfo(name = "stock_quantity") val stockQuantity : String,
@ColumnInfo(name = "exchange") val exchange : String,
@ColumnInfo(name = "stock_price") val stockPrice : String,
@ColumnInfo(name = "stock_dividend") val stockDividend : String
)
DividendData
@Entity
data class DividendData (
@PrimaryKey val userId : Int,
@ColumnInfo("stock_name") val stockName : String,
@ColumnInfo("stock_dividend") val stockDividend : String,
@ColumnInfo("month") val month : String
)
AppDatabase 변경
@Database(entities = [UserData::class, StockData::class, DividendData::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
abstract fun stockDao() : StockDao
abstract fun dividendDao() : DividendDao
}
DatabaseModule 변경
@Module
@InstallIn(SingletonComponent::class)
class DatabaseModule {
@Provides
@Singleton
fun provideDatabase(
@ApplicationContext context: Context
)=
Room.databaseBuilder(
context,
AppDatabase::class.java,
context.getString(R.string.app_name)
).build()
@Provides
@Singleton
fun provideUserDAO(database: AppDatabase) : UserDao = database.userDao()
@Provides
@Singleton
fun provideStockDAO(database: AppDatabase) : StockDao = database.stockDao()
@Provides
@Singleton
fun provideDividendDAO(database: AppDatabase) : DividendDao = database.dividendDao()
}