Volver a la wiki

Endpoint GET /api/tasks/comments — Listado transversal de comentarios

Descripción

Cloudflare Pages Function que expone el endpoint GET /api/tasks/comments. Devuelve un listado paginado de todos los comentarios de todas las tareas del workspace, con soporte de filtros combinables. Introducido en PR#57 (s77) para alimentar la vista “Gestor transversal de comentarios” en /tasks?view=comments.

Ruta y método

GET /api/tasks/comments

Implementado en functions/api/tasks/comments.ts como onRequestGet: PagesFunction<Env>.

Filtros soportados (query params — todos opcionales)

ParámetroTipoDescripción
authorstringFiltra por autor exacto (Edu, Dani, Txell).
target_userstringMatch en target_user_ids (JSON array). Usa LIKE "%"<name>"%" para evitar falsos positivos.
task_idintFiltra por tarea exacta.
task_titlestringLIKE %…% en el título de la tarea relacionada.
qstringLIKE %…% en el body del comentario.
start_dateYYYY-MM-DDRango desde (inclusive).
end_dateYYYY-MM-DDRango hasta (incluye todo el día con `<= ’…’
limitintPaginación, default 50, máx 200.
offsetintOffset, default 0.

Respuesta

{
  "results": [
    {
      "id": 42,
      "task_id": 7,
      "author": "Edu",
      "body": "...",
      "target_user_ids": "[\"Dani\"]",
      "created_at": "2026-05-19 10:23:00",
      "task_title": "Revisar factura",
      "task_status": "in_progress",
      "task_assignee": "Dani"
    }
  ],
  "total": 127
}

El shape { results, total } replica el patrón de /api/activity para reutilizar lógica de paginación en el frontend.

Consulta SQL

JOIN entre task_comments (alias c) y tasks (alias t):

SELECT c.id, c.task_id, c.author, c.body, c.target_user_ids, c.created_at,
       t.title AS task_title, t.status AS task_status, t.assignee AS task_assignee
FROM task_comments c
LEFT JOIN tasks t ON t.id = c.task_id
[WHERE ...]
ORDER BY c.created_at DESC
LIMIT ? OFFSET ?

Se ejecutan dos queries: una para los resultados y otra SELECT COUNT(*) para el total (mismo WHERE). Ambas comparten el mismo array de params (bind posicional de D1).

Tablas D1 involucradas

Notas de implementación

Véase también

Subir