diff --git a/compose/app/src/main/java/ru/ulstu/is/pmu/student/model/User.kt b/compose/app/src/main/java/ru/ulstu/is/pmu/student/model/User.kt new file mode 100644 index 0000000..62ecbca --- /dev/null +++ b/compose/app/src/main/java/ru/ulstu/is/pmu/student/model/User.kt @@ -0,0 +1,40 @@ +package ru.ulstu.`is`.pmu.student.model + +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.Ignore +import androidx.room.PrimaryKey + +@Entity +data class User ( + @PrimaryKey(autoGenerate = true) + val uid: Long?, + @ColumnInfo(name = "nickname") + val nickname: String, + @ColumnInfo(name = "email") + val email: String, + @ColumnInfo(name = "password") + val password: String, + @ColumnInfo(name = "balance") + val balance: Int +){ + @Ignore + constructor( + nickname: String, + email: String, + password: String, + balance: Int + ) : this(null, nickname, email, password, balance) + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as Tank + if (uid != other.uid) return false + return true + } + + override fun hashCode(): Int { + return (uid ?: -1) as Int + } +} \ No newline at end of file diff --git a/compose/app/src/main/java/ru/ulstu/is/pmu/student/model/UserTankCrossRef.kt b/compose/app/src/main/java/ru/ulstu/is/pmu/student/model/UserTankCrossRef.kt new file mode 100644 index 0000000..a81f86a --- /dev/null +++ b/compose/app/src/main/java/ru/ulstu/is/pmu/student/model/UserTankCrossRef.kt @@ -0,0 +1,10 @@ +package ru.ulstu.`is`.pmu.student.model + +import androidx.room.Entity + +//many to many for user and tank +@Entity(primaryKeys = ["userId", "tankId"]) +data class UserTankCrossRef( + val userId: Long, + val tankId: Long +) diff --git a/compose/app/src/main/java/ru/ulstu/is/pmu/student/model/UserWithTanks.kt b/compose/app/src/main/java/ru/ulstu/is/pmu/student/model/UserWithTanks.kt new file mode 100644 index 0000000..a496bd3 --- /dev/null +++ b/compose/app/src/main/java/ru/ulstu/is/pmu/student/model/UserWithTanks.kt @@ -0,0 +1,16 @@ +package ru.ulstu.`is`.pmu.student.model + +import androidx.room.Embedded +import androidx.room.Junction +import androidx.room.Relation + +//для работы many to many для получения списка танков для пользователя +data class UserWithTanks( + @Embedded val user: User, + @Relation( + parentColumn = "userId", + entityColumn = "tankId", + associateBy = Junction(UserTankCrossRef::class) + ) + val tanks: List +)