Files
acad-ia-2/src/data/api/notifications.api.ts
Alejandro Rosales 65a73ca99f feat: add subjects and tasks API, hooks, and related types
- Implemented subjects API with functions for creating, updating, and retrieving subjects, including history and bibliography.
- Added tasks API for managing user tasks, including listing and marking tasks as completed.
- Created hooks for managing AI interactions, authentication, subjects, tasks, and metadata queries.
- Established query keys for caching and managing query states.
- Introduced Supabase client and environment variable management for better configuration.
- Defined types for database and domain models to ensure type safety across the application.
2026-01-09 09:00:33 -06:00

32 lines
1.1 KiB
TypeScript

import { supabaseBrowser } from "../supabase/client";
import { throwIfError, getUserIdOrThrow, requireData } from "./_helpers";
import type { Notificacion, UUID } from "../types/domain";
export async function notificaciones_mias_list(): Promise<Notificacion[]> {
const supabase = supabaseBrowser();
const userId = await getUserIdOrThrow(supabase);
const { data, error } = await supabase
.from("notificaciones")
.select("id,usuario_id,tipo,payload,leida,creado_en,leida_en")
.eq("usuario_id", userId as UUID)
.order("creado_en", { ascending: false });
throwIfError(error);
return data ?? [];
}
export async function notificaciones_marcar_leida(notificacionId: UUID): Promise<Notificacion> {
const supabase = supabaseBrowser();
const { data, error } = await supabase
.from("notificaciones")
.update({ leida: true, leida_en: new Date().toISOString() })
.eq("id", notificacionId)
.select("id,usuario_id,tipo,payload,leida,creado_en,leida_en")
.single();
throwIfError(error);
return requireData(data, "No se pudo marcar notificación.");
}