diff --git a/android_app/app/schemas/com.health.openscale.core.database.AppDatabase/3.json b/android_app/app/schemas/com.health.openscale.core.database.AppDatabase/3.json index 603b6aa7..13e237fe 100644 --- a/android_app/app/schemas/com.health.openscale.core.database.AppDatabase/3.json +++ b/android_app/app/schemas/com.health.openscale.core.database.AppDatabase/3.json @@ -2,7 +2,7 @@ "formatVersion": 1, "database": { "version": 3, - "identityHash": "83d2f44ffc34383c4f1103f001329440", + "identityHash": "2c2512af7063099727b54e5560c277e3", "entities": [ { "tableName": "scaleMeasurements", @@ -168,7 +168,7 @@ }, { "tableName": "scaleUsers", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `username` TEXT, `birthday` INTEGER, `bodyHeight` INTEGER NOT NULL, `scaleUnit` INTEGER NOT NULL, `gender` INTEGER NOT NULL, `initialWeight` REAL NOT NULL, `goalWeight` REAL NOT NULL, `goalDate` INTEGER)", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `username` TEXT, `birthday` INTEGER, `bodyHeight` INTEGER NOT NULL, `scaleUnit` INTEGER NOT NULL, `gender` INTEGER NOT NULL, `initialWeight` REAL NOT NULL, `goalWeight` REAL NOT NULL, `goalDate` INTEGER, `heightUnit` INTEGER NOT NULL, `activityLevel` INTEGER NOT NULL)", "fields": [ { "fieldPath": "id", @@ -223,6 +223,18 @@ "columnName": "goalDate", "affinity": "INTEGER", "notNull": false + }, + { + "fieldPath": "heightUnit", + "columnName": "heightUnit", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "activityLevel", + "columnName": "activityLevel", + "affinity": "INTEGER", + "notNull": true } ], "primaryKey": { @@ -237,7 +249,7 @@ ], "setupQueries": [ "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", - "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, \"83d2f44ffc34383c4f1103f001329440\")" + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, \"2c2512af7063099727b54e5560c277e3\")" ] } } \ No newline at end of file diff --git a/android_app/app/src/androidTest/java/com/health/openscale/DatabaseMigrationTest.java b/android_app/app/src/androidTest/java/com/health/openscale/DatabaseMigrationTest.java index 63cfc655..4241116a 100644 --- a/android_app/app/src/androidTest/java/com/health/openscale/DatabaseMigrationTest.java +++ b/android_app/app/src/androidTest/java/com/health/openscale/DatabaseMigrationTest.java @@ -146,6 +146,9 @@ public class DatabaseMigrationTest { // MigrationTestHelper automatically verifies the schema changes. + assertEquals(3, db.query("SELECT * FROM scaleUsers WHERE heightUnit = 0").getCount()); + assertEquals(3, db.query("SELECT * FROM scaleUsers WHERE activityLevel = 0").getCount()); + Cursor cursor = db.query("SELECT * FROM scaleMeasurements ORDER BY id, userId"); assertEquals(2 * 2, cursor.getCount()); diff --git a/android_app/app/src/main/java/com/health/openscale/core/database/AppDatabase.java b/android_app/app/src/main/java/com/health/openscale/core/database/AppDatabase.java index 873feb4a..127f755b 100644 --- a/android_app/app/src/main/java/com/health/openscale/core/database/AppDatabase.java +++ b/android_app/app/src/main/java/com/health/openscale/core/database/AppDatabase.java @@ -78,6 +78,10 @@ public abstract class AppDatabase extends RoomDatabase { public void migrate(SupportSQLiteDatabase database) { database.beginTransaction(); try { + // Add new columns to scaleUsers + database.execSQL("ALTER TABLE scaleUsers ADD COLUMN heightUnit INTEGER NOT NULL DEFAULT 0"); + database.execSQL("ALTER TABLE scaleUsers ADD COLUMN activityLevel INTEGER NOT NULL DEFAULT 0"); + // Drop old index database.execSQL("DROP INDEX index_scaleMeasurements_userId_datetime"); diff --git a/android_app/app/src/main/java/com/health/openscale/core/datatypes/ScaleUser.java b/android_app/app/src/main/java/com/health/openscale/core/datatypes/ScaleUser.java index 088c5c51..1dd6925b 100644 --- a/android_app/app/src/main/java/com/health/openscale/core/datatypes/ScaleUser.java +++ b/android_app/app/src/main/java/com/health/openscale/core/datatypes/ScaleUser.java @@ -50,6 +50,10 @@ public class ScaleUser { private float goalWeight; @ColumnInfo(name = "goalDate") private Date goalDate; + @ColumnInfo(name = "heightUnit") + private int heightUnit; + @ColumnInfo(name = "activityLevel") + private int activityLevel; public ScaleUser() { userName = ""; @@ -60,6 +64,8 @@ public class ScaleUser { initialWeight = -1; goalWeight = -1; goalDate = new Date(); + heightUnit = 0; + activityLevel = 0; } public int getId() { @@ -158,6 +164,22 @@ public class ScaleUser { return Converters.fromKilogram(initialWeight, scaleUnit); } + public void setHeightUnit(int unit) { + heightUnit = unit; + } + + public int getHeightUnit() { + return heightUnit; + } + + public void setActivityLevel(int level) { + activityLevel = level; + } + + public int getActivityLevel() { + return activityLevel; + } + public static String getPreferenceKey(int userId, String key) { return String.format("user.%d.%s", userId, key); }