import { Injectable, Logger, NotFoundException } from '@nestjs/common'; import { ClipboardService } from '../clipboard/clipboard.service'; @Injectable() export class AdminService { private readonly logger = new Logger(AdminService.name); constructor(private readonly clipboardService: ClipboardService) { } async listClipboards() { return this.clipboardService.listClipboards(); } async getClipboard(roomCode: string) { const clipboard = await this.clipboardService.getClipboard(roomCode); const ttl = await this.clipboardService.getClipboardTTL(roomCode); if (!clipboard) { throw new NotFoundException(`Clipboard ${roomCode} not found`); } return { ...clipboard, ttl }; } async setPassword(roomCode: string, password?: string | null) { const clipboard = await this.clipboardService.updateClipboardPassword(roomCode, password); if (!clipboard) { throw new NotFoundException(`Clipboard ${roomCode} not found`); } this.logger.log(`Updated password for clipboard ${roomCode}`); return clipboard; } async setTTL(roomCode: string, ttlSeconds: number | null) { const updated = await this.clipboardService.setClipboardExpiration(roomCode, ttlSeconds); if (!updated) { throw new NotFoundException(`Clipboard ${roomCode} not found`); } this.logger.log(`Updated TTL for clipboard ${roomCode} -> ${ttlSeconds ?? 'none'}`); return { success: true, ttl: ttlSeconds }; } async deleteClipboard(roomCode: string) { const success = await this.clipboardService.deleteClipboard(roomCode); if (!success) { throw new NotFoundException(`Clipboard ${roomCode} not found`); } this.logger.log(`Deleted clipboard ${roomCode}`); return { success }; } }