ChatRAG/Data/UserDataRepository.cs
2025-06-15 23:03:45 -03:00

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);
}
}