import { findByUserId, getUnreadCount, markAsRead, markAllAsRead, remove, removeAllForUser } from '../repositories/notification.repo.js';
import type { PaginatedResult, Notification } from '../types/index.js';

export async function list(userId: string, page = 1, limit = 20): Promise<PaginatedResult<Notification>> {
  const { rows, total } = await findByUserId(userId, page, limit);
  return { data: rows, total, page, limit };
}

export async function unreadCount(userId: string): Promise<number> {
  return getUnreadCount(userId);
}

export async function markRead(id: string): Promise<void> {
  await markAsRead(id);
}

export async function markAllRead(userId: string): Promise<void> {
  await markAllAsRead(userId);
}

export async function dismiss(id: string, userId: string): Promise<void> {
  await remove(id, userId);
}

export async function dismissAll(userId: string): Promise<void> {
  await removeAllForUser(userId);
}
