using ChatApi.Models; using Microsoft.Extensions.Options; using MongoDB.Driver; namespace ChatApi { public class UserDataRepository { private readonly IMongoCollection _userCollection; public UserDataRepository( IOptions bookStoreDatabaseSettings) { var mongoClient = new MongoClient( bookStoreDatabaseSettings.Value.ConnectionString); var mongoDatabase = mongoClient.GetDatabase( bookStoreDatabaseSettings.Value.DatabaseName); _userCollection = mongoDatabase.GetCollection( bookStoreDatabaseSettings.Value.UserDataName); } public async Task> GetAsync() => await _userCollection.Find(_ => true).ToListAsync(); public async Task GeByTokentAsync(string token) => await _userCollection.Find(x => x.LastToken == token).FirstOrDefaultAsync(); public async Task GetAsync(string id) => await _userCollection.Find(x => x.Id == id).FirstOrDefaultAsync(); public async Task GetAsync(string name, string localId) => await _userCollection.Find(x => x.Name == name && x.LocalId == localId).FirstOrDefaultAsync(); public async Task GetAsync(string name, string localId, string secret) => await _userCollection.Find(x => x.Name == name && x.LocalId == localId && x.Secret == secret).FirstOrDefaultAsync(); public async Task CreateAsync(UserData newBook) => await _userCollection.InsertOneAsync(newBook); public async Task UpdateAsync(string id, UserData updatedBook) => await _userCollection.ReplaceOneAsync(x => x.Id == id, updatedBook); public async Task RemoveAsync(string id) => await _userCollection.DeleteOneAsync(x => x.Id == id); } }