Kangho_Story

[안드로이드 코틀린 Kotlin] 파이어베이스 파이어스토어에 저장하기 위한 객체 생성하기 본문

Android

[안드로이드 코틀린 Kotlin] 파이어베이스 파이어스토어에 저장하기 위한 객체 생성하기

캉호 2024. 5. 2. 23:30
728x90
반응형

코틀린으로 파이어베이스에 데이터를 넣고 빼는 작업을 수월하게 하기 위해서 객체를 생성하려고 한다.

파이어베이스 파이어스토어 DB 구조

내가 생성한 DB 구조의 틀은 이러하다. 한눈에 보기에도 꽤나 복잡한 형식임을 알 수 있다.

 

우선 유저에는 UID, address, firstLogin, name, crop, inventory, chat 등의 필드가 존재한다.

UID나 firstLogin 처럼 단순한 String 또는 Boolean이면

var UID : String?
var firstLogin : Boolean = false

이런 식으로 바로 정의가 가능하다.

 

하지만 inventory나 crop 같은 복잡한 형식도 존재한다.

inventory는 size2의 배열이다. 각 배열에는 key가 String이고 velue가 Int인 HashMap이 여러 개 들어있다.

이를 변수로 만들면

var inventory : Array<HashMap<String, Int>> = arrayOf(hashMapOf())

이렇게 된다.

crop은 inventory와 유사하지만 다르다.

crop은 사이즈가 정해지지 않은 배열 내부에 HashMap이 존재하는데 이 HashMap의 Key는 String이고 Value는 Double타입의 배열이다. 이러한 구조는 꽤나 복잡하기 때문에 Crop이라는 객체를 추가적으로 생성해서 Crop 타입의 Array를 정의하는 식으로 구현했다.

var crop : Array<Crop>

 

Crop.kt

data class Crop(
     var crop : HashMap<String, Array<Double>> =
        hashMapOf(Pair("darkness", arrayOf<Double>()),
            Pair("humidity", arrayOf<Double>()),
            Pair("moisture", arrayOf<Double>()),
            Pair("temperature", arrayOf<Double>()))
)

 

User.kt

data class User(
    var UID : String?,
    var address : String? ,
    var firstLogin : Boolean = false,
    var name : String?,
    var sector : String?,
    var crop : Array<Crop>,
    var inventory : Array<HashMap<String, Int>> = arrayOf(hashMapOf()),
    var chat : Array<String>
)

 

끝!

728x90
반응형
Comments