[AYUDA] Query en Supabase. columna .gt otra columna

RA_MeSiAs

Buenas,

estoy intentando hacer una query que es en principio sencilla, pero no consigo dar con la respuesta, os comento:

Tengo una tabla llamemos "users" con varias columnas, entre ellas last_join y last_leave, de modo que si last_join es superior a last_leave significa que el usuario se encuentra online. Ambos campos son timestampz.

Ej/


Mi función es la siguiente:

export async function getUsersOnline() {
  const { data, error } = await supabase
    .from('users')
    .select('*', { count: 'exact' })
    .gt('last_join', 'last_leave')

  if (error) {
    console.log(error)
  }else{
    return data
  }

El error en consola es:

Se os ocurre una solución?

0buS

Tiene pinta a que el segundo dato de la columna last_leave le falta un cero al final. Puede ser eso?

"syntax for timestamp" entiendo que se refiere al formato de la fecha.

r2d2rigo

De lo poquisimo que encuentro sobre este coso, parece ser que el segundo parametro de gt solo acepta valores escalares. Tremenda basura.

pantocreitor

Viendo el por culo que da el gt() haz la comparación a manubrio. Si no me equivoco deberías poder comparar ">"

const online = last_join > last_leave
1 respuesta
RA_MeSiAs

#4 Por lo que veo, las query están limitadas a un maximo de 1000 registros, y tendría que sacar decenas de miles para sacar user + last_join + last_leave y parsearlos en js para finalmente tener el dato que quiero... aparte de ineficiente, imposible tal vez (o tal vez no y haya alguna forma de que me saque las queries paginadas, pero como lo veo ineficiente ni he mirado).

Es que es un simple select count, no entiendo porque se está complicando tanto...

1 respuesta
pantocreitor

#5 normalmente estos frameworks suelen dar la posibilidad de sacar una arrow function para hacer operaciones tú y al final es lo mismo que si le metes el gt() salvo que con tu lógica, la eficiencia sería la misma.

Te lo digo igual que te digo que no he tocado supabase y no sé si tendrá esa posibilidad.

Igual en vez de hacer un await puedes usar Observables que suelen ser bastante polivalentes para estas cosas.

1

Usuarios habituales

  • pantocreitor
  • RA_MeSiAs
  • r2d2rigo
  • 0buS