0

I want to achieve unique audio_id for the id.

Here is my entity class

data class Members(
    @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "id") val id: Int?,
    var title: String,
    var artist: String,
    var album: String,
    @ColumnInfo(name = "audio_id") val audioId: Int,
    val albumId: String
)

Tried this

@Entity(tableName = "playlist_members", indices = [Index(value = ["id","audio_id"], unique = true)])

not working :)

KamDroid
  • 102
  • 4
  • 7

1 Answers1

0

I've made a test example. So all work.

My entity

@Entity(tableName = "cards", indices = [Index(value = ["data"], unique = true)])
data class CardEntity(
   @PrimaryKey(autoGenerate = true)
   val id: Int = 0,
   val data: String
)

My test

@Test
fun testRun() = runBlocking {
    db.cardDAO().insert(CardEntity(data = "1"))
    var exception = false
    try {
        db.cardDAO().insert(CardEntity(data = "1"))
    } catch (e: SQLiteConstraintException) {
        exception=true
    }
    db.cardDAO().insert(CardEntity(data = "2"))
    Assert.assertTrue(exception)
    Assert.assertEquals(db.cardDAO().getAll().first().size, 2 )
}

But you want to get unique audio_id for the id. Perhaps it the same like.

data class Members(
   @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "audio_id") val audioId = 0,
   var title: String,
   var artist: String,
   var album: String,
   val albumId: String
)
Andrei Naumets
  • 171
  • 1
  • 8