UNPKG

uyem

Version:
551 lines 18.8 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const lib_1 = require("../utils/lib"); const auth_1 = __importDefault(require("./auth")); class DB extends auth_1.default { prisma; constructor({ prisma }) { super(); this.prisma = prisma; } // eslint-disable-next-line class-methods-use-this roomFindFirst = async (args) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any let result; try { result = await this.prisma.room.findFirst(args); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'DB Error room find first', { args, err }); } return result; }; // eslint-disable-next-line class-methods-use-this roomUpdate = async (args) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any let result; try { result = await this.prisma.room.update(args); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'DB Error update room', { where: args.where, data: args.data, err }); } return result; }; // eslint-disable-next-line class-methods-use-this roomCreate = async (args) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any let result; try { result = await this.prisma.room.create(args); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'DB Error create room', { args, err }); } return result; }; // eslint-disable-next-line class-methods-use-this unitCreate = async (args) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any let result; try { result = await this.prisma.unit.create(args); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'DB Error create unit', { args, err }); } return result; }; // eslint-disable-next-line class-methods-use-this unitUpdate = async (args) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any let result; try { result = await this.prisma.unit.update(args); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'DB Error update unit', { args, err }); } return result; }; // eslint-disable-next-line class-methods-use-this unitFindFirst = async (args) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any let result; try { result = await this.prisma.unit.findFirst(args); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'DB Error find first unit', { args, err }); } return result; }; // eslint-disable-next-line class-methods-use-this messageUpdate = async (args) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any let result; try { result = await this.prisma.message.update(args); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'DB Error update message', { where: args.where, data: args.data, err }); } return result; }; // eslint-disable-next-line class-methods-use-this messageCreate = async (args) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any let result; try { result = await this.prisma.message.create(args); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'DB Error create message', { args, err }); } return result; }; // eslint-disable-next-line class-methods-use-this quoteCreate = async (args) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any let result; try { result = await this.prisma.quote.create(args); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'DB Error create quote', { args, err }); } return result; }; // eslint-disable-next-line class-methods-use-this messageDelete = async (args) => { let message; try { message = await this.prisma.message.findFirst({ where: { id: args.where.id, }, include: { Quote: true, MessageQuote: true, }, }); } catch (err) { (0, lib_1.log)('error', 'DB Error message find first while delete', { args, err }); return null; } if (!message) { return null; } if (message.Quote) { try { message = await this.prisma.message.update({ where: { id: args.where.id, }, data: { Quote: { delete: true, }, }, include: { Quote: true, MessageQuote: true, }, }); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'DB Error message update while delete', { args, err }); return null; } } if (!message) { return null; } if (message.MessageQuote?.length) { try { message = await this.prisma.message.update({ where: { id: args.where.id, }, data: { Message: { updateMany: [ { where: { messageId: message.id, }, data: { quoteId: null, }, }, ], }, }, }); } catch (err) { (0, lib_1.log)('error', 'DB Error update message while delete 2', { args, err }); return null; } } // eslint-disable-next-line @typescript-eslint/no-explicit-any let result; try { result = await this.prisma.message.delete(args); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'DB Error delete message', { args, err }); } return result; }; // eslint-disable-next-line class-methods-use-this messageFindMany = async (args) => { const { where, skip, take } = args; // eslint-disable-next-line @typescript-eslint/no-explicit-any let count = 0; try { count = await this.prisma.message.count({ where, }); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'Error get count of messages', { err }); } // eslint-disable-next-line @typescript-eslint/no-explicit-any let data; try { data = await this.prisma.message.findMany(args); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'Error get messages', { err }); } return { result: data, skip, take, count, // eslint-disable-next-line @typescript-eslint/no-explicit-any }; }; // eslint-disable-next-line class-methods-use-this videoFindFirst = async (args) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any let result; try { result = await this.prisma.video.findFirst(args); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'DB Error video find first', { where: args.where, data: args, err }); } return result; }; // eslint-disable-next-line class-methods-use-this videoUpdate = async (args) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any let result; try { result = await this.prisma.video.update(args); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'DB Error update video', { where: args.where, data: args.data, err }); } return result; }; // eslint-disable-next-line class-methods-use-this videoCreate = async (args) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any let result; try { result = await this.prisma.video.create(args); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'DB Error create video', { args, err }); } return result; }; // eslint-disable-next-line class-methods-use-this videoDelete = async (args) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any let result; try { result = await this.prisma.video.delete(args); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'DB Error delete video', { args, err }); } return result; }; // eslint-disable-next-line class-methods-use-this adminsFindFirst = async (args) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any let result; try { result = await this.prisma.admins.findFirst(args); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'DB Error admins find first', { args, err }); } return result; }; // eslint-disable-next-line class-methods-use-this adminsCreate = async (args) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any let result; try { result = await this.prisma.admins.create(args); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'DB Error admins create', { args, err }); } return result; }; // eslint-disable-next-line class-methods-use-this adminsUpdate = async (args) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any let result; try { result = await this.prisma.admins.update(args); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'DB Error admins update', { args, err }); } return result; }; // eslint-disable-next-line class-methods-use-this adminsDelete = async (args) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any let result; try { result = await this.prisma.admins.delete(args); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'DB Error admins delete', { args, err }); } return result; }; // eslint-disable-next-line class-methods-use-this videoFindMany = async (args) => { const { where, skip, take } = args; // eslint-disable-next-line @typescript-eslint/no-explicit-any let count = 0; try { count = await this.prisma.video.count({ where, }); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'Error get count of videos', { err }); } // eslint-disable-next-line @typescript-eslint/no-explicit-any let data; try { data = await this.prisma.video.findMany(args); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err) { (0, lib_1.log)('error', 'Error get video', { err }); } return { result: data, skip, take, count, // eslint-disable-next-line @typescript-eslint/no-explicit-any }; }; deleteGuest({ userId, roomId }) { return new Promise((resolve) => { this.roomFindFirst({ where: { id: roomId.toString(), }, select: { Guests: { where: { unitId: userId.toString(), }, }, }, }).then((g) => { if (!g) { (0, lib_1.log)('warn', 'Can not unitFindFirst', { userId }); resolve(0); return; } this.roomUpdate({ where: { id: roomId.toString(), }, data: { Guests: { delete: g.Guests[0]?.id ? { id: g.Guests[0]?.id, } : undefined, }, updated: new Date(), }, }).then((r) => { if (!r) { (0, lib_1.log)('warn', 'Room not delete guest', { roomId, id: g.Guests[0]?.id }); resolve(1); } (0, lib_1.log)('info', 'Guest deleted', { roomId, id: g.Guests[0]?.id }); resolve(0); }); }); }); } changeUserOnline({ userId, online }) { this.unitUpdate({ where: { id: userId.toString(), }, data: { online, updated: new Date(), }, }); } async changeRoomArchive({ roomId, archive }) { const room = await this.roomFindFirst({ where: { id: roomId, }, include: { Admins: { select: { id: true, }, }, }, }); await this.roomUpdate({ where: { id: roomId, }, data: { archive, Admins: room?.authorId === null ? { deleteMany: room?.Admins, } : undefined, updated: new Date(), }, }); } videoUpdateTime = async ({ roomId, time }) => { const video = await this.videoFindFirst({ where: { roomId: roomId.toString(), }, orderBy: { created: 'desc', }, }); if (video) { this.videoUpdate({ where: { id: video.id, }, data: { time, updated: new Date(), }, }); } else { (0, lib_1.log)('warn', 'Video not found', { roomId, time }); } }; saveGuest({ userId, roomId }) { this.unitFindFirst({ where: { id: userId, }, select: { IGuest: { select: { id: true, }, }, }, }).then((g) => { const id = roomId; if (!g) { (0, lib_1.log)('warn', 'Unit not found', { id: userId }); } else if (!g?.IGuest[0]) { this.unitUpdate({ where: { id: userId, }, data: { IGuest: { create: { roomId: id, }, }, updated: new Date(), }, }).then((r) => { if (!r) { (0, lib_1.log)('warn', 'Room not updated', { roomId }); } }); } else if (g.IGuest[0].id) { this.unitUpdate({ where: { id: userId, }, data: { IGuest: { update: { where: { id: g.IGuest[0].id, }, data: { updated: new Date(), }, }, }, }, }); } else { (0, lib_1.log)('warn', 'Room not saved', { g: g.IGuest[0]?.id, id }); } }); } } exports.default = DB; //# sourceMappingURL=db.js.map