UNPKG

@sync-in/server

Version:

The secure, open-source platform for file storage, sharing, collaboration, and sync

100 lines (99 loc) 5.1 kB
/* * 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