maskarade / Android-Orma

An ORM for Android with type-safety and painless smart migrations
Other
443 stars 49 forks source link

Support for UNION #422

Open jozn opened 7 years ago

jozn commented 7 years ago

Hi do you plan for adding UNION keyboard support with api like this:

db.selectFromRoom().roomKeyIn(list).union()
.createdTimeLt(123).union()
....
.toList()

Thanks

gfx commented 7 years ago

Sounds great.

BTW what you expect the result type and value for UNION? Do you have an example models?

jozn commented 7 years ago

I in general asked for this, one reason that this is beneficial is that we can not combine AND and OR clauses together when we need to run a reletivey complex query example :

table chatRoom {
roomKey string
updatedTime int
isPined bool
archived bool
}

select * from chatroom where isPined = 1
union
select * from chatroom where archived = 0 AND updatedTime > 123
union
order by updatedTime desc

this is just an sample to illustrate my point for combing multiple where clause with diffrent OR and AND.

we can have this direct query in sqlite, but with orma we can not do this: select * from chatroom where isPined = 1 OR ( archived = 0 AND updatedTime > 123 ) order by updatedTime desc the current api that allows just one ORs or ANDs is clean and i like it, but adding union support makes instead of running multiple query to database and then in java combine the result, we will just run one query.

RooyeKhat commented 7 years ago

@jozn

You can use rawQuery , see https://github.com/gfx/Android-Orma#raw-queries