@sync-in/server
Version:
The secure, open-source platform for file storage, sharing, collaboration, and sync
100 lines (99 loc) • 5.1 kB
JavaScript
/*
* Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
* This file is part of Sync-in | The open source file sync and share solution
* See the LICENSE file for licensing details
*/ "use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "NotificationsQueries", {
enumerable: true,
get: function() {
return NotificationsQueries;
}
});
const _common = require("@nestjs/common");
const _drizzleorm = require("drizzle-orm");
const _constants = require("../../../infrastructure/database/constants");
const _databaseinterface = require("../../../infrastructure/database/interfaces/database.interface");
const _utils = require("../../../infrastructure/database/utils");
const _user = require("../../users/constants/user");
const _usersschema = require("../../users/schemas/users.schema");
const _notificationsschema = require("../schemas/notifications.schema");
function _ts_decorate(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
}
function _ts_metadata(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
}
function _ts_param(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
}
let NotificationsQueries = class NotificationsQueries {
list(userId, onlyUnread = false) {
const where = [
(0, _drizzleorm.eq)(_notificationsschema.notifications.toUserId, userId),
...onlyUnread ? [
(0, _drizzleorm.eq)(_notificationsschema.notifications.wasRead, false)
] : []
];
return this.db.select({
id: _notificationsschema.notifications.id,
fromUser: {
id: _usersschema.users.id,
login: _usersschema.users.login,
email: _usersschema.users.email,
fullName: (0, _usersschema.userFullNameSQL)(_usersschema.users)
},
content: (0, _drizzleorm.sql)`${_notificationsschema.notifications.content}`.mapWith(JSON.parse),
wasRead: _notificationsschema.notifications.wasRead,
createdAt: _notificationsschema.notifications.createdAt
}).from(_notificationsschema.notifications).leftJoin(_usersschema.users, (0, _drizzleorm.eq)(_usersschema.users.id, _notificationsschema.notifications.fromUserId)).where((0, _drizzleorm.and)(...where)).orderBy((0, _drizzleorm.desc)(_notificationsschema.notifications.id));
}
async create(fromUserId, toUserIds, content) {
(0, _utils.dbCheckAffectedRows)(await this.db.insert(_notificationsschema.notifications).values(toUserIds.map((toUserId)=>({
fromUserId: fromUserId,
toUserId: toUserId,
content: content
}))), toUserIds.length);
}
async wasRead(userId, notificationId) {
await this.db.update(_notificationsschema.notifications).set({
wasRead: true
}).where((0, _drizzleorm.and)((0, _drizzleorm.eq)(_notificationsschema.notifications.toUserId, userId), (0, _drizzleorm.eq)(_notificationsschema.notifications.id, notificationId), (0, _drizzleorm.eq)(_notificationsschema.notifications.wasRead, false)));
}
async delete(userId, notificationId) {
const where = [
(0, _drizzleorm.eq)(_notificationsschema.notifications.toUserId, userId),
...notificationId ? [
(0, _drizzleorm.eq)(_notificationsschema.notifications.id, notificationId)
] : []
];
await this.db.delete(_notificationsschema.notifications).where((0, _drizzleorm.and)(...where));
}
usersNotifiedByEmail(userIds) {
return this.db.select({
id: _usersschema.users.id,
email: _usersschema.users.email,
language: _usersschema.users.language,
notification: _usersschema.users.notification
}).from(_usersschema.users).where((0, _drizzleorm.and)((0, _drizzleorm.inArray)(_usersschema.users.id, userIds), (0, _drizzleorm.eq)(_usersschema.users.notification, _user.USER_NOTIFICATION.APPLICATION_EMAIL)));
}
constructor(db){
this.db = db;
}
};
NotificationsQueries = _ts_decorate([
(0, _common.Injectable)(),
_ts_param(0, (0, _common.Inject)(_constants.DB_TOKEN_PROVIDER)),
_ts_metadata("design:type", Function),
_ts_metadata("design:paramtypes", [
typeof _databaseinterface.DBSchema === "undefined" ? Object : _databaseinterface.DBSchema
])
], NotificationsQueries);
//# sourceMappingURL=notifications-queries.service.js.map