api-server/src/modules/notifications/notifications.repository.ts

41 lines
1.1 KiB
TypeScript
Raw Normal View History

import { Injectable } from '@nestjs/common';
import { PrismaService } from '../../infrastructure/database/prisma.service';
@Injectable()
export class NotificationsRepository {
constructor(private readonly prisma: PrismaService) {}
async findAll(userId: string, pagination?: { page?: number; limit?: number }) {
const page = pagination?.page ?? 1;
const limit = pagination?.limit ?? 20;
return this.prisma.notification.findMany({
where: { userId },
orderBy: { createdAt: 'desc' },
skip: (page - 1) * limit,
take: limit,
});
}
async create(data: { userId: string; type: string; title: string; body: string }) {
return this.prisma.notification.create({
data: {
userId: data.userId,
type: data.type,
title: data.title,
content: data.body,
},
});
}
async findById(id: string) {
return this.prisma.notification.findUnique({ where: { id } });
}
async markRead(id: string) {
return this.prisma.notification.update({
where: { id },
data: { readAt: new Date() },
});
}
}