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

51 lines
1.8 KiB
C#

using ChatApi;
using ChatRAG.Models;
using ChatRAG.Settings.ChatRAG.Configuration;
using Microsoft.Extensions.Options;
using MongoDB.Bson;
using MongoDB.Driver;
namespace ChatRAG.Data
{
public class TextDataRepository
{
private readonly IMongoCollection<TextoComEmbedding> _textsCollection;
public TextDataRepository(
IOptions<VectorDatabaseSettings> vectorStoreDatabaseSettings)
{
var mongoClient = new MongoClient(
vectorStoreDatabaseSettings.Value.MongoDB.ConnectionString);
var mongoDatabase = mongoClient.GetDatabase(
vectorStoreDatabaseSettings.Value.MongoDB.DatabaseName);
_textsCollection = mongoDatabase.GetCollection<TextoComEmbedding>(
vectorStoreDatabaseSettings.Value.MongoDB.TextCollectionName);
}
public IMongoCollection<TextoComEmbedding> GetCollection()
{
return _textsCollection;
}
public async Task<List<TextoComEmbedding>> GetAsync() =>
await _textsCollection.Find(_ => true).ToListAsync();
public async Task<List<TextoComEmbedding>> GetByProjectIdAsync(string projectId) =>
await _textsCollection.Find(s => s.ProjetoId == projectId).ToListAsync();
public async Task<TextoComEmbedding?> GetAsync(string id) =>
await _textsCollection.Find(x => x.Id == id).FirstOrDefaultAsync();
public async Task CreateAsync(TextoComEmbedding newBook) =>
await _textsCollection.InsertOneAsync(newBook);
public async Task UpdateAsync(string id, TextoComEmbedding updatedBook) =>
await _textsCollection.ReplaceOneAsync(x => x.Id == id, updatedBook);
public async Task RemoveAsync(string id) =>
await _textsCollection.DeleteOneAsync(x => x.Id == id);
}
}