archetecture security fix
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.findCompany = findCompany;
|
||||
exports.countUnread = countUnread;
|
||||
exports.markRead = markRead;
|
||||
exports.markAllRead = markAllRead;
|
||||
exports.findEmployeePreferences = findEmployeePreferences;
|
||||
exports.upsertEmployeePreferences = upsertEmployeePreferences;
|
||||
exports.findCompanyHistory = findCompanyHistory;
|
||||
exports.findRenter = findRenter;
|
||||
exports.markRenterRead = markRenterRead;
|
||||
exports.markAllRenterRead = markAllRenterRead;
|
||||
exports.findRenterPreferences = findRenterPreferences;
|
||||
exports.upsertRenterPreferences = upsertRenterPreferences;
|
||||
const prisma_1 = require("../../lib/prisma");
|
||||
// ─── Company notifications ────────────────────────────────────
|
||||
function findCompany(companyId, unread) {
|
||||
const where = { companyId, channel: 'IN_APP' };
|
||||
if (unread === 'true')
|
||||
where.readAt = null;
|
||||
return prisma_1.prisma.notification.findMany({ where, orderBy: { createdAt: 'desc' }, take: 50 });
|
||||
}
|
||||
function countUnread(companyId) {
|
||||
return prisma_1.prisma.notification.count({ where: { companyId, channel: 'IN_APP', readAt: null } });
|
||||
}
|
||||
function markRead(id, companyId) {
|
||||
return prisma_1.prisma.notification.updateMany({ where: { id, companyId }, data: { readAt: new Date(), status: 'READ' } });
|
||||
}
|
||||
function markAllRead(companyId) {
|
||||
return prisma_1.prisma.notification.updateMany({ where: { companyId, readAt: null }, data: { readAt: new Date(), status: 'READ' } });
|
||||
}
|
||||
function findEmployeePreferences(employeeId) {
|
||||
return prisma_1.prisma.notificationPreference.findMany({ where: { employeeId } });
|
||||
}
|
||||
async function upsertEmployeePreferences(employeeId, prefs) {
|
||||
for (const pref of prefs) {
|
||||
await prisma_1.prisma.notificationPreference.upsert({
|
||||
where: { employeeId_notificationType_channel: { employeeId, notificationType: pref.notificationType, channel: pref.channel } },
|
||||
create: { employeeId, notificationType: pref.notificationType, channel: pref.channel, enabled: pref.enabled },
|
||||
update: { enabled: pref.enabled },
|
||||
});
|
||||
}
|
||||
}
|
||||
function findCompanyHistory(companyId, opts) {
|
||||
const where = { companyId };
|
||||
if (opts?.channel)
|
||||
where.channel = opts.channel;
|
||||
if (opts?.status)
|
||||
where.status = opts.status;
|
||||
return prisma_1.prisma.notification.findMany({
|
||||
where,
|
||||
orderBy: { createdAt: 'desc' },
|
||||
take: opts?.limit ?? 200,
|
||||
});
|
||||
}
|
||||
// ─── Renter notifications ─────────────────────────────────────
|
||||
function findRenter(renterId) {
|
||||
return prisma_1.prisma.notification.findMany({ where: { renterId, channel: 'IN_APP' }, orderBy: { createdAt: 'desc' }, take: 50 });
|
||||
}
|
||||
function markRenterRead(id, renterId) {
|
||||
return prisma_1.prisma.notification.updateMany({ where: { id, renterId }, data: { readAt: new Date(), status: 'READ' } });
|
||||
}
|
||||
function markAllRenterRead(renterId) {
|
||||
return prisma_1.prisma.notification.updateMany({ where: { renterId, channel: 'IN_APP', readAt: null }, data: { readAt: new Date(), status: 'READ' } });
|
||||
}
|
||||
function findRenterPreferences(renterId) {
|
||||
return prisma_1.prisma.notificationPreference.findMany({ where: { renterId } });
|
||||
}
|
||||
async function upsertRenterPreferences(renterId, prefs) {
|
||||
for (const pref of prefs) {
|
||||
await prisma_1.prisma.notificationPreference.upsert({
|
||||
where: { renterId_notificationType_channel: { renterId, notificationType: pref.notificationType, channel: pref.channel } },
|
||||
create: { renterId, notificationType: pref.notificationType, channel: pref.channel, enabled: pref.enabled },
|
||||
update: { enabled: pref.enabled },
|
||||
});
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=notification.repo.js.map
|
||||
Reference in New Issue
Block a user