53 lines
1.3 KiB
TypeScript
53 lines
1.3 KiB
TypeScript
import { Injectable, ConflictException, NotFoundException } from '@nestjs/common';
|
|
import { PrismaService } from '../prisma/prisma.service';
|
|
import { CreatePantryItemDto } from './dto/create-pantry-item.dto';
|
|
|
|
@Injectable()
|
|
export class PantryService {
|
|
constructor(private readonly prisma: PrismaService) {}
|
|
|
|
findAll(userId: number) {
|
|
return this.prisma.pantryItem.findMany({
|
|
where: { userId },
|
|
include: {
|
|
product: true,
|
|
},
|
|
orderBy: {
|
|
product: { name: 'asc' },
|
|
},
|
|
});
|
|
}
|
|
|
|
async create(userId: number, data: CreatePantryItemDto) {
|
|
const existing = await this.prisma.pantryItem.findUnique({
|
|
where: {
|
|
userId_productId: {
|
|
userId,
|
|
productId: data.productId,
|
|
},
|
|
},
|
|
});
|
|
|
|
if (existing) {
|
|
throw new ConflictException('Produkten finns redan i baslagret');
|
|
}
|
|
|
|
return this.prisma.pantryItem.create({
|
|
data: { userId, productId: data.productId },
|
|
include: { product: true },
|
|
});
|
|
}
|
|
|
|
async remove(userId: number, id: number) {
|
|
const item = await this.prisma.pantryItem.findFirst({
|
|
where: { id, userId },
|
|
});
|
|
|
|
if (!item) {
|
|
throw new NotFoundException(`PantryItem med id ${id} hittades inte`);
|
|
}
|
|
|
|
return this.prisma.pantryItem.delete({ where: { id } });
|
|
}
|
|
}
|