fix auction position query

This commit is contained in:
keyan 2022-10-05 13:55:30 -05:00
parent 73033dc015
commit aed7e0f667
1 changed files with 25 additions and 18 deletions

View File

@ -553,30 +553,37 @@ export default {
} }
}, },
auctionPosition: async (parent, { id, sub, bid }, { models, me }) => { auctionPosition: async (parent, { id, sub, bid }, { models, me }) => {
// count items that have a bid gte to the current bid or const createdAt = id ? (await getItem(parent, { id }, { models, me })).createdAt : new Date()
// gte current bid and older let where
const where = { if (bid > 0) {
where: { // if there's a bid
subName: sub, // it's ACTIVE and has a larger bid than ours, or has an equal bid and is older
status: { not: 'STOPPED' } // count items: (bid > ours.bid OR (bid = ours.bid AND create_at < ours.created_at)) AND status = 'ACTIVE'
where = {
status: 'ACTIVE',
OR: [
{ maxBid: { gt: bid } },
{ maxBid: bid, createdAt: { lt: createdAt } }
]
}
} else {
// else
// it's an active with a bid gt ours, or its newer than ours and not STOPPED
// count items: ((bid > ours.bid AND status = 'ACTIVE') OR (created_at > ours.created_at AND status <> 'STOPPED'))
where = {
OR: [
{ maxBid: { gt: 0 }, status: 'ACTIVE' },
{ createdAt: { gt: createdAt }, status: { not: 'STOPPED' } }
]
} }
} }
if (bid > 0) { where.subName = sub
where.where.maxBid = { gte: bid }
} else {
const createdAt = id ? (await getItem(parent, { id }, { models, me })).createdAt : new Date()
where.where.OR = [
{ maxBid: { gt: 0 } },
{ createdAt: { gt: createdAt } }
]
}
if (id) { if (id) {
where.where.id = { not: Number(id) } where.id = { not: Number(id) }
} }
return await models.item.count(where) + 1 return await models.item.count({ where }) + 1
} }
}, },