Something went wrong. Try again.
simple chat app using ASP.net core SignalR and MongoDB
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657using Chat.Models;using Microsoft.Extensions.Options;using MongoDB.Bson;using MongoDB.Bson.Serialization;using MongoDB.Bson.Serialization.Attributes;using MongoDB.Driver;
namespace Chat.DataService{ public class ChatService { private readonly IMongoCollection<Chatroom> _chatrooms;
public ChatService (IOptions<ChatDbSettings> settings) { var mongoClient = new MongoClient(settings.Value.ConnectionString);
var mongoDb = mongoClient.GetDatabase(settings.Value.DatabaseName);
_chatrooms = mongoDb.GetCollection<Chatroom>(settings.Value.ChatCollectionName); }
public async Task<List<Chatroom>> GetAllAsync () { return await _chatrooms.Find(_ => true).ToListAsync(); }
public async Task<Chatroom> GetByNameAsync(string name) { return await _chatrooms.Find(x => x.ChatroomName == name).FirstOrDefaultAsync(); }
public async Task CreateAsync(Chatroom newChatroom) => await _chatrooms.InsertOneAsync(newChatroom);
public async Task StoreMessage(string chatRoomName, Message message) { var filter = Builders<Chatroom>.Filter .Eq(chatroom => chatroom.ChatroomName, chatRoomName);
var update = Builders<Chatroom>.Update .Push(chatroom => chatroom.Messages, message);
await _chatrooms.UpdateOneAsync(filter, update, new UpdateOptions { IsUpsert = true }); } }
public class ChatRoomDTO { public string? Id { get; set; }
[BsonElement("chatroomName")] public string? ChatroomName { get; set; } }}