clip / apps /backend /src /admin /admin.service.ts
Husr's picture
first commit
d988ae4
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 };
}
}