Reputation: 5160
I migrate my database from DBFlow to Room finally.
However, some queries I made for my old database don't really match what I know about Room. So in my Entity I have / had these calls:
"CREATE INDEX IF NOT EXISTS `idDeletedStartEndLocalIndex` ON `QUANTITY`(START_LOCAL, END_LOCAL DESC)"
I implemented that in Room as
Index("START_LOCAL", "END_LOCAL")
but how can I add the Descending at the index? Should I just write "END_LOCAL DESC"? Would that work as expected?
Same for this one
"CREATE UNIQUE INDEX IF NOT EXISTS `serverQtyId` ON QUANTITY(SERVER_QUANTITY_ID) WHERE SERVER_QUANTITY_ID > 0"
How can I add the WHERE SERVER_QUANTITY_ID > 0 clause to the Index annotation of room? Is that even possible?
Upvotes: 0
Views: 1212
Reputation: 5160
Okay, looks like there are not many ways around this. So I did the queries manually.
For those who have the same problem, my code looks like this:
runBlocking(Dispatchers.IO){
with (getInstance().openHelper.writableDatabase) {
execSQL("CREATE INDEX IF NOT EXISTS `someIndexName` ON `QUANTITY`(...)")
...
}
}
So what I do is basically get the Database Instance and their openHelper. From there you can get the writable Database. It then supports executing SQL queries directly.
All this is run in the IO coroutine scope but that's just for convenience.
Upvotes: 1