From 9f5f806786c9254eabbff38d08f62450eb51367a Mon Sep 17 00:00:00 2001 From: Nacho Date: Sun, 1 Jun 2025 18:51:30 +0200 Subject: [PATCH] Added basic stuff for compatibility with VB --- .../nacabaro/vbhelper/daos/CharacterDao.kt | 10 ++++++++ .../vbhelper/daos/UserCharacterDao.kt | 1 + .../domain/device_data/SpecialMissions.kt | 10 +++++++- .../domain/device_data/VitalsHistory.kt | 22 ++++++++++++++++ .../scanScreen/converters/FromNfcConverter.kt | 25 +++++++++++++++++++ 5 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/github/nacabaro/vbhelper/domain/device_data/VitalsHistory.kt diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/daos/CharacterDao.kt b/app/src/main/java/com/github/nacabaro/vbhelper/daos/CharacterDao.kt index 2d9fdfb..097f37a 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/daos/CharacterDao.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/daos/CharacterDao.kt @@ -42,4 +42,14 @@ interface CharacterDao { :transformationDate) """) fun insertTransformation(monId: Long, stage: Int, dimId: Long, transformationDate: Long) + + @Query(""" + INSERT INTO VitalsHistory(characterId, date, vitalPoints) + VALUES + (:characterId, + (:date), + :vitalPoints) + """) + fun insertVitals(characterId: Long, date: Long, vitalPoints: Int) + } \ No newline at end of file diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/daos/UserCharacterDao.kt b/app/src/main/java/com/github/nacabaro/vbhelper/daos/UserCharacterDao.kt index 4b95d2a..8fbe7a3 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/daos/UserCharacterDao.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/daos/UserCharacterDao.kt @@ -10,6 +10,7 @@ import com.github.nacabaro.vbhelper.domain.device_data.BECharacterData import com.github.nacabaro.vbhelper.domain.device_data.SpecialMissions import com.github.nacabaro.vbhelper.domain.device_data.TransformationHistory import com.github.nacabaro.vbhelper.domain.device_data.VBCharacterData +import com.github.nacabaro.vbhelper.domain.device_data.VitalsHistory import com.github.nacabaro.vbhelper.dtos.CharacterDtos @Dao diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/domain/device_data/SpecialMissions.kt b/app/src/main/java/com/github/nacabaro/vbhelper/domain/device_data/SpecialMissions.kt index 37f5664..13b092d 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/domain/device_data/SpecialMissions.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/domain/device_data/SpecialMissions.kt @@ -1,11 +1,19 @@ package com.github.nacabaro.vbhelper.domain.device_data import androidx.room.Entity +import androidx.room.ForeignKey import androidx.room.PrimaryKey import com.github.cfogrady.vbnfc.vb.SpecialMission @Entity( - + foreignKeys = [ + ForeignKey( + entity = UserCharacter::class, + parentColumns = ["id"], + childColumns = ["characterId"], + onDelete = ForeignKey.CASCADE + ) + ] ) data class SpecialMissions ( @PrimaryKey(autoGenerate = true) var id: Long = 0, diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/domain/device_data/VitalsHistory.kt b/app/src/main/java/com/github/nacabaro/vbhelper/domain/device_data/VitalsHistory.kt new file mode 100644 index 0000000..e59cf52 --- /dev/null +++ b/app/src/main/java/com/github/nacabaro/vbhelper/domain/device_data/VitalsHistory.kt @@ -0,0 +1,22 @@ +package com.github.nacabaro.vbhelper.domain.device_data + +import androidx.room.Entity +import androidx.room.ForeignKey +import androidx.room.PrimaryKey + +@Entity( + foreignKeys = [ + ForeignKey( + entity = UserCharacter::class, + parentColumns = ["characterId"], + childColumns = ["id"], + onDelete = ForeignKey.CASCADE + ) + ] +) +data class VitalsHistory ( + @PrimaryKey(autoGenerate = true) val id: Long = 0, + val characterId: Long, + val date: Long, + val vitalPoints: Int +) \ No newline at end of file diff --git a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/converters/FromNfcConverter.kt b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/converters/FromNfcConverter.kt index 08fb68d..ba85216 100644 --- a/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/converters/FromNfcConverter.kt +++ b/app/src/main/java/com/github/nacabaro/vbhelper/screens/scanScreen/converters/FromNfcConverter.kt @@ -10,6 +10,7 @@ import com.github.nacabaro.vbhelper.domain.device_data.BECharacterData import com.github.nacabaro.vbhelper.domain.device_data.SpecialMissions import com.github.nacabaro.vbhelper.domain.device_data.UserCharacter import com.github.nacabaro.vbhelper.domain.device_data.VBCharacterData +import com.github.nacabaro.vbhelper.domain.device_data.VitalsHistory import com.github.nacabaro.vbhelper.utils.DeviceType import java.util.GregorianCalendar @@ -112,6 +113,9 @@ class FromNfcConverter ( ) } + val vitalsHistory = nfcCharacter.vitalHistory + + database .userCharacterDao() .insertVBCharacterData(extraCharacterData) @@ -153,6 +157,27 @@ class FromNfcConverter ( .insertBECharacterData(extraCharacterData) } + private fun addVitalsHistoryToDatabase(characterId: Long, nfcCharacter: NfcCharacter) { + val vitalsHistoryWatch = nfcCharacter.vitalHistory + vitalsHistoryWatch.map { item -> + val date = GregorianCalendar( + item.year.toInt(), + item.month.toInt(), + item.day.toInt() + ) + .time + .time + + database + .characterDao() + .insertVitals( + characterId, + date, + item.vitalsGained.toInt() + ) + } + } + private fun addTransformationHistoryToDatabase(characterId: Long, nfcCharacter: NfcCharacter, dimData: Card) { val transformationHistoryWatch = nfcCharacter.transformationHistory transformationHistoryWatch.map { item ->