import { Injectable, NotFoundException } from "@nestjs/common"; import { PrismaService } from "../prisma/prisma.service"; /** * Service for managing widget definitions * Provides read-only access to available widget definitions */ @Injectable() export class WidgetsService { constructor(private readonly prisma: PrismaService) {} /** * Get all active widget definitions */ async findAll() { return this.prisma.widgetDefinition.findMany({ where: { isActive: true, }, orderBy: { name: "asc", }, }); } /** * Get a widget definition by name */ async findByName(name: string) { const widget = await this.prisma.widgetDefinition.findUnique({ where: { name, }, }); if (!widget) { throw new NotFoundException(`Widget definition with name '${name}' not found`); } return widget; } /** * Get a widget definition by ID */ async findOne(id: string) { const widget = await this.prisma.widgetDefinition.findUnique({ where: { id, }, }); if (!widget) { throw new NotFoundException(`Widget definition with ID ${id} not found`); } return widget; } }