Insertar datos reales y consultar la API en Supabase

Resumen

Insertar datos en una tabla de Supabase activa de inmediato las APIs REST y GraphQL del proyecto, lo que te permite consultar la información desde cualquier front sin escribir backend. Aquí verás cómo cargar registros desde la interfaz, desde el editor SQL y cómo consumirlos con filtros reales.

¿Cómo insertar un registro manualmente desde la UI de Supabase?

Dentro del Table Editor abres la tabla post_new y usas el botón verde de Insert row. El campo id se genera automáticamente, igual que created_at y updated_at, que se setean con la fecha y hora exactas del momento en que guardas.

Para este primer post de SuplatziGram llenas solo lo necesario: un user_id, una image_url tipo placeholder, un caption que diga "Primer post de SuplatziGram" y un valor en likes. El default de likes es cero, así que puedes dejarlo o forzarlo en uno. Le das guardar y listo, ya tienes contenido real en tu base de datos.

¿Qué campos genera Supabase automáticamente al insertar una fila? El id (clave primaria), el created_at y el updated_at. Los tres se completan solos con la fecha y hora del servidor, así que no los incluyes en tus sentencias SQL.

¿Cómo insertar varios posts desde el editor SQL?

Cuando necesitas cargar varios registros a la vez, el SQL Editor es mucho más rápido que la UI. Escribes un INSERT INTO post_new listando solo las columnas que vas a llenar: user_id, image_url, caption y likes.

En el ejemplo se insertan 30 posts del mismo usuario, cada uno con su imagen, su texto y un número distinto de likes. Al ejecutar la sentencia, Supabase confirma el éxito y al refrescar la tabla aparecen 31 registros: los 30 nuevos más el que habías creado manualmente.

Un detalle importante: el campo caption acepta emojis sin problema, lo que es clave para que se rendericen correctamente en la interfaz cuando consumas los datos. Esa variedad en los likes también te servirá para probar filtros reales contra la API.

¿Por qué no se incluyen todas las columnas en el INSERT?

Porque las columnas con valores por defecto, como id, created_at, updated_at y el propio likes (default 0), las completa Supabase. Solo declaras las que necesitas controlar manualmente, lo que mantiene la sentencia limpia y evita errores.

¿Cómo consultar los datos desde la API REST de Supabase?

En el apartado API Docs del proyecto encuentras documentación generada automáticamente para cada tabla y view. Ahí están las dos tablas creadas, con ejemplos en JavaScript y en Bash, además de la lista de filtros disponibles.

Los filtros que ofrece la API REST de Supabase incluyen:

  • Igual a un valor.
  • Mayor que (gt) y menor que (lt).
  • Mayor o igual (gte) y menor o igual (lte).
  • Búsquedas case sensitive.
  • Comparación contra un array o distinto de (neq).

Para probar la API se usa un cliente HTTP como HTTPie. Si consultas la tabla post original, que quedó vacía, recibes un array sin elementos: la API sigue funcional, simplemente no hay recursos. Al apuntar a post_new con un select=*, la respuesta trae los 31 registros completos con todos sus campos.

¿Cómo filtrar posts por número de likes en la API de Supabase? Agregas el parámetro likes=gt.25 a la URL para traer solo los posts con más de 25 likes. Cambias el número y el operador (gt, lt, gte, lte) según lo que necesites.

¿Qué resultados devuelven los filtros por likes?

Al filtrar likes=gt.5 aparecen muchos registros. Si subes el umbral a gt.25, quedan nueve posts. Con gt.30 la lista se reduce a solo cinco posts. Esa misma lógica la puedes aplicar a cualquier columna de la tabla, combinando filtros para afinar las consultas.

Lo potente del flujo es que nunca escribiste una línea de backend. Solo interactuaste con la interfaz y con algunas sentencias SQL, y ya tienes una API completamente funcional que recibe filtros, devuelve datos en JSON y se puede consumir desde cualquier cliente usando la URL y la clave pública del proyecto.

Conceptos y datos clave de esta clase

Algunos términos y números que conviene tener claros para seguir avanzando con SuplatziGram:

  • Tabla post_new: la nueva tabla creada en la clase anterior, donde se almacenan los posts reales del proyecto [01:00].
  • API REST y GraphQL automáticas: Supabase genera ambas en cuanto existen datos en la tabla, sin configuración adicional [00:10].
  • Campos autogenerados: id, created_at y updated_at se llenan solos con la fecha y hora exactas del servidor [02:00].
  • INSERT INTO con columnas selectivas: solo declaras user_id, image_url, caption y likes en la sentencia SQL [03:20].
  • 31 registros totales tras insertar 30 desde SQL más 1 manual [04:00].
  • Soporte de emojis en el campo caption para renderizado correcto en la interfaz [04:20].
  • Operadores de filtro: gt, lt, gte, lte, eq, neq y comparación con arrays [05:30].
  • HTTPie como cliente HTTP recomendado para probar endpoints [06:00].
  • Resultados de filtros: gt.25 devuelve nueve posts, gt.30 devuelve cinco [07:00].

¿Qué filtros vas a probar primero en tu propia tabla? Cuéntame en los comentarios cómo te fue cargando tus datos y consultando la API.