TanStackT
TanStack3mo ago
13 replies
wispy-olive

SubQuery doesn't seem to work

The locksAgg query returns results results on it's own, but when added as a subquery, I get zero results. Am I doing something wrong with how I am using subqueries?

  const votes = useLiveQuery((q) => {
    const locksAgg = q
      .from({ lock: c.locksCollection })
      .join({ vote: c.votesCollection }, ({ lock, vote }) =>
        eq(lock._id, vote.lockId),
      )
      .join({ org: c.orgsCollection }, ({ lock, org }) =>
        eq(lock?.orgId, org._id),
      )
      .where(({ vote }) => eq(vote?.epochNumber, EPOCH_NUMBER))
      .groupBy(({ lock, org }) => [lock._id, lock.name, org?.color])
      .select(({ lock, vote, org }) => ({
        _id: lock._id,
        totalPercent: sum(vote?.percent),
        lockName: lock?.name,
        lockColor: org?.color,
      }))

    return q
      .from({ vote: c.votesCollection })
      .join({ lock: locksAgg }, ({ vote, lock }) => eq(vote.lockId, lock._id))
      .where(({ vote }) =>
        and(
          eq(vote.poolAddress, poolAddress),
          eq(vote.epochNumber, EPOCH_NUMBER),
        ),
      )
      .orderBy(({ vote }) => vote._creationTime, 'asc')
      .select(({ vote, lock }) => ({
        ...vote,
        totalVotes: 0,
        status: 'planning',
        lockName: lock?.lockName,
        lockColor: lock?.lockColor,
        overallPercent: lock?.totalPercent,
      }))
  })
Was this page helpful?