import { Injectable, NotFoundException } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { Project } from './project.entity'; import { UsersService } from '../users/users.service'; @Injectable() export class ProjectsService { constructor( @InjectRepository(Project) private projectsRepository: Repository, private usersService: UsersService, ) {} async create(data: { title: string; description?: string; ownerId: number }): Promise { const owner = await this.usersService.findOneById(data.ownerId); if (!owner) throw new NotFoundException('Owner not found'); const project = this.projectsRepository.create({ title: data.title, description: data.description, owner, }); return this.projectsRepository.save(project); } async findAll(): Promise { return this.projectsRepository.find(); } async findOneById(id: number): Promise { return this.projectsRepository.findOne({ where: { id } }); } async update(id: number, data: { title?: string; description?: string }): Promise { const project = await this.findOneById(id); if (!project) throw new NotFoundException('Project not found'); if (data.title !== undefined) project.title = data.title; if (data.description !== undefined) project.description = data.description; return this.projectsRepository.save(project); } async delete(id: number): Promise { const result = await this.projectsRepository.delete(id); if (result.affected === 0) { throw new NotFoundException('Project not found'); } } }