Feed
Endpoints para ver el feed social y contenido de tendencias.
Modelos de Datos
Section titled “Modelos de Datos”El feed social utiliza los modelos Post, Like, Comment y Follow del schema social. Consulta la documentación de Posts y Seguimientos para ver los modelos completos.
Endpoints
Section titled “Endpoints”Obtener Feed del Usuario
Section titled “Obtener Feed del Usuario”Obtener el feed personalizado para el usuario.
- URL:
/api/v1/social/feed - Método:
GET - Autenticación Requerida: Sí
Descripción Interna
Section titled “Descripción Interna”Este endpoint obtiene el feed personalizado:
- Obtiene usuarios seguidos por el usuario autenticado
- Si includeOwn es true: Añade su propio userProfileId a la lista
- Busca posts donde:
- userProfileId está en la lista de seguidos
- isPublic es true
- Ordena por createdAt descendente
- Aplica paginación
Parámetros de Consulta de Solicitud
Section titled “Parámetros de Consulta de Solicitud”includeOwn: Incluir posts propios del usuario (por defecto: true)page: Número de páginalimit: Resultados por página
Respuesta
Section titled “Respuesta”{ "data": [ { "id": "...", "title": "Morning workout", "content": "Great session today!", "imageUrl": "https://...", "createdAt": "2023-10-27T10:00:00Z", "userProfile": { "id": "...", "name": "John Doe", "avatar_url": "https://..." }, "_count": { "likes": 12, "comments": 5 } } ], "pagination": { "page": 1, "limit": 10, "total": 50, "totalPages": 5 }}Ejemplo de Cliente Hono
Section titled “Ejemplo de Cliente Hono”import { hcWithType } from '@vitality-gym/api/client'
const client = hcWithType('http://localhost:3000')
const res = await client.api.v1.social.feed.$get({ query: {}})Obtener Posts de Tendencia
Section titled “Obtener Posts de Tendencia”Obtener posts populares de los últimos 7 días.
- URL:
/api/v1/social/trending - Método:
GET - Autenticación Requerida: Sí
Descripción Interna
Section titled “Descripción Interna”Este endpoint obtiene posts populares:
-
Calcula fecha: 7 días atrás
-
Busca posts donde:
- isPublic es true
- createdAt >= 7 días atrás
-
Ordena por:
- Primero: Número de likes (descendente)
- Segundo: createdAt (descendente)
-
Limita resultados según parámetro (default: 10)
Parámetros de Consulta de Solicitud
Section titled “Parámetros de Consulta de Solicitud”limit: Número de posts a retornar (por defecto: 10)
Respuesta
Section titled “Respuesta”{ "data": [ { "id": "...", "title": "Achieved my goal!", "content": "Finally hit my target weight!", "imageUrl": "https://...", "createdAt": "2023-10-25T10:00:00Z", "userProfile": { "id": "...", "name": "Jane Doe" }, "_count": { "likes": 150, "comments": 45 } } ]}Ejemplo de Cliente Hono
Section titled “Ejemplo de Cliente Hono”import { hcWithType } from '@vitality-gym/api/client'
const client = hcWithType('http://localhost:3000')
const res = await client.api.v1.social.trending.$get({ query: { limit: '10' }})Obtener Posts para Descubrir
Section titled “Obtener Posts para Descubrir”Obtener posts de usuarios que no sigues.
- URL:
/api/v1/social/discover - Método:
GET - Autenticación Requerida: Sí
Descripción Interna
Section titled “Descripción Interna”Este endpoint obtiene posts para descubrir nuevos usuarios:
- Obtiene usuarios seguidos por el usuario autenticado
- Busca posts donde:
- userProfileId NO está en la lista de seguidos
- userProfileId NO es el usuario actual
- isPublic es true
- Ordena por popularidad (likes) y fecha
- Aplica paginación
Parámetros de Consulta de Solicitud
Section titled “Parámetros de Consulta de Solicitud”page: Número de páginalimit: Resultados por página