I am trying to optimise the following scans
into a single scan
(or query
). The only way I see is to use to use a OR
comparator using DynamoDB. I am using dynogels
(fork of vogels
) in my application but sadly I am not aware of any OR
query functionality in there.
let arrivals = yield Reservation.scan()
.where('room').equals(room)
.where('arrival').between(from, to)
.execAsync().then((reply) => reply.Items.map((item) => item.get()));
let departures = yield Reservation.scan()
.where('room').equals(room)
.where('departure').between(from, to)
.execAsync().then((reply) => reply.Items.map((item) => item.get()));
let combined = arrivals.concat(departures);
return Promise.resolve(combined);
Proposed optimisation:
return Reservation.scan()
.where('room').equals(room)
.where('arrival').between(from, to)
.or.where('departure').between(from, to)
.execAsync().then((reply) => reply.Items.map((item) => item.get()));
The scans get me the reservations that end (departure
) or start (arrival
) (or both) in a specified date range (from
, to
).
via btype
No comments:
Post a Comment