47 lines
2.0 KiB
C#
47 lines
2.0 KiB
C#
using ChatApi.Models;
|
|
using ChatRAG.Settings.ChatRAG.Configuration;
|
|
using Microsoft.Extensions.Options;
|
|
using MongoDB.Driver;
|
|
|
|
namespace ChatApi
|
|
{
|
|
public class UserDataRepository
|
|
{
|
|
private readonly IMongoCollection<UserData> _userCollection;
|
|
|
|
public UserDataRepository(
|
|
IOptions<VectorDatabaseSettings> vectorStoreDatabaseSettings)
|
|
{
|
|
var mongoClient = new MongoClient(
|
|
vectorStoreDatabaseSettings.Value.MongoDB.ConnectionString);
|
|
|
|
var mongoDatabase = mongoClient.GetDatabase(
|
|
vectorStoreDatabaseSettings.Value.MongoDB.DatabaseName);
|
|
|
|
_userCollection = mongoDatabase.GetCollection<UserData>(
|
|
vectorStoreDatabaseSettings.Value.MongoDB.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);
|
|
}
|
|
}
|