46 lines
1.9 KiB
C#
46 lines
1.9 KiB
C#
using ChatApi.Models;
|
|
using Microsoft.Extensions.Options;
|
|
using MongoDB.Driver;
|
|
|
|
namespace ChatApi
|
|
{
|
|
public class UserDataRepository
|
|
{
|
|
private readonly IMongoCollection<UserData> _userCollection;
|
|
|
|
public UserDataRepository(
|
|
IOptions<DomvsDatabaseSettings> bookStoreDatabaseSettings)
|
|
{
|
|
var mongoClient = new MongoClient(
|
|
bookStoreDatabaseSettings.Value.ConnectionString);
|
|
|
|
var mongoDatabase = mongoClient.GetDatabase(
|
|
bookStoreDatabaseSettings.Value.DatabaseName);
|
|
|
|
_userCollection = mongoDatabase.GetCollection<UserData>(
|
|
bookStoreDatabaseSettings.Value.UserDataName);
|
|
}
|
|
|
|
public async Task<List<UserData>> GetAsync() =>
|
|
await _userCollection.Find(_ => true).ToListAsync();
|
|
|
|
public async Task<UserData?> GeByTokentAsync(string token) =>
|
|
await _userCollection.Find(x => x.LastToken == token).FirstOrDefaultAsync();
|
|
public async Task<UserData?> GetAsync(string id) =>
|
|
await _userCollection.Find(x => x.Id == id).FirstOrDefaultAsync();
|
|
public async Task<UserData?> GetAsync(string name, string localId) =>
|
|
await _userCollection.Find(x => x.Name == name && x.LocalId == localId).FirstOrDefaultAsync();
|
|
public async Task<UserData?> 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);
|
|
}
|
|
}
|