2025-02-28 11:27:18 +03:00

52 lines
1.7 KiB
TypeScript

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<Project>,
private usersService: UsersService,
) {}
async create(data: { title: string; description?: string; ownerId: number }): Promise<Project> {
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<Project[]> {
return this.projectsRepository.find();
}
async findOneById(id: number): Promise<Project | null> {
return this.projectsRepository.findOne({ where: { id } });
}
async update(id: number, data: { title?: string; description?: string }): Promise<Project> {
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<void> {
const result = await this.projectsRepository.delete(id);
if (result.affected === 0) {
throw new NotFoundException('Project not found');
}
}
}