Configure remote database connection and update documentation
This commit is contained in:
13
backend/dist/modules/messages/entities/message.entity.d.ts
vendored
Normal file
13
backend/dist/modules/messages/entities/message.entity.d.ts
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
import { User } from '../../users/entities/user.entity';
|
||||
import { Conversation } from '../../conversations/entities/conversation.entity';
|
||||
export declare class Message {
|
||||
id: string;
|
||||
content: string;
|
||||
sender: User;
|
||||
conversation: Conversation;
|
||||
isRead: boolean;
|
||||
isEdited: boolean;
|
||||
editedAt?: Date;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
}
|
78
backend/dist/modules/messages/entities/message.entity.js
vendored
Normal file
78
backend/dist/modules/messages/entities/message.entity.js
vendored
Normal file
@ -0,0 +1,78 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (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;
|
||||
};
|
||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Message = void 0;
|
||||
const graphql_1 = require("@nestjs/graphql");
|
||||
const typeorm_1 = require("typeorm");
|
||||
const user_entity_1 = require("../../users/entities/user.entity");
|
||||
const conversation_entity_1 = require("../../conversations/entities/conversation.entity");
|
||||
let Message = class Message {
|
||||
id;
|
||||
content;
|
||||
sender;
|
||||
conversation;
|
||||
isRead;
|
||||
isEdited;
|
||||
editedAt;
|
||||
createdAt;
|
||||
updatedAt;
|
||||
};
|
||||
exports.Message = Message;
|
||||
__decorate([
|
||||
(0, graphql_1.Field)(() => graphql_1.ID),
|
||||
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
|
||||
__metadata("design:type", String)
|
||||
], Message.prototype, "id", void 0);
|
||||
__decorate([
|
||||
(0, graphql_1.Field)(),
|
||||
(0, typeorm_1.Column)('text'),
|
||||
__metadata("design:type", String)
|
||||
], Message.prototype, "content", void 0);
|
||||
__decorate([
|
||||
(0, graphql_1.Field)(() => user_entity_1.User),
|
||||
(0, typeorm_1.ManyToOne)(() => user_entity_1.User, user => user.messages),
|
||||
__metadata("design:type", user_entity_1.User)
|
||||
], Message.prototype, "sender", void 0);
|
||||
__decorate([
|
||||
(0, graphql_1.Field)(() => conversation_entity_1.Conversation),
|
||||
(0, typeorm_1.ManyToOne)(() => conversation_entity_1.Conversation, conversation => conversation.messages),
|
||||
__metadata("design:type", conversation_entity_1.Conversation)
|
||||
], Message.prototype, "conversation", void 0);
|
||||
__decorate([
|
||||
(0, graphql_1.Field)(() => Boolean),
|
||||
(0, typeorm_1.Column)({ default: false }),
|
||||
__metadata("design:type", Boolean)
|
||||
], Message.prototype, "isRead", void 0);
|
||||
__decorate([
|
||||
(0, graphql_1.Field)(() => Boolean),
|
||||
(0, typeorm_1.Column)({ default: false }),
|
||||
__metadata("design:type", Boolean)
|
||||
], Message.prototype, "isEdited", void 0);
|
||||
__decorate([
|
||||
(0, graphql_1.Field)(() => Date, { nullable: true }),
|
||||
(0, typeorm_1.Column)({ nullable: true }),
|
||||
__metadata("design:type", Date)
|
||||
], Message.prototype, "editedAt", void 0);
|
||||
__decorate([
|
||||
(0, graphql_1.Field)(() => Date),
|
||||
(0, typeorm_1.CreateDateColumn)(),
|
||||
__metadata("design:type", Date)
|
||||
], Message.prototype, "createdAt", void 0);
|
||||
__decorate([
|
||||
(0, graphql_1.Field)(() => Date),
|
||||
(0, typeorm_1.UpdateDateColumn)(),
|
||||
__metadata("design:type", Date)
|
||||
], Message.prototype, "updatedAt", void 0);
|
||||
exports.Message = Message = __decorate([
|
||||
(0, graphql_1.ObjectType)(),
|
||||
(0, typeorm_1.Entity)('messages')
|
||||
], Message);
|
||||
//# sourceMappingURL=message.entity.js.map
|
1
backend/dist/modules/messages/entities/message.entity.js.map
vendored
Normal file
1
backend/dist/modules/messages/entities/message.entity.js.map
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"message.entity.js","sourceRoot":"","sources":["../../../../src/modules/messages/entities/message.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAwD;AACxD,qCAAgH;AAChH,kEAAwD;AACxD,0FAAgF;AAIzE,IAAM,OAAO,GAAb,MAAM,OAAO;IAGlB,EAAE,CAAS;IAIX,OAAO,CAAS;IAIhB,MAAM,CAAO;IAIb,YAAY,CAAe;IAI3B,MAAM,CAAU;IAIhB,QAAQ,CAAU;IAIlB,QAAQ,CAAQ;IAIhB,SAAS,CAAO;IAIhB,SAAS,CAAO;CACjB,CAAA;AApCY,0BAAO;AAGlB;IAFC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,YAAE,CAAC;IACf,IAAA,gCAAsB,EAAC,MAAM,CAAC;;mCACpB;AAIX;IAFC,IAAA,eAAK,GAAE;IACP,IAAA,gBAAM,EAAC,MAAM,CAAC;;wCACC;AAIhB;IAFC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,kBAAI,CAAC;IACjB,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,kBAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;8BACrC,kBAAI;uCAAC;AAIb;IAFC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,kCAAY,CAAC;IACzB,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,kCAAY,EAAE,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC;8BACvD,kCAAY;6CAAC;AAI3B;IAFC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC;IACpB,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;uCACX;AAIhB;IAFC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC;IACpB,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;yCACT;AAIlB;IAFC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACrC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAChB,IAAI;yCAAC;AAIhB;IAFC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC;IACjB,IAAA,0BAAgB,GAAE;8BACR,IAAI;0CAAC;AAIhB;IAFC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC;IACjB,IAAA,0BAAgB,GAAE;8BACR,IAAI;0CAAC;kBAnCL,OAAO;IAFnB,IAAA,oBAAU,GAAE;IACZ,IAAA,gBAAM,EAAC,UAAU,CAAC;GACN,OAAO,CAoCnB"}
|
2
backend/dist/modules/messages/messages.module.d.ts
vendored
Normal file
2
backend/dist/modules/messages/messages.module.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export declare class MessagesModule {
|
||||
}
|
29
backend/dist/modules/messages/messages.module.js
vendored
Normal file
29
backend/dist/modules/messages/messages.module.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (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;
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.MessagesModule = void 0;
|
||||
const common_1 = require("@nestjs/common");
|
||||
const typeorm_1 = require("@nestjs/typeorm");
|
||||
const messages_service_1 = require("./messages.service");
|
||||
const messages_resolver_1 = require("./messages.resolver");
|
||||
const message_entity_1 = require("./entities/message.entity");
|
||||
const conversations_module_1 = require("../conversations/conversations.module");
|
||||
let MessagesModule = class MessagesModule {
|
||||
};
|
||||
exports.MessagesModule = MessagesModule;
|
||||
exports.MessagesModule = MessagesModule = __decorate([
|
||||
(0, common_1.Module)({
|
||||
imports: [
|
||||
typeorm_1.TypeOrmModule.forFeature([message_entity_1.Message]),
|
||||
conversations_module_1.ConversationsModule,
|
||||
],
|
||||
providers: [messages_resolver_1.MessagesResolver, messages_service_1.MessagesService],
|
||||
exports: [messages_service_1.MessagesService],
|
||||
})
|
||||
], MessagesModule);
|
||||
//# sourceMappingURL=messages.module.js.map
|
1
backend/dist/modules/messages/messages.module.js.map
vendored
Normal file
1
backend/dist/modules/messages/messages.module.js.map
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"messages.module.js","sourceRoot":"","sources":["../../../src/modules/messages/messages.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,6CAAgD;AAChD,yDAAqD;AACrD,2DAAuD;AACvD,8DAAoD;AACpD,gFAA4E;AAUrE,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,wCAAc;yBAAd,cAAc;IAR1B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,uBAAa,CAAC,UAAU,CAAC,CAAC,wBAAO,CAAC,CAAC;YACnC,0CAAmB;SACpB;QACD,SAAS,EAAE,CAAC,oCAAgB,EAAE,kCAAe,CAAC;QAC9C,OAAO,EAAE,CAAC,kCAAe,CAAC;KAC3B,CAAC;GACW,cAAc,CAAG"}
|
13
backend/dist/modules/messages/messages.resolver.d.ts
vendored
Normal file
13
backend/dist/modules/messages/messages.resolver.d.ts
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
import { MessagesService } from './messages.service';
|
||||
import { Message } from './entities/message.entity';
|
||||
import { User } from '../users/entities/user.entity';
|
||||
export declare class MessagesResolver {
|
||||
private readonly messagesService;
|
||||
constructor(messagesService: MessagesService);
|
||||
findAll(conversationId: string, user: User): Promise<Message[]>;
|
||||
sendMessage(user: User, conversationId: string, content: string): Promise<Message>;
|
||||
updateMessage(user: User, messageId: string, content: string): Promise<Message>;
|
||||
deleteMessage(user: User, messageId: string): Promise<boolean>;
|
||||
markMessageAsRead(user: User, messageId: string): Promise<Message>;
|
||||
messageAdded(conversationId: string): any;
|
||||
}
|
110
backend/dist/modules/messages/messages.resolver.js
vendored
Normal file
110
backend/dist/modules/messages/messages.resolver.js
vendored
Normal file
@ -0,0 +1,110 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (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;
|
||||
};
|
||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||
};
|
||||
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
||||
return function (target, key) { decorator(target, key, paramIndex); }
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.MessagesResolver = void 0;
|
||||
const graphql_1 = require("@nestjs/graphql");
|
||||
const common_1 = require("@nestjs/common");
|
||||
const graphql_subscriptions_1 = require("graphql-subscriptions");
|
||||
const messages_service_1 = require("./messages.service");
|
||||
const message_entity_1 = require("./entities/message.entity");
|
||||
const gql_auth_guard_1 = require("../auth/guards/gql-auth.guard");
|
||||
const current_user_decorator_1 = require("../auth/decorators/current-user.decorator");
|
||||
const user_entity_1 = require("../users/entities/user.entity");
|
||||
const pubSub = new graphql_subscriptions_1.PubSub();
|
||||
let MessagesResolver = class MessagesResolver {
|
||||
messagesService;
|
||||
constructor(messagesService) {
|
||||
this.messagesService = messagesService;
|
||||
}
|
||||
findAll(conversationId, user) {
|
||||
return this.messagesService.findAllInConversation(conversationId, user.id);
|
||||
}
|
||||
async sendMessage(user, conversationId, content) {
|
||||
const message = await this.messagesService.create(conversationId, user.id, content);
|
||||
pubSub.publish('messageAdded', { messageAdded: message });
|
||||
return message;
|
||||
}
|
||||
updateMessage(user, messageId, content) {
|
||||
return this.messagesService.update(messageId, user.id, content);
|
||||
}
|
||||
deleteMessage(user, messageId) {
|
||||
return this.messagesService.delete(messageId, user.id);
|
||||
}
|
||||
markMessageAsRead(user, messageId) {
|
||||
return this.messagesService.markAsRead(messageId, user.id);
|
||||
}
|
||||
messageAdded(conversationId) {
|
||||
return pubSub.asyncIterator('messageAdded');
|
||||
}
|
||||
};
|
||||
exports.MessagesResolver = MessagesResolver;
|
||||
__decorate([
|
||||
(0, graphql_1.Query)(() => [message_entity_1.Message], { name: 'messages' }),
|
||||
__param(0, (0, graphql_1.Args)('conversationId', { type: () => graphql_1.ID })),
|
||||
__param(1, (0, current_user_decorator_1.CurrentUser)()),
|
||||
__metadata("design:type", Function),
|
||||
__metadata("design:paramtypes", [String, user_entity_1.User]),
|
||||
__metadata("design:returntype", void 0)
|
||||
], MessagesResolver.prototype, "findAll", null);
|
||||
__decorate([
|
||||
(0, graphql_1.Mutation)(() => message_entity_1.Message),
|
||||
__param(0, (0, current_user_decorator_1.CurrentUser)()),
|
||||
__param(1, (0, graphql_1.Args)('conversationId', { type: () => graphql_1.ID })),
|
||||
__param(2, (0, graphql_1.Args)('content')),
|
||||
__metadata("design:type", Function),
|
||||
__metadata("design:paramtypes", [user_entity_1.User, String, String]),
|
||||
__metadata("design:returntype", Promise)
|
||||
], MessagesResolver.prototype, "sendMessage", null);
|
||||
__decorate([
|
||||
(0, graphql_1.Mutation)(() => message_entity_1.Message),
|
||||
__param(0, (0, current_user_decorator_1.CurrentUser)()),
|
||||
__param(1, (0, graphql_1.Args)('messageId', { type: () => graphql_1.ID })),
|
||||
__param(2, (0, graphql_1.Args)('content')),
|
||||
__metadata("design:type", Function),
|
||||
__metadata("design:paramtypes", [user_entity_1.User, String, String]),
|
||||
__metadata("design:returntype", void 0)
|
||||
], MessagesResolver.prototype, "updateMessage", null);
|
||||
__decorate([
|
||||
(0, graphql_1.Mutation)(() => Boolean),
|
||||
__param(0, (0, current_user_decorator_1.CurrentUser)()),
|
||||
__param(1, (0, graphql_1.Args)('messageId', { type: () => graphql_1.ID })),
|
||||
__metadata("design:type", Function),
|
||||
__metadata("design:paramtypes", [user_entity_1.User, String]),
|
||||
__metadata("design:returntype", void 0)
|
||||
], MessagesResolver.prototype, "deleteMessage", null);
|
||||
__decorate([
|
||||
(0, graphql_1.Mutation)(() => message_entity_1.Message),
|
||||
__param(0, (0, current_user_decorator_1.CurrentUser)()),
|
||||
__param(1, (0, graphql_1.Args)('messageId', { type: () => graphql_1.ID })),
|
||||
__metadata("design:type", Function),
|
||||
__metadata("design:paramtypes", [user_entity_1.User, String]),
|
||||
__metadata("design:returntype", void 0)
|
||||
], MessagesResolver.prototype, "markMessageAsRead", null);
|
||||
__decorate([
|
||||
(0, graphql_1.Subscription)(() => message_entity_1.Message, {
|
||||
filter: (payload, variables) => {
|
||||
return payload.messageAdded.conversation.id === variables.conversationId;
|
||||
},
|
||||
}),
|
||||
__param(0, (0, graphql_1.Args)('conversationId', { type: () => graphql_1.ID })),
|
||||
__metadata("design:type", Function),
|
||||
__metadata("design:paramtypes", [String]),
|
||||
__metadata("design:returntype", void 0)
|
||||
], MessagesResolver.prototype, "messageAdded", null);
|
||||
exports.MessagesResolver = MessagesResolver = __decorate([
|
||||
(0, graphql_1.Resolver)(() => message_entity_1.Message),
|
||||
(0, common_1.UseGuards)(gql_auth_guard_1.GqlAuthGuard),
|
||||
__metadata("design:paramtypes", [messages_service_1.MessagesService])
|
||||
], MessagesResolver);
|
||||
//# sourceMappingURL=messages.resolver.js.map
|
1
backend/dist/modules/messages/messages.resolver.js.map
vendored
Normal file
1
backend/dist/modules/messages/messages.resolver.js.map
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"messages.resolver.js","sourceRoot":"","sources":["../../../src/modules/messages/messages.resolver.ts"],"names":[],"mappings":"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"}
|
13
backend/dist/modules/messages/messages.service.d.ts
vendored
Normal file
13
backend/dist/modules/messages/messages.service.d.ts
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
import { Repository } from 'typeorm';
|
||||
import { Message } from './entities/message.entity';
|
||||
import { ConversationsService } from '../conversations/conversations.service';
|
||||
export declare class MessagesService {
|
||||
private messagesRepository;
|
||||
private conversationsService;
|
||||
constructor(messagesRepository: Repository<Message>, conversationsService: ConversationsService);
|
||||
create(conversationId: string, senderId: string, content: string): Promise<Message>;
|
||||
findAllInConversation(conversationId: string, userId: string): Promise<Message[]>;
|
||||
update(messageId: string, userId: string, content: string): Promise<Message>;
|
||||
markAsRead(messageId: string, userId: string): Promise<Message>;
|
||||
delete(messageId: string, userId: string): Promise<boolean>;
|
||||
}
|
98
backend/dist/modules/messages/messages.service.js
vendored
Normal file
98
backend/dist/modules/messages/messages.service.js
vendored
Normal file
@ -0,0 +1,98 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (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;
|
||||
};
|
||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||
};
|
||||
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
||||
return function (target, key) { decorator(target, key, paramIndex); }
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.MessagesService = void 0;
|
||||
const common_1 = require("@nestjs/common");
|
||||
const typeorm_1 = require("@nestjs/typeorm");
|
||||
const typeorm_2 = require("typeorm");
|
||||
const message_entity_1 = require("./entities/message.entity");
|
||||
const conversations_service_1 = require("../conversations/conversations.service");
|
||||
let MessagesService = class MessagesService {
|
||||
messagesRepository;
|
||||
conversationsService;
|
||||
constructor(messagesRepository, conversationsService) {
|
||||
this.messagesRepository = messagesRepository;
|
||||
this.conversationsService = conversationsService;
|
||||
}
|
||||
async create(conversationId, senderId, content) {
|
||||
const conversation = await this.conversationsService.findOne(conversationId, senderId);
|
||||
const message = this.messagesRepository.create({
|
||||
content,
|
||||
sender: { id: senderId },
|
||||
conversation: { id: conversationId },
|
||||
});
|
||||
return this.messagesRepository.save(message);
|
||||
}
|
||||
async findAllInConversation(conversationId, userId) {
|
||||
await this.conversationsService.findOne(conversationId, userId);
|
||||
return this.messagesRepository.find({
|
||||
where: { conversation: { id: conversationId } },
|
||||
relations: ['sender'],
|
||||
order: { createdAt: 'ASC' },
|
||||
});
|
||||
}
|
||||
async update(messageId, userId, content) {
|
||||
const message = await this.messagesRepository.findOne({
|
||||
where: { id: messageId },
|
||||
relations: ['sender'],
|
||||
});
|
||||
if (!message) {
|
||||
throw new common_1.NotFoundException('Сообщение не найдено');
|
||||
}
|
||||
if (message.sender.id !== userId) {
|
||||
throw new common_1.ForbiddenException('Вы можете редактировать только свои сообщения');
|
||||
}
|
||||
message.content = content;
|
||||
message.isEdited = true;
|
||||
message.editedAt = new Date();
|
||||
return this.messagesRepository.save(message);
|
||||
}
|
||||
async markAsRead(messageId, userId) {
|
||||
const message = await this.messagesRepository.findOne({
|
||||
where: { id: messageId },
|
||||
relations: ['conversation', 'conversation.participants'],
|
||||
});
|
||||
if (!message) {
|
||||
throw new common_1.NotFoundException('Сообщение не найдено');
|
||||
}
|
||||
const isParticipant = message.conversation.participants.some(p => p.id === userId);
|
||||
if (!isParticipant) {
|
||||
throw new common_1.ForbiddenException('Вы не являетесь участником этой беседы');
|
||||
}
|
||||
message.isRead = true;
|
||||
return this.messagesRepository.save(message);
|
||||
}
|
||||
async delete(messageId, userId) {
|
||||
const message = await this.messagesRepository.findOne({
|
||||
where: { id: messageId },
|
||||
relations: ['sender'],
|
||||
});
|
||||
if (!message) {
|
||||
throw new common_1.NotFoundException('Сообщение не найдено');
|
||||
}
|
||||
if (message.sender.id !== userId) {
|
||||
throw new common_1.ForbiddenException('Вы можете удалять только свои сообщения');
|
||||
}
|
||||
await this.messagesRepository.remove(message);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
exports.MessagesService = MessagesService;
|
||||
exports.MessagesService = MessagesService = __decorate([
|
||||
(0, common_1.Injectable)(),
|
||||
__param(0, (0, typeorm_1.InjectRepository)(message_entity_1.Message)),
|
||||
__metadata("design:paramtypes", [typeorm_2.Repository,
|
||||
conversations_service_1.ConversationsService])
|
||||
], MessagesService);
|
||||
//# sourceMappingURL=messages.service.js.map
|
1
backend/dist/modules/messages/messages.service.js.map
vendored
Normal file
1
backend/dist/modules/messages/messages.service.js.map
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"file":"messages.service.js","sourceRoot":"","sources":["../../../src/modules/messages/messages.service.ts"],"names":[],"mappings":"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"}
|
Reference in New Issue
Block a user